注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)反應(yīng)式應(yīng)用開發(fā)

反應(yīng)式應(yīng)用開發(fā)

反應(yīng)式應(yīng)用開發(fā)

定 價:¥69.80

作 者: [美] 鄧肯·德沃爾(Duncan DeVore) 著
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787302563563 出版時間: 2020-10-01 包裝: 平裝
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  關(guān)鍵任務(wù)型應(yīng)用必須立即響應(yīng)負(fù)載的變化、從故障中優(yōu)雅地恢復(fù)并滿足對性能、成本和可靠性的嚴(yán)格要求。這可不是什么小任務(wù)!反應(yīng)式設(shè)計(jì)能夠通過模塊化、消息驅(qū)動的架構(gòu)、創(chuàng)新的工具和基于云的基礎(chǔ)設(shè)施更容易地滿足這些需求。 《反應(yīng)式應(yīng)用開發(fā)》介紹如何使用反應(yīng)式設(shè)計(jì)模式構(gòu)建可靠的企業(yè)級應(yīng)用。本書首先介紹了反應(yīng)式思維模型以及對Akka參與者框架等核心技術(shù)的審視。然后使用Scala構(gòu)建了一個概念驗(yàn)證系統(tǒng),并講解CQRS和事件溯源等模式的應(yīng)用。在實(shí)現(xiàn)伸縮性和回彈性、與傳統(tǒng)架構(gòu)集成以及理解強(qiáng)大的測試技術(shù)的同時,讀者將掌握反應(yīng)式設(shè)計(jì)原則。主要內(nèi)容: 設(shè)計(jì)可伸縮的領(lǐng)域模型 構(gòu)建可容錯的系統(tǒng) 高效應(yīng)對海量數(shù)據(jù) 可以用Scala或Java構(gòu)建的示例

作者簡介

  Sean Walsh已經(jīng)在技術(shù)行業(yè)工作了20多年。在此期間,他從一開始使用Microsoft技術(shù)體系的語言和框架進(jìn)行編程,轉(zhuǎn)變到在20世紀(jì)90年代中期成為Java的早期使用者。Sean為許多垂直領(lǐng)域(特別是金融、能源和零售行業(yè))的初創(chuàng)公司和企業(yè)提供咨詢。自1996年以來,他一直是曼哈頓一家成功的中型咨詢公司的首席技術(shù)官和聯(lián)合創(chuàng)始人。他還是SOA Software的服務(wù)副總裁,以及一家利潤豐厚的軟件咨詢公司的所有者。 在賣掉上一家公司并休息了一段時間后,Sean決定再次揚(yáng)帆起航,并且再次開始在能源行業(yè)從事實(shí)踐咨詢工作,最初使用的是Java和Spring,但在看到它們的局限性后,Sean開始使用Akka和Scala。Sean在使用Lightbend開源技術(shù)棧構(gòu)建分布式應(yīng)用方面積累了多年的經(jīng)驗(yàn),其中包括Weight Watchers的數(shù)字化轉(zhuǎn)型。 Sean現(xiàn)在是Lightbend的現(xiàn)場CTO,負(fù)責(zé)幫助Lightbend的客戶實(shí)現(xiàn)反應(yīng)式架構(gòu)。 Duncan Devore是Lightbend的首席系統(tǒng)工程師,并且多年來一直是Scala、Akka和反應(yīng)式應(yīng)用的堅(jiān)定支持者,他開發(fā)了第一批投入生產(chǎn)使用的反應(yīng)式應(yīng)用之一。他還是Martin Krasser最初的事件溯源項(xiàng)目的提交者,該項(xiàng)目后來發(fā)展成為Akka Persistence,同時他還維護(hù)著Akka Persistence Mongo Journal。 Brian Hanafee首次涉足書籍編寫是作為《反應(yīng)式設(shè)計(jì)模式》(Reactive Design Patterns,該書已由清華大學(xué)出版社引進(jìn)并出版)的合著者。他是富國銀行(Wells Fargo Bank)的首席系統(tǒng)架構(gòu)師,負(fù)責(zé)各種不同的開發(fā)活動,并一直提倡提高技術(shù)水平。此前,Brian就職于Oracle公司,致力于互動電視和文本處理的新產(chǎn)品及系統(tǒng)的研發(fā)。1994年,他在一輛行駛的汽車上發(fā)出了第一封電子郵件。在此之前,Brian曾在Booz、Allen & Hamilton和Advanced Decision Systems擔(dān)任助理,并將人工智能技術(shù)應(yīng)用于軍事規(guī)劃系統(tǒng)。他還為其中的首批彈射安全頭盔式顯示系統(tǒng)編寫了軟件。 Brian在加州大學(xué)伯克利分校獲得了電子工程和計(jì)算機(jī)科學(xué)學(xué)士學(xué)位。

圖書目錄

第Ⅰ部分  基礎(chǔ)知識

第1章  什么是反應(yīng)式應(yīng)用   3

1.1  為何需要反應(yīng)式應(yīng)用   5

1.1.1  分布式計(jì)算   5

1.1.2  云計(jì)算   6

1.2  網(wǎng)上購物車:表象之下的復(fù)雜性   7

1.2.1  單體式架構(gòu):難以分布   7

1.2.2  反應(yīng)式架構(gòu):默認(rèn)就是分布式的   13

1.2.3  理解反應(yīng)式架構(gòu)   15

1.2.4  單體式購物車:創(chuàng)建訂單   17

1.2.5  事件溯源:銀行賬戶登記   19

1.2.6  反應(yīng)式購物車:使用事件溯源創(chuàng)建訂單   20

1.3  反應(yīng)式應(yīng)用能對哪些對象做出反應(yīng)   23

1.4  通過本書能學(xué)到什么   24

1.4.1  使用松耦合設(shè)計(jì)的異步通信   24

1.4.2  伸縮性   24

1.4.3  回彈性   25

1.4.4  響應(yīng)性   25

1.4.5  測試   25

1.5  本章小結(jié)   26

第2章  初識Akka   27

2.1  理解消息和參與者   28

2.1.1  從函數(shù)轉(zhuǎn)向參與者   28

2.1.2  使用參與者和消息進(jìn)行領(lǐng)域建模   30

2.1.3  定義消息   31

2.1.4  定義參與者   32

2.2  安裝示例項(xiàng)目   34

2.3  啟動參與者系統(tǒng)   36

2.3.1  創(chuàng)建驅(qū)動   37

2.3.2  運(yùn)行驅(qū)動程序   37

2.4  跨多個系統(tǒng)分布參與者   38

2.4.1  分布到兩個JVM   38

2.4.2  為遠(yuǎn)程參與者進(jìn)行配置   39

2.4.3  設(shè)置驅(qū)動程序   40

2.4.4  運(yùn)行分布式參與者   42

2.5  使用多個參與者進(jìn)行擴(kuò)展   43

2.5.1  傳統(tǒng)方案   43

2.5.2  像參與者函數(shù)那樣路由   44

2.6  創(chuàng)建參與者池   45

2.6.1  添加池路由器   46

2.6.2  運(yùn)行池化的參與者系統(tǒng)   47

2.7  使用多參與者系統(tǒng)進(jìn)行擴(kuò)展   48

2.7.1  添加分組路由器   49

2.7.2  運(yùn)行多個參與者系統(tǒng)   51

2.8  應(yīng)用反應(yīng)式原則   51

2.9  本章小結(jié)   52

第3章  理解Akka   53

3.1  Akka是什么   54

3.2 Akka現(xiàn)狀   55

3.2.1 變得可響應(yīng)   56

3.2.2  可靠地保留數(shù)據(jù)   56

3.2.3  需求越來越大的回彈性和易伸縮性   57

3.2.4  使用Spark支持大數(shù)據(jù)   58

3.3  Akka專用術(shù)語   58

3.3.1  并發(fā)和并行   58

3.3.2  異步和同步   59

3.3.3  競爭   62

3.3.4  完全無共享   63

3.4  參與者   65

3.4.1  狀態(tài)   66

3.4.2  參與者引用   66

3.4.3  異步消息傳遞   66

3.4.4  郵箱   68

3.4.5  行為和receive循環(huán)   69

3.4.6  監(jiān)管   75

3.5  參與者系統(tǒng)   76

3.5.1  層級結(jié)構(gòu)   76

3.5.2  監(jiān)管   78

3.5.3  參與者路徑   79

3.5.4  參與者生命周期   80

3.5.5  微內(nèi)核容器   81

3.6  本章小結(jié)   82

第Ⅱ部分  構(gòu)建反應(yīng)式應(yīng)用

第4章  從領(lǐng)域映射到工具集   85

4.1  基于領(lǐng)域模型進(jìn)行設(shè)計(jì)   86

4.1.1  一種更好的解決方案   86

4.1.2  從類比轉(zhuǎn)向應(yīng)用   86

4.1.3  創(chuàng)建卡片目錄   88

4.2  轉(zhuǎn)變?yōu)橄Ⅱ?qū)動   89

4.3  使用消息控制參與者狀態(tài)   91

4.3.1  向自己發(fā)送消息   91

4.3.2  使用狀態(tài)改變行為   93

4.3.3  管理更多的復(fù)雜交互   95

4.3.4  保持簡單性   99

4.3.5  運(yùn)行應(yīng)用   102

4.3.6  進(jìn)展回顧   102

4.4  增大伸縮性   103

4.4.1  Akka路由   103

4.4.2  調(diào)度器   106

4.4.3  運(yùn)行具有路由器的應(yīng)用   108

4.5  回彈性   109

4.5.1  故障的Librarian參與者   109

4.5.2  運(yùn)行故障應(yīng)用   111

4.5.3  Librarian監(jiān)管   111

4.5.4  運(yùn)行具有回彈監(jiān)管的應(yīng)用   113

4.6  本章小結(jié)   113

第5章  領(lǐng)域驅(qū)動設(shè)計(jì)   115

5.1  什么是領(lǐng)域驅(qū)動設(shè)計(jì)   116

5.1.1  大泥球   117

5.1.2  限界上下文   121

5.1.3  通用語言   122

5.1.4  實(shí)體、聚合與值對象   123

5.1.5  服務(wù)、倉儲和工廠   126

5.1.6  防腐層   128

5.1.7  分層架構(gòu)   129

5.1.8  Saga   130

5.1.9  共享內(nèi)核   130

5.2  基于參與者的領(lǐng)域   131

5.2.1  簡單的Akka航班領(lǐng)域   131

5.2.2  Aircraft參與者   132

5.2.3  Akka Process Manager   133

5.3  本章小結(jié)   135

第6章  使用遠(yuǎn)程參與者   137

6.1  重構(gòu)為分布式系統(tǒng)   138

6.1.1  劃分成多個參與者系統(tǒng)   138

6.1.2  使用sbt進(jìn)行結(jié)構(gòu)化   139

6.2  配置應(yīng)用   140

6.2.1  創(chuàng)建第一個驅(qū)動程序   141

6.2.2  引入application.conf   142

6.2.3  使用HOCON   143

6.2.4  配置應(yīng)用   144

6.3  使用Akka進(jìn)行遠(yuǎn)程通信   145

6.3.1  構(gòu)造遠(yuǎn)程引用   145

6.3.2  解析引用   146

6.3.3  在客戶端之間進(jìn)行替換   148

6.3.4  創(chuàng)建另一個驅(qū)動程序   151

6.4  運(yùn)行分布式示例   153

6.4.1  啟動Customer驅(qū)動程序   154

6.4.2  啟動RareBooks驅(qū)動程序   155

6.4.3  創(chuàng)建一些顧客   155

6.4.4  檢查結(jié)果   155

6.5  分布式系統(tǒng)中的可靠性   156

6.5.1  將可靠性作為一種設(shè)計(jì)規(guī)范   157

6.5.2  Akka提供的保障方法   159

6.6  本章小結(jié)   163

第7章  反應(yīng)式流   165

7.1  緩存過多的消息   166

7.2  使用背壓進(jìn)行防護(hù)   167

7.2.1  停止和等待   167

7.2.2  表明多條消息的信號   170

7.2.3  流的控制   171

7.3  使用Akka進(jìn)行流處理   172

7.3.1  將流添加到項(xiàng)目   173

7.3.2  從文件創(chuàng)建流的源   174

7.3.3  轉(zhuǎn)換流   175

7.3.4  將流轉(zhuǎn)換成參與者消息   176

7.3.5  小結(jié)   178

7.4  Reactive Streams介紹   179

7.4.1  創(chuàng)建反應(yīng)式流   179

7.4.2  消費(fèi)反應(yīng)式流   180

7.4.3  構(gòu)建使用流處理的應(yīng)用   181

7.5  本章小結(jié)   181

第8章  CQRS與事件溯源   183

8.1  面向CQRS/ES的驅(qū)動因素   184

8.1.1  ACID事務(wù)   184

8.1.2  傳統(tǒng)的RDBMS缺乏分片   185

8.1.3  CRUD   185

8.2  CQRS的起源:命令、查詢以及兩條不同的路徑   186

8.3  CQRS中的C   189

8.3.1  什么是命令   189

8.3.2  拒絕   190

8.3.3  原子性   190

8.3.4  雜而不精   191

8.3.5  行為的欠缺   192

8.3.6  訂單示例:訂單命令   192

8.3.7  不間斷命令驗(yàn)證   193

8.3.8  沖突解決   196

8.4  CQRS中的Q   197

8.4.1  阻抗不匹配   197

8.4.2  什么是查詢   199

8.4.3  不必動態(tài)查詢   201

8.4.4  對比SQL與NoSQL數(shù)據(jù)庫   201

8.5  事件溯源   202

8.5.1  什么是事件   202

8.5.2  所有一切都與行為有關(guān)   204

8.5.3  分布式事務(wù)之外的考慮事項(xiàng)   204

8.5.4  訂單示例   204

8.5.5  再談一致性   208

8.5.6  重試模式   209

8.5.7  對比命令溯源與事件溯源   210

8.6   本章小結(jié)   210

第9章  反應(yīng)式接口   211

9.1  什么是反應(yīng)式接口   212

9.1.1  API層   212

9.1.2  無頭API   212

9.2  表述性RESTful接口   213

9.2.1  對比JSON與XML   214

9.2.2  表述性RESTful接口URL   214

9.2.3  Location   215

9.3  選擇反應(yīng)式API庫   216

9.3.1  Play   216

9.3.2  專斷   217

9.3.3  Play應(yīng)用的結(jié)構(gòu)   217

9.3.4  簡單路由   219

9.3.5  非阻塞服務(wù)接口   220

9.4  Akka HTTP:一個簡單的CQRS式的服務(wù)   223

9.5  Lagom:訂單示例   227

9.6  Play、Akka HTTP和Lagom之間的對比   228

9.7  本章小結(jié)   229

第10章  生產(chǎn)上線準(zhǔn)備   231

10.1  測試反應(yīng)式應(yīng)用   232

10.1.1  識別測試模式   232

10.1.2  測試并發(fā)行為   233

10.2  應(yīng)用安全防護(hù)   234

10.2.1  認(rèn)識STRIDE中定義的威脅   235

10.2.2  御敵于國門之外   236

10.2.3  添加HTTPS   237

10.3  對參與者進(jìn)行日志記錄   238

10.3.1  可堆疊日志   239

10.3.2  配置日志系統(tǒng)   240

10.4  跟蹤消息   242

10.4.1  使用Dapper模式收集跟蹤數(shù)據(jù)   243

10.4.2  減少對OpenTracing的依賴   245

10.4.3  集成OpenTracing與Akka   246

10.4.4  使用Spider模式找出路徑   253

10.5  監(jiān)控反應(yīng)式應(yīng)用   254

10.5.1  使用Lightbend Monitoring監(jiān)控核心指標(biāo)   254

10.5.2  使用Kamon創(chuàng)建自定義指標(biāo)   255

10.6  應(yīng)對故障   255

10.6.1  決定要重啟的對象   256

10.6.2  路由考量   256

10.6.3  某種程度上的恢復(fù)   257

10.7  部署到云端   258

10.7.1  要素隔離   258

10.7.2  將參與者Docker化   259

10.7.3  其他打包選項(xiàng)   261

10.8  本章小結(jié)   261


本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號