前言
寫作背景
我一直想寫一本關於分散式系統方面的書。一方面是想把個人多年工作中有關的分散式技術做一下歸納,另一方面也想把個人的經驗分享給廣大的讀者朋友。由於我的開發工作大都以Java 為主,所以一開始的主題設想是“分散式Java”,書也以開放原始碼方式發佈在網際網路上(網址為github.com/waylau/distributed-java)。
後來,陳曉猛編輯看到了這本開放原始碼書,以及我關於分散式系統方面的博文,問我是否有興趣出版分散式相關題材的圖書。當然書的內容不僅是“分散式Java”。
對於出書一事,我猶豫良久。首先,本身工作忙,實在無暇顧及其他;其次,雖然我之前寫過超過一打的書籍(可見waylau.com/books/),但多是開放原始碼電子書,時間、內容方面自然也就不會有太多約束,幾乎是“想寫就寫,沒有時間就不寫”,這個跟正式出版還是存在比較大的差異的;最後,這本書有關面相對較廣,需要查閱大量資料,實在是太耗費精力。
但陳曉猛編輯還是鼓勵我能夠去嘗試做這個事情。思索再三,於是我便答應。當然,最後這本書還是在規定時間內完成了。它幾乎耗盡了我寫作期間所有的業餘和休息時間。
“不積跬步,無以至千里;不積小流,無以成江海。”雖然整本書從構思到撰寫完成的時間不足一年,但書中的大部分基礎知識,卻是我在多年的學習、工作中累積下來的。之所以能夠實現快速寫作,一方面是做了比較嚴格的時間管理,另一方面也得益於我多年堅持寫部落格和開放原始碼書的習慣。
內容介紹
本書分為三大部分,即分散式系統基礎理論、分散式系統常用技術以及經典的分散式系統案例分析。第一部分為第1 章和第2 章,主要介紹分散式系統基礎理論知識,歸納一些在設計分散式系統時需要考慮的範式、基礎知識以及可能會面臨的問題。第二部分為第3 章到第8 章,主要列舉了在分散式系統應用中經常用到的一些主流技術,並介紹這些技術的作用和用法。第三部分為第9章和第10章,選取了以淘寶網和Twitter 為代表的國內外知名網際網路企業的大型分散式系統案例,分析其架構設計以及演變過程。
■第1 章介紹分散式系統基礎理論知識,歸納一些在設計分散式系統時需要考慮的範式、基礎知識以及可能會面臨的問題,其中包含執行緒、通訊、一致性、容錯性、CAP 理論、安全性和平行處理等相關內容。
■第2 章詳細介紹分散式系統的架構系統,包含傳統的以物件為基礎的系統結構、SOA,也包含最近比較火的RESTful 風格架構、微服務、容器技術、Serverless 架構等。
■第3 章介紹常用的分散式訊息服務架構, 包含Apache ActiveMQ、RabbitMQ、RocketMQ、Apache Kafka 等。
■第4 章介紹分散式運算理論和應用架構方面的內容,包含MapReduce、Apache Hadoop、Apache Spark、Apache Mesos 等。
■第5 章介紹分散式儲存理論和應用架構方面的內容,包含Bigtable、ApacheHBase、Apache Cassandra、Memcached、Redis、MongoDB 等。
■第6 章介紹分散式監控方面常用的技術,包含Nagios、Zabbix、Consul、ZooKeeper 等。
■第7 章介紹常用的分散式版本控制工具,包含Bazaar、Mercurial、Git 等。
■第8 章介紹RESTful API、微服務及容器相關的技術,注重介紹Jersey、Spring Boot、Docker 等技術的應用。
■第9 章和第10 章分別介紹以淘寶網和Twitter 為代表的國內外知名網際網路企業的大型分散式系統案例,分析其架構設計以及演變過程。
原始程式碼
本書提供原始程式碼下載, 下載網址為本公司官網www.topteam.cc有關本書的部分。
勘誤和交流
本書如有勘誤,會在github.com/waylau/distributed-systems-technologiesand-
cases- analysis 上進行發佈。由於筆者能力有限,時間倉促,難免錯漏,
歡迎讀者批評指正。讀者也可到博文視點官網的本書頁面進行交流(www.broadview.com.cn/30771)。
您也可以直接聯繫我:
部落格:waylau.com
電子郵件:waylau521@gmail.com
微博:weibo.com/waylau521
開放原始碼:github.com/waylau
致謝
首先,感謝電子工業出版社博文視點公司的陳曉猛編輯,是您鼓勵我將本書付諸成冊,並在我寫作過程中審稿了大量稿件,給予了我很多指導和幫助。感謝工作在後台的電子工業出版社評審團隊對於本書在校對、排版、審核、封面設計、錯誤改進方面所給予的幫助,使本書得以順利出版發行。
其次,感謝在我十幾年求學生涯中教育過我的所有老師。是你們將知識和學習方法傳遞給了我。感謝我曾經工作過的公司和單位,感謝和我一起共事過的同事和戰友,你們的優秀一直是我追逐的目標,你們所給予的壓力正是我不斷改進自己的動力。
感謝我的父母、妻子Funny 和兩個女兒。由於撰寫本書,犧牲了很多陪伴家人的時間。感謝你們對於我工作的了解和支援。
最後,特別要感謝這個時代,網際網路讓所有人可以公平地享受這個時代的成果。感謝那些為電腦、網際網路所做出貢獻的先驅,是你們讓我可以站在更高的“肩膀”上!感謝那些為本書提供靈感的佳作,包含《分散式系統原理與範式》《Unix Network Programming》《Enterprise SOA》《MapReduce Design Patterns》《Hadoop: The Definitive Guide》《Learning Hbase》《Advanced Analytics withSpark》《Pro Git》《Docker in Action》《淘寶技術這十年》《Hatching Twitter》,等等,詳細的書單可以參閱本書最後的“參考文獻”部分。
柳偉衛