分佈式系統常用技術及案例分析 分布式系统常用技术及案例分析

柳偉衛

買這商品的人也買了...

商品描述

本書分為三大部分,即分佈式系統基礎理論、分佈式系統常用技術以及經典的分佈式系統案例分析。第一部分主要介紹分佈式系統基礎理論知識,總結一些在設計分佈式系統時需要考慮的範式、知識點以及可能會面臨的問題,其中包括線程、通信、一致性、容錯性、CAP 理論、安全性和並發等相關內容;同時講述分佈式系統的常見架構體系,其中也包括最近比較火的RESTful 風格架構、微服務、容器技術等。第二部分主要列舉了在分佈式系統應用中經常用到的一些主流技術,並介紹這些技術的作用和用法;這些技術涵蓋了分佈式消息服務、分佈式計算、分佈式存儲、分佈式監控系統、分佈式版本控制、RESTful、微服務、容器等領域的內容。第三部分選舉了以Twitter 為代表的國內外知名因特網企業的大型分佈式系統案例,分析其架構設計以及演變過程;這部分相當於是對第二部分零散的技術點做一個“串燒”,讓讀者可以結合技術的理論,看到實戰的效果。

目錄大綱

第1章 分佈式系統基礎知識1
1.1概述2
1.1.1什麼是分佈式系統2
1.1.2集中式系統VS.分佈式系統3
1.1.3如何設計分佈式系統4
1.1.4分佈式系統所面臨的挑戰5
1.2線程6
1.2.1什麼是線程6
1.2.2進程和線程7
1.2.3編程語言中的線程對象8
1.2.4SimpleThreads示例11
1.3通信14
1.3.1網絡基礎知識14
1.3.2網絡I /O模型的演進19
1.3.3遠程過程調用(RPC)33
1.3.4面向消息的通信41
1.4一致性43
1.4.1以數據為中心的一致性模型44
1.4.2以客戶為中心的一致性45
1.5容錯性46
1.5.1基本概念46
1.5.2故障分類47
1.5.3使用冗餘來掩蓋故障48
1.5.4分佈式提交48
1.6CAP理論52
1.6.1什麼是CAP理論52
1.6.2為什麼說CAP只能三選二53
1.6.3CAP常見模型55
1.6.4CAP的意義56
1.6.5CAP最新發展56
1.7安全性57
1.7.1基本概念58
1.7.2加密算法60
1.7.3安全通道63
1.7. 4訪問控制72
1.8並發74
1.8.1線程與並發75
1.8.2並發與並行75
1.8.3並髮帶來的風險76
1.8.4同步(Synchronization)78
1.8.5原子訪問(Atomic Access)83

第2章 分佈式系統架構體系85
2.1基於對象的體系結構86
2.1.1分佈式對象86
2.1.2微軟DCOM(COM+)87
2.1.3CORBA88
2.1.4JavaRMI90
2.2面向服務的架構(SOA)93
2.2.1架構VS .標準94
2.2.2SOA的基本概念95
2.2.3基於Web Services的SOA97
2.2.4SOA的演變112
2.3REST風格的架構112
2.3.1什麼是REST112
2.3.2REST有哪些特徵113
2.3.3Java實現REST的例子115
2.3.4RESTAPI最佳實踐125
2.4微服務架構(MSA)128
2.4.1什麼是MSA128
2.4.2MSAVS.SOA130
2.4.3何時採用MSA134
2.4.4如何構建微服務135
2.5容器技術139
2.5.1虛擬化技術139
2.5.2容器VS.虛擬機139
2.5.3基於容器的持續部署142
2.6Serverless架構149
2.6.1什麼是Serverless架構150
2.6.2Serverless典型的應用場景151
2.6.3常見的Serverless框架153
2.6 .4Serverless架構原則155
2.6.5例子:使用Serverless實現遊戲全球同服157

第3章 分佈式消息服務164
3.1Apache ActiveMQ165
3.1.1Apache ActiveMQ簡介165
3.1.2Apache ActiveMQ安裝配置166
3.1.3例子:producer—consumer173
3.1.4例子:使用JMX來監控ActiveMQ174
3.1.5例子:使用Java實現producer—consumer176
3.2RabbitMQ180
3.2.1RabbitMQ簡介180
3.2.2RabbitMQ安裝配置181
3.2.3例子:WorkQueues185
3.2.4例子:Publish/Subscribe191
3.2. 5例子:Routing195
3.2.6例子:Topics200
3.2.7例子:RPC204
3.3RocketMQ210
3.3.1RocketMQ簡介210
3.3.2RocketMQ安裝配置213
3.3.3例子:使用Java實現producer—consumer214
3.3.4RocketMQ最佳實踐219
3.4ApacheKafka223
3.4 .1ApacheKafka簡介224
3.4.2ApacheKafka的核心概念225
3.4.3ApacheKafka的使用場景228
3.4.4ApacheKafka的安裝、配置、使用229

第4章 分佈式計算236
4.1MapReduce237
4.1.1MapReduce簡介237
4.1.2MapReduce的編程模型238
4.1 .3MapReduce的實現243
4.1.4MapReduce的使用技巧248
4.2Apache Hadoop251
4.2.1Apache Hadoop簡介252
4.2.2Apache Hadoop核心組件253
4.2.3Apache Hadoop單節點上的安裝配置254
4.2.4Apache Hadoop集群上的安裝配置258
4.2 .5例子:詞頻統計WordCount程序267
4.3Apache Spark272
4.3.1Apache Spark簡介272
4.3.2Apache Spark與Apache Hadoop的關係274
4.3.3Apache Spark2.0的新特性275
4.3.4Apache Spark的安裝和使用279
4.3.5Apache Spark集群模式280
4.4ApacheMesos282
4.4.1Apache Mesos簡介283
4.4.2Apache Mesos的安裝、使用285
4.4.3設計高可用的Mesosframework289

第5章 分佈式存儲
第6章 分佈式監控
第7章 分佈式版本控制系統
第8章 RESTful API、微服務及容器技術
第9章 淘寶網:“雙11”神話的締造者
第10章 Twitter:實時信息傳遞的王者
參考文獻