出版時間:2010年6月 出版社:電子工業(yè)出版社 作者:林昊 頁數(shù):274
Tag標(biāo)簽:無
前言
軟件系統(tǒng)得到用戶認(rèn)可后,訪問量通常會產(chǎn)生爆發(fā)性的增長,互聯(lián)網(wǎng)網(wǎng)站,例如淘寶、豆瓣等更是如此。在不斷完善功能和多元化發(fā)展的同時,如何應(yīng)對不斷上漲的訪問量、數(shù)據(jù)量是互聯(lián)網(wǎng)應(yīng)用面臨的最大挑戰(zhàn)?! τ谟脩舳裕斯δ芤酝?,網(wǎng)站訪問夠不夠快,網(wǎng)站能否持續(xù)提供服務(wù),也是影響用戶訪問量的重要因素,因此如何保證網(wǎng)站的高性能,及高可用也是我們要關(guān)注的重點?! 榱酥尉薮蟮脑L問量和數(shù)據(jù)量,通常需要海量的機器,例如現(xiàn)在的google已經(jīng)擁有了百萬臺以上的機器,這些機器耗費了巨大的成本(硬件采購成本、機器的電力成本、網(wǎng)絡(luò)帶寬成本等)。網(wǎng)站規(guī)模越大,運維成本就越高,這意味著商業(yè)公司所能獲得的利潤越低,而通常這會導(dǎo)致商業(yè)公司必須從多種角度關(guān)注如何降低網(wǎng)站運維成本?! ”緯哪康氖菑囊陨蠋讉€問題出發(fā),介紹搭建高性能、高可用以及可伸縮的分布式Java應(yīng)用所需的關(guān)鍵技術(shù)。 目標(biāo)讀者 本書涵蓋了編寫高性能、高可用以及可伸縮的分布式.1ava應(yīng)用所需的知識點,適合希望掌握這些知識點的讀者?! ≡诮榻B各個知識點時,作者盡量結(jié)合自己的工作,分享經(jīng)驗與心得,希望能夠?qū)δ切┯邢嚓P(guān)工作經(jīng)驗的讀者有所幫助。
內(nèi)容概要
介紹分布式Java應(yīng)用涉及的知識點,分為基于Java實現(xiàn)網(wǎng)絡(luò)通信、RPC;基于SOA實現(xiàn)大型分布式Java應(yīng)用;編寫高性能Java應(yīng)用;構(gòu)建高可用、可伸縮的系統(tǒng)四個部分,共七章內(nèi)容。作者結(jié)合自己在淘寶網(wǎng)的實際工作經(jīng)驗展開論述,既可作供初學(xué)者學(xué)習(xí),也可供同行參考。
作者簡介
林昊,淘寶網(wǎng)架構(gòu)師China OSGi User Group Director。2006年開始在商業(yè)產(chǎn)品中使用OSGi,并結(jié)合自己的經(jīng)驗編寫了《OSGi實踐》、《OSGi進階》兩篇0pendoc以及《OSGi原理與最佳實踐》一書,推動了OSGi在國內(nèi)的使用。2007年進入淘寶,負(fù)責(zé)淘寶服務(wù)框架的開發(fā),此框架目前每天承擔(dān)了100億以上的服務(wù)請求量。個人關(guān)注的方向為模塊化、動態(tài)化Java系統(tǒng),以及高性能、高可用、低成本的大型分布式Java系統(tǒng)的構(gòu)建。
書籍目錄
前言第1章 分布式Java應(yīng)用1.1 基于消息方式實現(xiàn)系統(tǒng)間的通信1.1.1 基于Java自身技術(shù)實現(xiàn)消息方式的系統(tǒng)間通信1.1.2 基于開源框架實現(xiàn)消息方式的系統(tǒng)間通信1.2 基于遠程調(diào)用方式實現(xiàn)系統(tǒng)間的通信1.2.1 基于Java自身技術(shù)實現(xiàn)遠程調(diào)用方式的系統(tǒng)間通信1.2.2 基于開源框架實現(xiàn)遠程調(diào)用方式的系統(tǒng)間通信第2章 大型分布式Java應(yīng)用與SOA2.1 基于SCA實現(xiàn)SOA平臺2.2 基于ESB實現(xiàn)SOA平臺2.3 基于Tuscany實現(xiàn)SOA平臺2.4 基于Mule實現(xiàn)SOA平臺第3章 深入理解JVM3.1 Java代碼的執(zhí)行機制3.1.1 Java源碼編譯機制3.1.2 類加載機制3.1.3 類執(zhí)行機制3.2 JVM內(nèi)存管理3.2.1 內(nèi)存空間3.2.2 內(nèi)存分配3.2.3 內(nèi)存回收3.2.4 JVM內(nèi)存狀況查看方法和分析工具3.3 JVM線程資源同步及交互機制3.3.1 線程資源同步機制3.3.2 線程交互機制3.3.3 線程狀態(tài)及分析第4章 分布式Java應(yīng)用與Sun JDK類庫4.1 集合包4.1.1 ArrayList4.1.2 LinkedList4.1.3 Vector4.1.4 Stack4.1.5 HashSet4.1.6 TreeSet4.1.7 HashMap4.1.8 TreeMap4.1.9 性能測試4.1.1 0小結(jié)4.2 并發(fā)包(java.util.concurrent)4.2.1 ConcurrentHashMap4.2.2 CopyOnWriteArrayList4.2.3 CopyOnWriteArraySet4.2.4 ArrayBlockingQueue4.2.5 AtomicInteger4.2.6 ThreadPoolExecutor4.2.7 Executors4.2.8 FutureTask4.2.9 Semaphore4.2.10 CountDownLatch4.2.11 CyclicBarrier4.2.12 ReentrantLock4.2.13 Condition4.2.14 ReentrantReadWriteLock4.3 序列化/反序列化4.3.1 序列化4.3.2 反序列化第5章 性能調(diào)優(yōu)5.1 尋找性能瓶頸5.1.1 CPU消耗分析5.1.2 文件IO消耗分析5.1.3 網(wǎng)絡(luò)IO消耗分析5.1.4 內(nèi)存消耗分析5.1.5 程序執(zhí)行慢原因分析5.2 調(diào)優(yōu)5.2.1 JVM調(diào)優(yōu)5.2.2 程序調(diào)優(yōu)5.2.3 對于資源消耗不多,但程序執(zhí)行慢的情況第6章 構(gòu)建高可用的系統(tǒng)6.1 避免系統(tǒng)中出現(xiàn)單點6.1.1 負(fù)載均衡技術(shù)6.1.2 熱備6.2 提高應(yīng)用自身的可用性6.2.1 盡可能地避免故障6.2.2 及時發(fā)現(xiàn)故障6.2.3 及時處理故障6.2.4 訪問量及數(shù)據(jù)量不斷上漲的應(yīng)對策略第7章 構(gòu)建可伸縮的系統(tǒng)7.1 垂直伸縮7.1.1 支撐高訪問量7.1.2 支撐大數(shù)據(jù)量7.1.3 提升計算能力7.2 水平伸縮7.2.1 支撐高訪問量7.2.2 支撐大數(shù)據(jù)量7.2.3 提升計算能力
章節(jié)摘錄
第1章 分布式Java應(yīng)用 大型應(yīng)用通常會拆分為多個子系統(tǒng)來實現(xiàn),對于Java來說,這些子系統(tǒng)可能部署在同一臺機器的多個不同的JVM中,也可能部署在不同的機器上,但這些子系統(tǒng)又不是完全獨立的,要相互通信來共同實現(xiàn)業(yè)務(wù)功能,對于此類Java應(yīng)用,我們稱之為分布式Java應(yīng)用。 Martin Fowler在《企業(yè)應(yīng)用架構(gòu)模式》一書中曾經(jīng)說過:“能不用分布式的情況下就不要用分布式”,當(dāng)應(yīng)用變?yōu)榉植际絁ava應(yīng)用時,會很大程度地增加應(yīng)用實現(xiàn)的技術(shù)復(fù)雜度,對于分布式Java應(yīng)用,通常有兩種典型的方法來實現(xiàn)?! ?.基于消息方式實現(xiàn)系統(tǒng)間的通信 當(dāng)系統(tǒng)之間要通信時,就向外發(fā)送消息,消息可以是字節(jié)流、字節(jié)數(shù)組,甚至是Java對象,其他系統(tǒng)接收到消息后則進行相應(yīng)的業(yè)務(wù)處理?! ∠⒎绞降南到y(tǒng)間通信,通?;诰W(wǎng)絡(luò)協(xié)議來實現(xiàn),常用的實現(xiàn)系統(tǒng)間通信的協(xié)議有:TCP/IP和UDP/IP。 TCP/IP是一種可靠的網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)膮f(xié)議。TCP/IP要求通信雙方首先建立連接,之后再進行數(shù)據(jù)的傳輸。TCP/IP負(fù)責(zé)保證數(shù)據(jù)傳輸?shù)目煽啃?,包括?shù)據(jù)的可到達、數(shù)據(jù)到達的順序等,但由于TCP/IP需要保證連接及數(shù)據(jù)傳輸?shù)目煽?,因此可能會犧牲一些性能?! DP/IP是一種不保證數(shù)據(jù)一定到達的網(wǎng)絡(luò)數(shù)據(jù)傳輸協(xié)議。UDP/IP并不直接給通信的雙方建立連接,而是發(fā)送到網(wǎng)絡(luò)上進行傳遞。由于UDP/IP不建立連接,并且不能保證數(shù)據(jù)傳輸?shù)目煽?,因此性能上表現(xiàn)相對較好,但可能會出現(xiàn)數(shù)據(jù)丟失以及數(shù)據(jù)亂序的現(xiàn)象。
媒體關(guān)注與評論
林昊總結(jié)了在淘寶進行大規(guī)模Java應(yīng)用的經(jīng)驗,嘔心瀝血寫出的這本書既有理論深度,叉具有極強的實戰(zhàn)指導(dǎo)意義,升級指南,不得不讀?! 碎g網(wǎng)創(chuàng)始人,CTO 曹曉鋼 在概念滿天飛的浮躁時代,林昊以樸實的文字和扎實的基礎(chǔ),由淺入深介紹分布式應(yīng)用設(shè)計開發(fā)的架構(gòu)和技術(shù)細(xì)節(jié)?在豆瓣正向SOA轉(zhuǎn)型的節(jié)骨眼兒得到這樣一本書,真是恰逢甘霖。 ——豆瓣架構(gòu)師 洪強寧 本書不僅深入分析了大規(guī)模Java系統(tǒng)間通訊、SOA架構(gòu)、集群、可伸縮和高可用性系統(tǒng),還有難得一見的JVM內(nèi)幕分析和對CPU、IO、內(nèi)存的性能調(diào)優(yōu)實踐,對開發(fā)高性能系統(tǒng)相當(dāng)有幫助?! 押こ處?鄧正平 本書詳述了構(gòu)建大型分布式Java應(yīng)用的相關(guān)知識與應(yīng)用場景,使用大量代碼進行實例分析,對構(gòu)建高可用系統(tǒng)幫助很大,遺憾的是對系統(tǒng)架構(gòu)集成等方面的影響未做更深入的討論?! W(wǎng)易杭州研究院工程師 堯飄?! ≡诨ヂ?lián)網(wǎng)領(lǐng)域,性能調(diào)優(yōu)、分布式、高可用、可伸縮等總是困擾著大家,少有高手分享實戰(zhàn)經(jīng)驗,一書難求。這本書系統(tǒng)分析了上述典型問題,并給出了多種解決方案和擴展閱讀,著實讓我過了一把癮。期待著林昊今后還能在系統(tǒng)層面和原理層面做更深入的分享?! 袊苿訑?shù)據(jù)業(yè)務(wù)運營中心門戶技術(shù)部經(jīng)理 朱巖 國內(nèi)大部分Java工程師了解的知識面都偏向于SSH、MVVC框架等,精通高訪問量托并發(fā)應(yīng)用的Java技術(shù)人員奇缺。本書講到的構(gòu)建可伸縮系統(tǒng)章節(jié)非常實用,不少方法我們也正在使用。書中對性能調(diào)優(yōu)的介紹也非常專業(yè)和深入,對于大型系統(tǒng)的調(diào)優(yōu)具有極大的參考價值?! 吕思軜?gòu)師 楊衛(wèi)華 對于大型分布式應(yīng)用和性能,很多書或陷入細(xì)節(jié),或流于空談,本書則把細(xì)節(jié)、架構(gòu)、底層、應(yīng)用平衡得很好,技術(shù)功底之外,更有寫作的誠意、,若語言能更生動一些,可讀性會更好?! 鹩芽萍迹ㄔ糜衍浖こ坦荆㊣T應(yīng)用研究院副院長 池建強 Java類圖書,汗牛充棟,有關(guān)分布式高可用系統(tǒng)架的書卻很稀少,本書填補了這方面的空白。即便是非Java類開發(fā)者,也能從中學(xué)到大型分布式高可用系統(tǒng)的設(shè)計方法和思路?! 虾J⒋缶W(wǎng)絡(luò)發(fā)展有限公司 技術(shù)保障中心總監(jiān)資深研究員 陳桂新 對每一個新的知識點,作者都列出了很多鏈接,供讀者進一步學(xué)習(xí)。期待這本書讓更多人受益?! 虾ZA思軟件技術(shù)有限公司資深系統(tǒng)/網(wǎng)絡(luò)安全架構(gòu)師 陳成才
編輯推薦
8年技術(shù)生涯,讓自已感觸最深的是視野以及專業(yè)的重妻?!≡诿媾R問題時,開闊的視野就像是一本書的目錄,提供了方向的指導(dǎo):專業(yè)則代表了在一個或多個領(lǐng)域杰出的解決問題的能力。這些能力一方面需要建立在開闊的視野基礎(chǔ)上。另一方面則需要建立在不浪費自己工作環(huán)境的基礎(chǔ)上?! ¢_闊的視野可以讓自己看到更多好的經(jīng)驗、知識,但在沒有實踐之前這些終歸都只是理論。結(jié)合自己的興趣點。將對自己工作有益、同時對公司有益的經(jīng)驗、知識結(jié)合到實際的工作環(huán)境中,讓自己的成長與公司的成長同步。才能真正擁有這些知識和經(jīng)驗,讓自己在某些領(lǐng)域具備更為突出的能力,在專業(yè)上“有自己的地盤兒”。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載