架構解密:從分散式到微服務

科技小毛發表於2017-11-09

下載

電子版僅供預覽及學習交流使用,下載後請24小時內刪除,支援正版,喜歡的請購買正版書籍

封頁

封頁

編輯推薦

歷時三年終到稿,還未讀完初稿,就知道這將是一本暢銷書。 從傳統分散式架構遷移到基於容器技術的微服務架構,這本就是百談不厭的話題。 更別提內容涉及Microservices、Kubernetes、SOA、Distribute Memory、ElasticSearch、Kafka、CAP、NUMA、SOA、GlusterFS、Actor、Akka、RabbitMQ、Spring Cloud、ZeroC Ice…… Leader-us的文字還是那樣充滿IT情懷和抱負,也一如既往地流暢和通俗易懂。 Ó 一個很複雜的問題,經過Leader-us一個調侃就變得簡單化。 Ó 一個看似很簡單的問題,Leader-us卻總能深入到幕後,包括獨一無二的資料和原理講解,一手的資料啊有木有,世上難買啊有木有,很珍貴啊有木有! Leader-us調侃道:“這是一本程式碼級吹水架構師必備讀物,從此360°無死角吹水,絕地反擊,打敗純吹水派架構師”,讓我們拭目以待。

內容簡介

分散式架構與微服務平臺是當今IT界的關鍵技術,也是資深軟體工程師和系統架構師必須掌握的核心技術。本書以從傳統分散式架構遷移到基於容器技術的微服務架構為主線,全面、透徹地介紹了與分散式架構及微服務相關的知識和技術。本書一開始並沒有提及分散式的枯燥理論,而是講述了一段精彩的IT發展史,其中重點講述了大型機、UNIX小機器的沒落與X86平臺的崛起,從而巧妙地引出CPU、記憶體、網路、儲存的分散式演進過程,這恰恰是分散式軟體系統賴以執行的“物質基礎”。然後簡明扼要地介紹了進行系統架構所必需的網路基礎,並詳細介紹了分散式系統中的經典理論、設計套路及RPC通訊,對記憶體、SOA架構、分散式儲存、分散式計算等進行了深度解析,*後詳細介紹了全文檢索與訊息佇列中介軟體,以及微服務架構所涉及的重點內容。 本書是Leader-us多年架構經驗的傾情分享,主要面向關注分散式架構及微服務,以及有志於成為實力派架構師的IT人士。

作者簡介

Leader-us 本名吳治輝,惠普資深軟體架構師,國內知名開源分散式資料庫中介軟體 Mycat的發起人,精通Java程式設計,擁有超過16年軟體研發經驗,專注於電信和雲端計算方面的軟體研發,參與過眾多分散式與雲端計算相關的大型專案架構設計和 Coding,是業界少有的具備很強 Coding 能力的 S級資深架構師;曾經選拔和培養了大批優秀Java工程師,他們中的大多數人進入知名軟體公司參與核心研發,也有一些人選擇創業。 Leader-us 也是《ZeroC Ice 權威指南》《Kubernetes 權威指南:從 Docker到 Kubernetes 實踐全接觸》的作者。

目 錄

第1章 大話分散式系統 1
1.1 IT爭霸戰 1
1.1.1 劃時代的第一臺計算機 1
1.1.2 IT界的恐龍時代 4
1.1.3 貴族的沒落與平民的勝利 6
1.1.4 ARM新貴的爆發 10
1.1.5 超級計算機的絕地反擊 11
1.2 分散式系統的開國元勳 13
1.3 分散式系統的基石:TCP/IP 17
1.4 從無奈到崛起的CDN網 19
1.5 這是一個最好的時代 21
第2章 “知識木桶”中的短板—— 網路基礎 23
2.1 即使高手也不大懂的網路 23
2.2 NIO,一本難唸的經 30
2.2.1 難懂的ByteBuffer 30
2.2.2 晦澀的“非阻塞” 39
2.2.3 複雜的Reactor模型 41
2.3 AIO,大道至簡的設計與苦澀的現實 45
2.4 網路傳輸中的物件序列化問題 50
第3章 分散式系統的經典基礎理論 55
3.1 從分散式系統的設計理念說起 55
3.2 分散式系統的一致性原理 58
3.3 分散式系統的基石之ZooKeeper 61
3.3.1 ZooKeeper的原理與功能 61
3.3.2 ZooKeeper的場景案例分析 65
3.4 經典的CA理論 69
3.5 BASE準則,一個影響深遠的指導思想 72
3.6 重新認識分散式事務 73
3.6.1 資料庫單機事務的實現原理 73
3.6.2 經典的X/OpenDTP事務模型 75
3.6.3 網際網路中的分散式事務解決方案 78
第4章 聊聊RPC 83
4.1 從IPC通訊說起 83
4.2 古老又有生命力的RPC 85
4.3 從RPC到服務治理框架 91
4.4 基於ZeroC Ice的微服務架構指南 94
4.4.1 微服務架構概述 95
4.4.2 ZeroC Ice微服務架構指南 100
第5章 深入淺析記憶體 107
5.1 你所不知道的記憶體知識 107
5.1.1 複雜的CPU與單純的記憶體 107
5.1.2 多核CPU與記憶體共享的問題 110
5.1.3 著名的Cache偽共享問題 113
5.1.4 深入理解不一致性記憶體 115
5.2 記憶體計算技術的前世今生 118
5.3 記憶體快取技術分析 123
5.3.1 快取概述 123
5.3.2 快取實現的幾種方式 125
5.3.3 學習Memcache的記憶體管理技術 127
5.3.4 Redis的獨特之處 129
5.4 記憶體計算產品分析 131
5.4.1 SAP HANA 131
5.4.2 Hazelcast 133
5.4.3 VoltDB 135
第6章 深入解析分散式儲存 138
6.1 資料儲存進化史 138
6.2 經典的網路檔案系統NFS 145
6.3 高效能運算領域的分散式檔案系統 148
6.4 企業級分散式檔案系統GlusterFS 150
6.5 創新的Linux分散式儲存系統—— Ceph 153
6.6 軟體定義儲存 160
第7章 聊聊分散式計算 166
7.1 不得不說的Actor模型 166
7.2 Actor原理與實踐 170
7.3 初識Akka 177
7.4 適用面很廣的Storm 185
7.5 MapReduce及其引發的新世界 194
第8章 全文檢索與訊息佇列中介軟體 201
8.1 全文檢索 201
8.1.1 什麼是全文檢索 201
8.1.2 起於Lucene 202
8.1.3 Solr 206
8.1.4 ElasticSearch 209
8.2 訊息佇列 217
8.2.1 訊息佇列概述 217
8.2.2 JEE專屬的JMS 221
8.2.3 生生不息的ActiveMQ 226
8.2.4 RabbitMQ 231
8.2.5 Kafka 238
第9章 微服務架構 244
9.1 微服務架構概述 244
9.1.1 微服務架構興起的原因 244
9.1.2 不得不提的容器技術 246
9.1.3 如何全面理解微服務架構 249
9.2 幾種常見的微服務架構方案 253
9.2.1 ZeroC IceGrid微服務架構 253
9.2.2 Spring Cloud微服務架構 256
9.2.3 基於訊息佇列的微服務架構 259
9.2.4 Docker Swarm微服務架構 261
9.3 深入Kubernetes微服務平臺 263
9.3.1 Kubernetes的概念與功能 263
9.3.2 Kubernetes的組成與原理 268
9.3.3 基於Kubernetes的PaaS平臺 272

前 言

寫給像筆者的你 

我們都是IT人,所以,我們註定了很像。

我們可能小時候都挺聰明,學習也挺好,也早戀(可能純潔度不同)。這一切都是有關聯的,因為早戀所以你寫情書,所以你有了點文采,又所以喜歡讀筆者的文字,於是,你成了筆者的第1個讀者,雖然我們分佈在不同的機房中。

我們因為都受過嚴格、系統的全面教育,所以骨子裡是溫順的,性格上是溫柔的。我們因為在智商上高於情商的概率是99%,所以多年獨佔風雲榜之狀元稱謂——呆。我們一起努力的結果,是驗證了那句話——科學無國界。在《生活大爆炸》《IT狂人》等熱播美劇中,我們終於找到祖國之外的同類,於是我們開始自戀地打廣告:我很呆但我很幽默。

不知道女友要什麼東西啊,分手了才知道人家暗示了那麼多次自己都不懂啊!

我們都是高學歷的概率是99%,我們都近視的概率是99%,我們未富先胖的概率是99%,我們未老先白頭的概率是99%,我們目前在北上廣或者未來在北上廣的概率是99%,我們背井離鄉的概率是99%,我們的計算機記憶體超過4GB的概率是99%,我們喜歡新計算機勝過於喜歡新女友的概率是99%

我們曾經是眾人眼中的寵兒,但不知從何時起,淪落為新一代的農民工。在《死神來了之中國*版》裡,每年都有幾個IT精英註定被永遠地帶走,我們在默默悲傷的同時,心裡也在默默祈禱:O My God,讓我活到82歲吧,就算沒有28歲的小嬌妻。

我們聽過*多的公司是微軟,我們*離不開的品牌是Windows,雖然對於它們的評價,我們無法達成一致;同樣,對於馬雲及賈伯斯,我們也有著不同的評價,雖然他們締造的帝國對我們的生活都產生了重要影響。

*後也是*重要的一點,我們都生活在一個有意思的時代,這個時代無法用任何哲學理論來左右我們的思想和行為。金錢向左,理想朝右,我們始終不放棄一個巨集偉夢想:尋找*秀的演算法,收穫金錢,實現理想。

吐槽歸吐槽,言歸正傳,筆者假設你跟筆者一樣是個有為青年,目標是成為IT精英,目前煩透了資訊系統、Web及低水平的重複編碼工作,打算進階架構師隊伍,並下定決心潛心修行一年半載,脫掉程式猿的舊外套,換上土豪金IT新人套裝,那麼,請你準備如下軟硬體,開始和筆者一起,探祕分散式架構的奧義,走向雲端

  • 8GB記憶體的計算機一臺,4GB勉強過關。
  • 計算機保持聯網,遇到問題能隨時谷歌
  • 筆者的QQ號碼,該號碼在本書某個DEMO的程式碼中。
  • Eclipse或你熟悉的Java開發工具。

除此之外,更重要的是以下幾點。

  • 不求快,但求堅持到底,系統學習比區域性掌握更重要。
  • 不怕錯,就怕矇混過關,嘗試和出錯是學程式設計的王者之道。
  • 不怕動手,就怕只動眼,原理與實踐都重要,技術都是實踐和總結出來的。

 

Leader-us

2017531

相關文章