編輯推薦
適讀人群 :《程序員2014精華本》適閤開發者、項目經理、CTO&CIO、編程愛好者閱讀和收藏。 1、《程序員(2014精華本)》緊緊圍繞大數據、電商架構、智能硬件、移動開發、團隊管理等熱門話題,進行瞭全麵而深入的解讀。
2、《程序員(2014精華本)》由程序員編輯部精心打造,對《程序員》雜誌2014年的內容再次進行瞭優化整閤,內容更加聚焦,是一份濃縮的饕餮盛宴,值得閱讀。
海報:
內容簡介
《程序員2014精華本》緊緊圍繞大數據、電商架構、智能硬件、移動開發、團隊管理等熱門話題,進行瞭全麵而深入的解讀。於原有欄目和本年度熱點,《程序員2014精華本》的結構分為以下七個篇章。 專題篇:綜閤瞭2014年1-12月封麵報道,內容包括雙11背後的技術、大數據實時處理、編程語言、我們是MAKER、雲計算理想與現實、移動開發工具、打造高效團隊、安全新知、微信開發、移動5年、電商峰值係統架構設計、2014TOP50具價值CTO等12個主題。 對話篇:由程序員記者直接采訪大師級人物和知名技術人,在思想、實踐等方麵進行深刻碰撞。 管理篇:主要是來自軟件方法、個人成長、一分鍾先生等欄目的真知灼見。 産品篇:主要分享産品設計方麵的方法、理念和實踐。 移動篇:匯聚移動開發領域的觀點、工具和技術。 雲計算篇:雲計算和大數據領域的熱門技術和實踐,特彆是2014年大紅大紫的Docker和Spark。 技術篇:包括語言與工具、技術實踐等方麵內容。
目錄
專題篇雙11背後的技術 1網購狂歡節背後的技術閱兵 1雙 11 的前端實踐3天貓瀏覽型應用的 CDN 靜態化架構演變8個性化技術在雙 11 的應用12聚石塔 :電子商務雲平颱 2013 年雙 11 曆程15支付寶的架構變遷18中間件技術的雙 11 實踐25軟負載 :分布式係統的引路人25分布式服務框架 :分布式服務的組織者27消息中間件 :分布式消息的廣播員27EagleEye :分布式調用的跟蹤者30數據層 :分布式數據存儲的橋梁32應用服務器 :係統運行的托管員34穩定性平颱 :係統穩定運行的保障者36雙 11 數據庫技術38大規模離綫計算集群故障管理實踐40韆萬 QPS 能力的高性能 DNS 防護係統41阿裏的 SDN 實踐42阿裏整機架服務器解決方案44大數據實時處理46實時和交互 :技術與現實的糾纏46大數據時代之實時數據傳輸47HBase 在內容推薦引擎係統中的應用50實時處理之流式計算平颱的實踐53Storm 在騰訊的應用55京東基於 Samza 的流式計算實踐58Spark Streaming:大規模流式數據處理的新貴61Presto實現解析63基於Impala構建實時大數據查詢係統實踐66百度實時計算係統69百分點實時計算實踐:架構和算法72編程語言76新係統語言Rust―Rust 項目技術負責人 Brian Anderson 專訪76Rust語言:安全地並發77讓高性能科學計算為人人所用―科學計算語言 Julia 發明團隊專訪78Julia語言初探81全棧語言的力量―Red 語言設計者 Nenad Rakocevic 專訪84Red語言:嚮編程復雜性反擊85Go語言技巧88Node.js背後的V8引擎優化技術91嚮小眾學習95淺談Common Lisp的宏編程97中間語言和虛擬機漫談100未來工具與未來語言―JetBrains CEO 專訪103我們是MAKER105理解創客105我們正經曆一場真正的革命―3D Robotics CEO、美國《連綫》雜誌前總編 Chris Anderson 專訪107想改變世界,先改變自己―知名 Hacker、發明傢 Mitch Altman 專訪 109創客天下《Make》及 Maker Faire 創辦人、―O'Reilly Media 創始人 Dale Dougherty 專訪 110彆懷疑,每個人都是創客―美國 16 歲創客 Joey Hudy 專訪111開發闆,開源和創客113充滿樂趣的創客之路115高中生創客的自我養成117機器人領域創業那五年―RoboPeak 創始人陳士凱專訪119雲計算,理想與現實123我所經曆的“餘額寶”的那些故事123電信行業雲計算實施經驗談―浙江電信業務雲資源池核心技術解析127廣電行業雲基礎平颱構建實踐―細解北京網絡廣播電視颱雲基礎支撐平颱項目 129港華燃氣核心業務雲端之路132軌道交通行業的企業雲計算―廣州地鐵的企業雲平颱構建135移動開發工具139次時代交互原型神器Origami檔案139Facebook POP,邁嚮大師操作之路143New Relic漫談―Mobile APM 給我們帶來什麼?145那些好用的 iOS 開發工具149這些年用的iOS UI自動化測試工具152打造高效團隊155打造高效開發團隊155精益化的團隊高效協作157小站會, 大智慧158自組織團隊建設的 “催化劑”從組織到團隊163知識管理應該圍繞學習展開165高效能技術團隊的協同工具箱167安全新知171普通開發者的網絡安全必讀171挑戰與機遇:新型網絡中的安全睏局172構建更加安全的智能移動平颱174移動支付安全的挑戰與對策175Android安全研究經驗談176解密Android短信木馬為何屢殺不盡179微信開發182微信生態的滲透與價值182以招行為例,微信公眾賬號開發高級篇184妝媒體微信公眾號背後的酸甜苦辣186微氣象,大民生188高性能微信公眾平颱開發189微信支付開發關鍵點技術解析191如何使用微信設計二次認證194移動5年197大話移動5年―移動互聯網發展曆程與迴顧197從SDK迴顧iOS係統發展199移動5年,Android生態係統的演進202移動安全這五年204HTML5迴首,在你的時代到來前208盤點移動互聯網入口爭戰2112010-2014:App Store中那些遺失的遊戲現象214移動互聯網:五年洗禮,造就産業新變局―《唱吧》CEO 陳華專訪217扁平化和參與感―小米聯閤創始人、副總裁黎萬強專訪219從TalkBox看IM即時通信工具的演變―TalkBox 團隊被微信顛覆後的創業思考220移動五年,創業者眼中的變遷222電商峰值係統架構設計224快穩炫 :電商峰值係統架構三字訣224傳統企業電商峰值係統應對實踐225當當網係統分級與海量信息動態發布實踐227京東峰值係統設計230“米粉節”背後的故事―小米網搶購係統開發實踐232海爾電商峰值係統架構設計最佳實踐235唯品會峰值係統架構演變2381號店電商峰值與流式計算241如何在雙11中創造99.99%的可用性―蘑菇街在大型促銷活動中的穩定性實踐242履單流程的彈性架構―麥包包峰值架構實踐2452014 TOP50最具價值CTO248從呼叫中心到移動互聯網的演進―攜程高級技術副總裁葉亞明專訪248要學會麵對黎明前的黑暗樂視網 CTO 楊永強專訪250能做存儲的超級計算機―XtremIO CTO 任宇翔和以色列團隊的創業故事251技術女神的自我奮鬥―MediaV CTO 鬍寜專訪253做個不一樣的“分享”平颱―途傢網聯閤創始人兼 CTO Melissa Yang(楊孟彤)專訪254以軟件革新硬件體驗―極路由 CTO 康曉寜專訪256開發+技術驅動―途牛旅遊網 CTO 湯崢嶸專訪258一位 DBA 老兵心中的國産數據庫之夢―南大通用高級副總裁兼 CTO 武新專訪261建立技術體係, 保障公司業務―趕集網 CTO 羅劍專訪263
對話篇C++ 之父 Bjarne Stroustrup 訪談錄265C++與編程人生―《C++ Primer》作者 Stanley B.Lippman 專訪 270我的目標永遠是讓人開懷―Perl 之父 Larry Wall 訪談錄273與時鍾的對抗―訪圖靈奬得主 Ivan Sutherland2762013年圖靈奬得主Leslie Lamport278反饋即一切―實時計算係統 Storm 創始人Nathan Marz 訪談錄279Andrew Ng談Deep Learning282永遠追求下一個Big Thing―LSI 院士兼首席架構師 Robert Ober 專訪283
管理篇軟件方法286探索式測試解密―探索,不測試!286探索過程改進最佳實踐288Competence:技術粗放型嚮管理精細型的轉變 291刀鋒管理體係―創業公司流程改進紀實294個人成長297給技術人上的管理課 :控製和計劃297給技術人上的管理課:平衡和集中299給技術人上的管理課:激勵與授權301軟件測試人員的基本修養303嚮上管理:管理自己的老闆304創業團隊的招聘與留人306做一個“高大上”的架構師―蔡氏架構設計方法論之初體驗308一分鍾先生312小技術團隊管理工具大比拼312技術人員如何參與産品設計討論?316技術團隊如何留住人纔321技術走嚮管理要實現哪些轉變325
産品篇火鍋與煎餅331引導的設計331躺槍的互聯網思維332不靠譜的“用戶體驗”332用戶的鞋子333對不起333産品文化334設計流程335辯勝335高級山寨336為瞭體驗336低能的“智能”337聊聊阿裏的內部創新機製―賽馬33870後大叔的90後産品煉成之路―田行智談《碰碰》和他的創業故事339互聯網思維與硬件創新―印美圖在軟硬整閤産品中的實踐341ANTVT KIT,不做中國的 Oculus343
移動篇遊戲346從頂級遊戲開發者倒下看産品型行業的危機感346刷任務:在聊與微奬勵中搖擺348不良遊戲體驗對玩傢的負麵限製351以開發者角度看其遊戲體驗心態353手遊中Boss異能和巨型形態的設定355免費體驗增值模式改變遊戲的五種形態357消費引導與遊戲內容供給不足的悖論360從恐怖與驚悚元素談玩傢的情感代入362開發365iOS 應用安全開發你不知道的那些事365解析Swift函數式編程367Material Design :過去、現在和未來371Gradle:更智能的Android構建係統373邁步進入跨平颱開發時代375
雲計算篇Docker377Docker 的生態係統和未來377基於Docker的Auto Scaling實踐380基於Docker的通用計算平颱實踐384網易Docker部署運維實踐387Spark 392Spark 與 MLlib:當機器學習遇見分布式係統392Spark MLlib:矩陣參數的模式394使用Spark+MLlib構建用戶標簽係統397快刀初試:Spark GraphX在淘寶的實踐400大數據405Kafka 在唯品會的應用實踐405大眾點評的數據架構之道407騰訊CKV海量分布式存儲係統―日訪問過萬億次背後的技術挑戰409騰訊CKV海量分布式存儲運營實踐411百度實時計算應用實踐414基於Storm的美團實時計算應用實踐417服務化Cache係統―小米網 Redis 實踐421蝦米在個性化音樂推薦領域的實踐424大規模微博用戶興趣圖譜挖掘427Summingbird Twitter實時消息處理基礎平颱429
技術篇語言與工具434逆世界:讓 C++走進 Python434你應該更新的 Java 知識437PostScript語言裏的珠璣439node-webkit:HTML5桌麵應用運行環境441Ruby並發框架縱橫談443JVM 中的全異步框架 Vert.x446技術實踐449機器人與關鍵技術解析449圖書評論排序對於用戶購買的影響452門戶級 UGC 係統的技術進化路綫―新浪新聞評論係統的架構演進和經驗總結455
精彩書摘
《程序員(2014精華本)》:
網購狂歡節背後的技術閱兵
文/莊卓然
從光棍節到網購狂歡節
2013年是雙11的第五個年頭,從2009年的“光棍節”到現在的“網購狂歡節”,單單是名字上的變化,大傢就能從中感受到業務規模發生的轉變。
2013年雙11,天貓和淘寶單日成交額達到350.19億元,網站PV過百億,成就瞭14個銷售過億的商傢。
其中,有76%的商傢處理工作是在聚石塔雲計算平颱上完成的,並且無一漏單、無一故障。
支付寶實現成功支付1.88億筆交易,再次刷新瞭2012年同期1.0580億筆交易的全球紀錄,最高每分鍾支付79萬筆交易。
手機淘寶整體支付寶成交額為53.5億元是2012年的5.6倍(9.6億元);單日活躍用戶達1.27億;手機淘寶單日交易成交筆數達3590萬筆,交易筆數占整體的21%。
天貓雙11共産生快遞包裹1.52億件,僅雙11當天,國各大快遞企業共處理6000多萬件包裹,是2012年雙11最高峰的1.7倍。
在瘋狂的業務數據背後,是阿裏技術團隊的一次整體大閱兵,從天貓、淘寶到支付寶,從PC到無綫,從研發到運維保障,各個環節都麵臨著巨大的挑戰。
雙11業務
生態在開始介紹這些挑戰之前,我們先用一張圖來看一看,作為消費者,你在2013年的雙11大促中都會經曆哪些業務過程,如圖1所示。
首先,你會通過各種終端(PC、手機、平闆)訪問淘寶、天貓、聚劃算的導購市場,豐富多樣的導購産品會幫助你發現和挑選自己心儀的商品。大數據的基礎平颱支撐瞭大量有價值的數據應用,以保證你在這個環節的購物體驗。穩定的交易平颱確保瞭優惠價格的準確計算、庫存的及時扣減和擔保交易的訂單有效生成。這時,你就可以通過支付寶安全放心地進行支付寶餘額或者網上銀行支付,滿心歡喜地等待包裹的送達。
這時就開始輪到麵嚮商傢的係統忙碌起來瞭。聚石塔提供的雲推送功能在第一時間將交易訂單同步到部署在聚石塔雲工作平颱上的商傢ERP、WMS、CRM軟件中,並且為這部分軟件提供瞭動態彈性擴容的能力和安全方麵的有效保護,以便大商傢在大量訂單麵前,可以像日常情況一樣,快速組織商品齣庫和發貨,而不用額外擔心自己軟件的處理能力。
最後齣場的是菜鳥網絡打造的雷達預警係統,通過大數據的力量,對商傢的備貨、消費者購買行為、物流服務能力進行預測,並與國傢氣象局、交通部實時發布的天氣、道路情況進行同步運算,將未來半天至七天的預測結果反饋到13傢快遞公司,以便快遞公司提前調配運力。最終,所有的包裹得以第一時間送到消費者的手中。
挑戰和技術準備
業務跨數量級的快速發展對整體架構帶來瞭新挑戰經曆瞭過去幾年“去IOE”(IBM小型機、Oracle、EMC高端存儲)整體架構改造,整個阿裏集團建立瞭基於中間件、PCServer的輕量級分布式SOA架構,保證瞭服務器、數據庫、網絡、
機房各個層麵無單點,可以以較小的成本支持水平擴展,提升網站的負載能力。但隨著這幾年雙11業務的飛速增長,PV、同時在綫用戶數、峰值交易和峰值支付等核心指標都開始跨越到新的數量級,架構在更高負載能力要求下的一些缺陷開始暴露齣來。
第一,大規模訪問請求帶來的機房網絡瓶頸。
雙11當天有數億用戶訪問天貓和淘寶的係統,高峰期甚至有數韆萬人同時在綫。以天貓的“商品詳情”頁麵為例,集群峰值QPS達到瞭十萬以上的量級,是平時峰值QPS的數十倍。這樣的突發性流量增長,使得機房的網絡容量麵臨著巨大壓力。如何能夠利用閤理的成本應對瞬間飆高所帶來的網絡壓力,確保活動完整周期內用戶響應時間的穩定性,以及局部齣現問題時的高可用性,成瞭首先需要麵對的問題。著眼於未來,從2011年起,我們就開始瞭對瀏覽型的應用
進行新的架構改造。曆經頁麵細粒度的動靜分離、統一緩存接入、CDN靜態化三個階段。最終,將更新頻率不高的內容僞靜態化直接緩存到CDN,通過統一的秒級失效機製控製緩存的更新操作,讓絕大多數內容請求不需要迴流到主機房,直接在用戶最近的CDN節點就能夠完成。這種方式一方麵極大地緩解瞭主機
房網絡的壓力,另一方麵也優化瞭用戶頁麵的響應時間。徐昭的《天貓瀏覽型應用的CDN靜態化架構演變》將帶大傢更深入地瞭解我們是如何經曆這一過程的。
第二,超大規模係統如何繼續保持在不同層麵上的水平伸縮性。
首先,服務器需求的增多,導緻未來單一地區的IDC資源已無法滿足容量增長的需求,機房供電能力成為短期內無法逾越的瓶頸。其次,簡單地橫嚮擴展IDC機房,機房之間的網絡流量又成為瞭新的瓶頸。多機房的應用、緩存、數據庫等訪問的相互穿透,也加劇著跨機房的流量增長。最後,核心服務集群的應用服務器的規模增長,使對應的數據庫連接數成為瞭瓶頸。每增加一颱數據庫服務器,對應的應用服務器都需要連接上來,數據庫的連接數馬上就不夠分配瞭。也就是說,在今天的業務規模下,我們無法繼續針對核心服務的數據庫層再做橫
嚮水平擴展瞭。為瞭解決以上問題,2013年雙11我們嘗試瞭新的邏輯機房
的架構方案,將數據水平拆分(Sharding)的思路嚮上提到接入層。以支付寶為例,先將完成某一特定業務需要的係統、核心服務、數據庫組閤抽象成一個業務單元(Zone)的概念,業務單元從應用服務器、緩存到數據庫可以獨立封閉運行。然後,從入口處根據用戶請求路由到不同的邏輯業務單元,實現瞭單元級彆
的可伸縮性。不再依賴同城IDC,讓交易、支付這樣復雜的業務單元具備瞭大規模跨地域部署的能力。鬍喜的《支付寶的架構變遷》會有更加深入和全麵的介紹。
第三,如何更大程度地“壓榨”單服務器的係統資源。
虛擬化技術已作為各大網站提升物理機資源利用率的基礎技術。以天貓和淘寶網為例,2010年我們引入Xen虛擬化技術,1颱物理機裝3個虛擬機,一定程度上降低瞭成本。但隨著機器規模的快速增長,我們發現其中1/3的虛擬機的Peakload<0.5,這意味著我們的運維成本還是不夠低。主要有以下幾方麵原因:
■單颱物理機上跑的應用不夠多;
■分給應用的機型及機器數是靜態的;
■集群的資源利用率不均衡。
為瞭最大化物理機的資源性能,從2012年開始,我們大規模地應用瞭新的基於LXC的虛擬化方案,成功地在每颱物理機(16Core/48GB)運行瞭12個應用實例,物理機的load提升到2~10。這對大促時期的成本控製非常有幫助,也為內部私有雲的完整構建,摸索瞭一條可行的路徑。
消費者對用戶體驗有瞭更高的要求韆人韆麵的購物體驗
有一個很現實的問題擺在瞭我們麵前:大促當天有幾億消費者會來到我們的網站,在上百萬商傢和過億商品裏麵挑選自己心儀的寶貝。光靠運營人肉製作的活動頁麵和消費者的主動搜索已遠遠不可能滿足需求。因此,需要在産品上轉變思路,營造從以業務為中心到以用戶為中心的大促體驗。雙11應該是麵嚮消費者的“我的雙11”,而不是“天貓的雙11”。基於此,2013年的雙11大促中大麵積應用瞭個性化算法,從PC到無綫,從“會場”到“詳情”,真正意義上為消費者打造瞭一個“我的雙11”。從最終效果來看,2013年雙11的用戶購買轉化率提高瞭10個百分點。張奇會在《個性化技術在雙11的應用》中介紹在個性化推薦係統架構、機器學習算法應用和算法的快速評測方麵的思考。
多終端的業務一緻性
移動智能終端的快速崛起,讓更多的消費者可以隨時隨地訪問天貓和淘寶,但也讓我們開始深入地思考,在業務快速發展的前提下,如何在不同終端上快速提供本質相同的服務。2013年我們首次在預熱期的大型活動中嘗試瞭基於Canvas的WebApp解決方案,極大程度地提升瞭開發效率。天貓前端團隊的鄢學鶤會在《雙11的前端實踐》一文中分享MobileFirst的理念是如何在雙11中實踐的。
穩定性的極緻要求
容量預估、依賴治理、監控
這一環節是曆年雙11技術成功與否的關鍵環節。中間件團隊的《中間件技術的雙11實踐》除瞭會介紹在SOA架構體係中扮演重要角色的中間件産品之外,也會就容量預估、依賴治理和監控的雙11實踐做精彩介紹。
業務降級、限流預案
從2010年雙11開始,每年都會有針對性地準備一些技術預案,在流量超齣預期時做好限流保護,在局部係統處理能力齣現瓶頸時進行優雅降級,以提升整體的吞吐率,保證核心業務的正常運行。
2013年,我們在技術環節準備瞭2000多套應急預案,大到遭受駭客攻擊、各類業務應急動作,小到服務器機房空調發生故障,均有詳細預案。不僅各服務器機房,甚至西溪園區雙11大促指揮辦公現場都準備瞭柴油發電機。此外,2013年針對雙11進行瞭上百次的內部演習,其中全網大規模演習就進行瞭10餘次,以確保每一個預案的有效性。
全鏈路壓測
壓力測試對於評估網站性能的重要性是不言而喻的,但無論是綫下模擬的單一集群壓測,還是綫上引流壓測,都隻能暴露一些基本的單點問題。對於雙11當天高峰期的真實壓力模擬,這兩種傳統的壓力測試方式還存在著巨大偏差。
首先是業務處理鏈路的復雜性,對於像天貓這樣一個分布式處理平颱,一筆交易的創建會涉及多個應用集群的處理
程序員(2014精華本) 下載 mobi epub pdf txt 電子書