《大型分布式網(wǎng)站架構(gòu)設(shè)計(jì)與實(shí)踐》主要介紹了大型分布式網(wǎng)站架構(gòu)所涉及的一些技術(shù)細(xì)節(jié),包括SOA架構(gòu)的實(shí)現(xiàn)、互聯(lián)網(wǎng)安全架構(gòu)、構(gòu)建分布式網(wǎng)站所依賴的基礎(chǔ)設(shè)施、系統(tǒng)穩(wěn)定性保障和海量數(shù)據(jù)分析等內(nèi)容;深入地講述了大型分布式網(wǎng)站架構(gòu)設(shè)計(jì)的核心原理,并通過一些架構(gòu)設(shè)計(jì)的典型案例,幫助讀者了解大型分布式網(wǎng)站設(shè)計(jì)的一些常見場(chǎng)景及遇到的問題。
作者結(jié)合自己在及網(wǎng)的實(shí)際工作經(jīng)歷展開論述。《大型分布式網(wǎng)站架構(gòu)設(shè)計(jì)與實(shí)踐》既可供初學(xué)者學(xué)習(xí),幫助讀者了解大型分布式網(wǎng)站的架構(gòu),以及解決問題的思路和方法,也可供業(yè)界同行參考,給日常工作帶來啟發(fā)。
《大型分布式網(wǎng)站架構(gòu)設(shè)計(jì)與實(shí)踐》看點(diǎn):
作者一直奮戰(zhàn)在Ali baba及Tao bao網(wǎng)一線,書中所講是其親身經(jīng)驗(yàn)的總結(jié),顯得更加實(shí)戰(zhàn)和珍貴。
介紹大型分布式網(wǎng)站架構(gòu)所涉及的技術(shù)細(xì)節(jié),通過很多實(shí)踐案例盡量讓每一個(gè)關(guān)鍵的技術(shù)點(diǎn)都落到實(shí)處。
深入講述大型分布式網(wǎng)站架構(gòu)設(shè)計(jì)的核心原理,分享大型分布式網(wǎng)站設(shè)計(jì)的一些常見場(chǎng)景及遇到的問題。
推薦購買:
《技術(shù)管理之巔——如何從零打造高質(zhì)效互聯(lián)網(wǎng)技術(shù)團(tuán)隊(duì)》
《玩轉(zhuǎn)電商系統(tǒng):深入剖析智慧電商平臺(tái)》
《微管理——給你一個(gè)技術(shù)團(tuán)隊(duì),你該怎么管(全彩)》
《網(wǎng)站運(yùn)維技術(shù)與實(shí)踐》
《Linux運(yùn)維之道》
陳康賢,花名龍隆,技術(shù)部研發(fā)工程師,2011年加入網(wǎng),參與了阿里云手機(jī)商城、口碑網(wǎng)遷移、店鋪建站、offer、支付寶卡寶、生活商城、同學(xué)等項(xiàng)目,在分布式系統(tǒng)架構(gòu)設(shè)計(jì)、高并發(fā)系統(tǒng)設(shè)計(jì)、系統(tǒng)穩(wěn)定性保障等領(lǐng)域積累了較為豐富的實(shí)踐經(jīng)驗(yàn)。曾在程序員上發(fā)表過《漫談基于http協(xié)議的SOA架構(gòu)》《淺析HTTP平臺(tái)的安全穩(wěn)定性架構(gòu)》兩篇文章,對(duì)基于HTTP協(xié)議的SOA架構(gòu)有深入研究,在排查解決線上問題和故障方面有豐富的實(shí)踐經(jīng)驗(yàn),擅于利用數(shù)據(jù)分析解決實(shí)際問題,對(duì)新技術(shù)有濃厚的興趣。
第1章面向服務(wù)的體系架構(gòu)(SOA) 1
1.1基于TCP協(xié)議的RPC 3
1.1.1RPC名詞解釋 3
1.1.2對(duì)象的序列化 4
1.1.3基于TCP協(xié)議實(shí)現(xiàn)RPC 6
1.2基于HTTP協(xié)議的RPC 9
1.2.1HTTP協(xié)議棧 9
1.2.2HTTP請(qǐng)求與響應(yīng) 15
1.2.3通過HttpClient發(fā)送HTTP請(qǐng)求 16
1.2.4使用HTTP協(xié)議的優(yōu)勢(shì) 17
1.2.5JSON和XML 18
1.2.6RESTful和RPC 20
1.2.7基于HTTP協(xié)議的RPC的實(shí)現(xiàn) 22
1.3服務(wù)的路由和負(fù)載均衡 30
1.3.1服務(wù)化的演變 30
1.3.2 負(fù)載均衡算法 33
1.3.3 動(dòng)態(tài)配置規(guī)則 39
1.3.4 ZooKeeper介紹與環(huán)境搭建 40
1.3.5 ZooKeeper API使用簡(jiǎn)介 43
1.3.6 zkClient的使用 47
1.3.7 路由和負(fù)載均衡的實(shí)現(xiàn) 50
1.4 HTTP服務(wù)網(wǎng)關(guān) 54
第2章分布式系統(tǒng)基礎(chǔ)設(shè)施 58
2.1 分布式緩存 60
2.1.1 memcache簡(jiǎn)介及安裝 60
2.1.2 memcache API與分布式 64
2.1.3 分布式session 69
2.2 持久化存儲(chǔ) 71
2.2.1 MySQL擴(kuò)展 72
2.2.2 HBase 80
2.2.3 Redis 91
2.3 消息系統(tǒng) 95
2.3.1 ActiveMQ & JMS 96
2.4 垂直化搜索引擎 104
2.4.1 Lucene簡(jiǎn)介 105
2.4.2 Lucene的使用 108
2.4.3 Solr 119
2.5 其他基礎(chǔ)設(shè)施 125
第3章互聯(lián)網(wǎng)安全架構(gòu) 126
3.1 常見的Web攻擊手段 128
3.1.1 XSS攻擊 128
3.1.2 CRSF攻擊 130
3.1.3 SQL注入攻擊 133
3.1.4 文件上傳漏洞 139
3.1.5 DDoS攻擊 146
3.1.6 其他攻擊手段 149
3.2 常用的安全算法 149
3.2.1 數(shù)字摘要 149
3.2.2 對(duì)稱加密算法 155
3.2.3 非對(duì)稱加密算法 158
3.2.4 數(shù)字簽名 162
3.2.5 數(shù)字證書 166
3.3 摘要認(rèn)證 185
3.3.1 為什么需要認(rèn)證 185
3.3.2 摘要認(rèn)證的原理 187
3.3.3 摘要認(rèn)證的實(shí)現(xiàn) 188
3.4 簽名認(rèn)證 192
3.4.1 簽名認(rèn)證的原理 192
3.4.2 簽名認(rèn)證的實(shí)現(xiàn) 193
3.5 HTTPS協(xié)議 200
3.5.1 HTTPS協(xié)議原理 200
3.5.2 SSL/TLS 201
3.5.3 部署HTTPS Web 208
3.6 OAuth協(xié)議 215
3.6.1 OAuth的介紹 215
3.6.2 OAuth授權(quán)過程 216
第4章系統(tǒng)穩(wěn)定性 218
4.1 在線日志分析 220
4.1.1 日志分析常用命令 220
4.1.2 日志分析腳本 230
4.2 集群監(jiān)控 239
4.2.1 監(jiān)控指標(biāo) 239
4.2.2 心跳檢測(cè) 247
4.2.3 容量評(píng)估及應(yīng)用水位 252
4.3 流量控制 255
4.3.1 流量控制實(shí)施 255
4.3.2 服務(wù)穩(wěn)定性 260
4.3.3 高并發(fā)系統(tǒng)設(shè)計(jì) 265
4.4 性能優(yōu)化 277
4.4.1 如何尋找性能瓶頸 277
4.4.2 性能測(cè)試工具 285
4.4.3 性能優(yōu)化措施 292
4.5 Java應(yīng)用故障的排查 314
4.5.1 常用的工具 314
4.5.2 典型案例分析 331
第5章數(shù)據(jù)分析 337
5.1 日志收集 339
5.1.1 inotify機(jī)制 339
5.1.2 ActiveMQ-CPP 343
5.1.3 架構(gòu)和存儲(chǔ) 359
5.1.4 Chukwa 362
5.2 離線數(shù)據(jù)分析 369
5.2.1 Hadoop項(xiàng)目簡(jiǎn)介 370
5.2.2 Hadoop環(huán)境搭建 374
5.2.3 MapReduce編寫 384
5.2.4 Hive使用 389
5.3 流式數(shù)據(jù)分析 403
5.3.1 Storm的介紹 404
5.3.2 安裝部署Storm 407
5.3.3 Storm的使用 418
5.4 數(shù)據(jù)同步 422
5.4.1 離線數(shù)據(jù)同步 423
5.4.2 實(shí)時(shí)數(shù)據(jù)同步 429
5.5 數(shù)據(jù)報(bào)表 431
5.5.1 數(shù)據(jù)報(bào)表能提供什么 431
5.5.2 報(bào)表工具Highcharts 432
參考文獻(xiàn) 445
2.1.3 分布式session
傳統(tǒng)的應(yīng)用服務(wù)器,如tomcat、jboss等,其自身所實(shí)現(xiàn)的session管理大部分都是基于單機(jī)的。對(duì)于大型分布式網(wǎng)站來說,支撐其業(yè)務(wù)的遠(yuǎn)遠(yuǎn)不止一臺(tái)服務(wù)器,而是一個(gè)分布式集群,請(qǐng)求在不同服務(wù)器之間跳轉(zhuǎn)。那么,如何保持服務(wù)器之間的session同步呢?傳統(tǒng)網(wǎng)站一般通過將一部分?jǐn)?shù)據(jù)存儲(chǔ)在cookie中,來規(guī)避分布式環(huán)境下session的操作。這樣做的弊端很多,一方面cookie的安全性一直廣為詬病,另一方面cookie存儲(chǔ)數(shù)據(jù)的大小是有限制的。隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,很多情況下還得兼顧移動(dòng)端的session需求,使得采用cookie來進(jìn)行session同步的方式的弊端更為凸顯。分布式session正是在這種情況下應(yīng)運(yùn)而生的。
對(duì)于系統(tǒng)性要求較高的用戶,可以將session持久化到DB中,這樣可以保障宕機(jī)時(shí)會(huì)話不易丟失,但缺點(diǎn)也是顯而易見的,系統(tǒng)的整體吞吐將受到很大的影響。另一種解決方案便是將session統(tǒng)一存儲(chǔ)在緩存集群上,如memcache,這樣可以保障較高的讀、寫性能,這一點(diǎn)對(duì)于并發(fā)量大的系統(tǒng)來說非常重要;并且從安全性考慮,session畢竟是有有效期的,使用緩存存儲(chǔ),也便于利用緩存的失效機(jī)制。使用緩存的缺點(diǎn)是,一旦緩存重啟,里面保存的會(huì)話也就丟失了,需要用戶重新建立會(huì)話。
如圖2-4所示,前端用戶請(qǐng)求經(jīng)過隨機(jī)分發(fā)之后,可能會(huì)命中后端任意的Web Server,并且Web Server也可能會(huì)因?yàn)楦鞣N不確定的原因宕機(jī)。在這種情況下,session是很難在集群間同步的,而通過將session以sessionid作為key,保存到后端的緩存集群中,使得不管請(qǐng)求如何分配,即便是Web Server宕機(jī),也不會(huì)影響其他Web Server通過sessionid從Cache Server中獲得session,這樣既實(shí)現(xiàn)了集群間的session同步,又提高了Web Server的容錯(cuò)性。
圖2-4 基于緩存的分布式session架構(gòu)
這里以Tomcat作為Web Server來舉例,通過一個(gè)簡(jiǎn)單的工具memcached-session-manager,實(shí)現(xiàn)基于memcache的分布式session。
memcached-session-manager是一個(gè)開源的高可用的Tomcat session共享解決方案,它支持Sticky模式和Non-Sticky模式。Sticky模式表示每次請(qǐng)求都會(huì)被映射到同一臺(tái)后端Web Server,直到該Web Server宕機(jī),這樣session可先存放在服務(wù)器本地,等到請(qǐng)求處理完成再同步到后端memcache服務(wù)器;而當(dāng)Web Server宕機(jī)時(shí),請(qǐng)求被映射到其他Web Server,這時(shí)候,其他Web Server可以從后端memcache中恢復(fù)session。對(duì)于Non-Sticky模式來說,請(qǐng)求每次映射的后端Web Server是不確定的,當(dāng)請(qǐng)求到來時(shí),從memcache中加載session;當(dāng)請(qǐng)求處理完成時(shí),將session再寫回到memcache。
以Non-Sticky模式為例,它需要給Tomcat的$CATALINA_HOME/conf/context.xml文件配置SessionManager,具體配置如下:
memcachedNodes="n1:192.168.0.100:11211,n2:192.168.0.101:11211"
sticky="false"
sessionBackupAsync="false"
lockingMode="auto"
requestUriIgnorePattern=".\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
其中:memcachedNodes指定了memcache的節(jié)點(diǎn);sticky表示是否采用Sticky模式;sessionBackupAsync表示是否采用異步方式備份session;lockingMode表示session的鎖定模式;auto表示對(duì)于只讀請(qǐng)求,session將不會(huì)被鎖定,如果包含寫入請(qǐng)求,則session會(huì)被鎖定;requestUriIgnorePattern表示忽略的url;transcoderFactoryClass用來指定序列化的方式,這里采用的是Kryo序列化,也是memcached-session-manager比較推薦的一種序列化方式。
memcached-session-manager依賴于memcached-session-manager-${version}.jar,如果使用的是tomcat6,則還需要下載memcached-session-manager-tc6-${version}.jar,并且它還依賴memcached-${version}.jar進(jìn)行memcache的訪問。在啟動(dòng)Tomcat之前,需要將這些jar放在$CATALINA_ HOME/lib/目錄下。如果使用第三方序列化方式,如Kryo,還需要在Web工程中引入相關(guān)的第三方庫,Kryo序列化所依賴的庫,包括kryo-${version}-all.jar、kryo-serializers-${version}.jar和msm-kryo-serializer. ${version}.jar。
2008年,網(wǎng)隨著訪問量/數(shù)據(jù)量的巨增,以及開發(fā)人員的增長,原有的架構(gòu)體系已經(jīng)無法支撐,于是在那一年網(wǎng)將系統(tǒng)改造為了一個(gè)大型分布式的網(wǎng)站。作者目前就職于阿里集團(tuán),清晰地看到了目前這個(gè)大型分布式網(wǎng)站的架構(gòu)體系,這個(gè)架構(gòu)體系其實(shí)是非常多方面的技術(shù)的融合,要掌握好最重要的首先是看清全貌,但這也是最難的。本書向大家展示了一個(gè)大型分布式網(wǎng)站需要的技術(shù)的全貌。
——集團(tuán)博學(xué)技術(shù)專家林昊(畢玄)
唯一不足,感覺作者很多地方有明顯的小錯(cuò)誤,讓人看起來會(huì)迷惑。
好書很多,這本書也不例外,能從這本書里學(xué)到很多東西!
就是送貨慢,本來說的 18號(hào)送達(dá), 結(jié)果19號(hào)下午才送達(dá)
有些地方講的不是很清楚,還有湊字的嫌疑,例如memcached的安裝過程寫了好幾頁,大都是安裝過程的終端回顯,沒什么用。
宅急送送到家很好,書的成色比上次好,就是字體有點(diǎn)小,看時(shí)間長了,有點(diǎn)累
剛買,還未來得及看,排版、紙質(zhì)還行,等看一段時(shí)間再來評(píng)價(jià)
書還是不錯(cuò),沒有完全看完,不過油墨味道有點(diǎn)重。
內(nèi)容廣度夠,深度還差點(diǎn),整體還是不錯(cuò)的,值得購買
比李智慧那本更深入了一些,可以跟著實(shí)踐一下
雙十一活動(dòng)非常給力啊,it書今天低折扣的活動(dòng)不多,難得一次,一下子購買了好多書,都是平時(shí)7折以上的
書很好,內(nèi)容很實(shí)用,作者是個(gè)很有經(jīng)驗(yàn)的攻城師
看了,對(duì)自己的眼界有一定的開闊。但是好多東西都不是很詳細(xì),只有一個(gè)大概的概念。
書的內(nèi)容不錯(cuò)的,很多來自實(shí)戰(zhàn)的經(jīng)驗(yàn)總結(jié),對(duì)有志于成為架構(gòu)師的人的大局觀有很大幫助,推薦購買。
書收到了,之前是在同學(xué)那里看到過,覺得挺好的,還沒來得及仔細(xì)看!書估計(jì)是盜版,心里很不爽!內(nèi)容應(yīng)該是很不錯(cuò)的!
書質(zhì)量可以,內(nèi)容感覺太簡(jiǎn)單了,感覺沒有核心原理與案例分析這本書寫的好
每天都在翻啊翻啊的一本書,很有參考價(jià)值,書果然不錯(cuò)
很不錯(cuò)的一本書,剛看了一部分,作者知識(shí)面很廣
這本書我推薦,很好,看了一大半,很值得買,不適合新手看
內(nèi)容豐富,代碼量很足,對(duì)于想了解分布式的人來說,是一本非常好書籍。
作為新人入手書籍看看還行,雖都有涉及,但是都點(diǎn)到即止,沒有深入,而且作為一本技術(shù)書籍,文中大量的代碼片斷,程序截圖和工具介紹,實(shí)有不妥。
特別喜歡,超級(jí)好的一本分布式書籍,見過最好的一本了!一定會(huì)堅(jiān)持看完!加油!
不錯(cuò)的書,比李智慧的《大型網(wǎng)站技術(shù)架構(gòu) 核心原理與案例分析》講得細(xì)一些
對(duì)于想了解分布式,緩存,大數(shù)據(jù),非常適合,該書對(duì)各種技術(shù)只提供解決方案,原理沒有講。
對(duì)于網(wǎng)站架構(gòu)知識(shí)介紹的很全面,很不錯(cuò)的一本書
此產(chǎn)品相當(dāng)不錯(cuò),作者確實(shí)是經(jīng)過實(shí)踐的心得,但經(jīng)過此書,不一定能夠讓大家掌握具體的技術(shù)細(xì)節(jié),還需要自己消化,實(shí)際上寫書容易,重要的是怎么樣讓具體的知識(shí)能夠讓讀者吸收的非常好,這是有困難的!
分布式現(xiàn)在非常火,這本書則詳細(xì)全面的介紹大型網(wǎng)站分布式開發(fā)的方方面面,從入門到精通,值得詳細(xì)閱讀。
通過通俗的語言和恰當(dāng)?shù)呐e例對(duì)大型網(wǎng)站架構(gòu)進(jìn)行了科普試的普及教育