本書分為三大部分,即分散式系統基礎理論、分散式系統常用技術以及經典的分散式系統案例分析。
第一部分主要介紹分散式系統基礎理論知識,總結一些在設計分散式系統時需要考慮的範式、知識點以及可能會面臨的問題,其中包括執行緒、通信、一致性、容錯性、CAP 理論、安全性和併發等相關內容;同時講述分散式系統的常見架構體系,其中也包括最近比較熱門的RESTful 風格架構、微服務、容器技術等。
第二部分主要列舉在分散式系統應用中經常用到的一些主流技術,並介紹這些技術的作用和用法;這些技術涵蓋了分散式消息服務、分散式運算、分散式存儲、分散式監控系統、分散式版本控制、RESTful、微服務、容器等領域的內容。
第三部分選取以淘寶網和Twitter為代表的國內外知名互聯網企業的大型分散式系統案例,分析其架構設計以及演變過程;這部分相當於是對第二部分零散的技術點做一個“串聯”,讓讀者可以結合技術的理論,看到實戰的效果。
適用:對分散式系統感興趣的讀者、軟體工程師、系統架構師等。
作者序
寫作背景
我一直想寫一本關於分散式系統方面的書。一方面是想把個人多年工作中有關的分散式技術做一下歸納,另一方面也想把個人的經驗分享給廣大的讀者朋友。由於我的開發工作大都以Java 為主,所以一開始的主題設想是“分散式Java”,書也以開放原始碼方式發佈在網際網路上(網址為github.com/waylau/distributed-java)。
後來,陳曉猛編輯看到了這本開放原始碼書,以及我關於分散式系統方面的博文,問我是否有興趣出版分散式相關題材的圖書。當然書的內容不僅是“分散式Java”。
對於出書一事,我猶豫良久。首先,本身工作忙,實在無暇顧及其他;其次,雖然我之前寫過超過一打的書籍(可見waylau.com/books/),但多是開放原始碼電子書,時間、內容方面自然也就不會有太多約束,幾乎是“想寫就寫,沒有時間就不寫”,這個跟正式出版還是存在比較大的差異的;最後,這本書有關面相對較廣,需要查閱大量資料,實在是太耗費精力。
但陳曉猛編輯還是鼓勵我能夠去嘗試做這個事情。思索再三,於是我便答應。當然,最後這本書還是在規定時間內完成了。它幾乎耗盡了我寫作期間所有的業餘和休息時間。
“不積跬步,無以至千里;不積小流,無以成江海。”雖然整本書從構思到撰寫完成的時間不足一年,但書中的大部分基礎知識,卻是我在多年的學習、工作中累積下來的。之所以能夠實現快速寫作,一方面是做了比較嚴格的時間管理,另一方面也得益於我多年堅持寫部落格和開放原始碼書的習慣。
寫作背景
我一直想寫一本關於分散式系統方面的書。一方面是想把個人多年工作中有關的分散式技術做一下歸納,另一方面也想把個人的經驗分享給廣大的讀者朋友。由於我的開發工作大都以Java 為主,所以一開始的主題設想是“分散式Java”,書也以開放原始碼方式發佈在網際網路上(網址為github.com/waylau/distributed-java)。
後來,陳曉猛編輯看到了這本開放原始碼書,以及我關於分散式系統方面的博文,問我是否有興趣出版分散式相關題材的圖書。當然書的內容不僅是“分散式Java”。
對於出書一事,我猶豫良久。首先,本身工作忙,實在無...
目錄
前言
01分散式系統基礎知識
1.1 概述
1.2 執行緒
1.3 通訊
1.4 一致性
1.5 容錯性
1.6 CAP 理論
1.7 安全性
1.8 平行處理
02分散式系統架構系統
2.1 以物件為基礎的系統結構
2.2 針對服務的架構(SOA)
2.3 REST 風格的架構
2.4 微服務架構
2.5 容器技術
2.6 Serverless 架構
03分散式訊息服務
3.1 Apache ActiveMQ
3.2 RabbitMQ
3.3 RocketMQ
3.4 Apache Kafka
04分散式運算
4.1 MapReduce
4.2 Apache Hadoop
4.3 Apache Spark
4.4 Apache Mesos
05分散式儲存
5.1 Bigtable
5.2 Apache HBase
5.3 Apache Cassandra
5.4 Memcached
5.5 Redis
5.6 MongoDB
06分散式監控
6.1 Nagios
6.2 Zabbix
6.3 Consul
6.4 ZooKeeper
07分散式版本控制系統
7.1 Bazaar
7.2 Mercurial
7.3 Git
08 RESTful API、微服務及容器技術
8.1 Jersey
8.2 Spring Boot
8.3 Docker
09淘寶網:「雙11」神話的締造者
9.1 從LAMP 到Java 平台的轉變
9.2 堅定不移地走「去IOE」的道路
9.3 打造雲端運算,決戰「雙11」
10 Twitter:即時資訊傳遞的王者
10.1 快取,讓回應更快
10.2 服務拆分與治理
10.3 抗擊流量的洪流
A 參考文獻
前言
01分散式系統基礎知識
1.1 概述
1.2 執行緒
1.3 通訊
1.4 一致性
1.5 容錯性
1.6 CAP 理論
1.7 安全性
1.8 平行處理
02分散式系統架構系統
2.1 以物件為基礎的系統結構
2.2 針對服務的架構(SOA)
2.3 REST 風格的架構
2.4 微服務架構
2.5 容器技術
2.6 Serverless 架構
03分散式訊息服務
3.1 Apache ActiveMQ
3.2 RabbitMQ
3.3 RocketMQ
3.4 Apache Kafka
04分散式運算
4.1 MapReduce
4.2 Apache Hadoop
4.3 Apache Spark
4.4 Apache Mesos
05分散式儲存
5.1 Bigtable
5.2 Apache HBase
5.3 Apache Cassandra
5.4 Memcached
5....