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

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

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

定 價(jià):¥69.80

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

購(gòu)買(mǎi)這本書(shū)可以去


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

內(nèi)容簡(jiǎn)介

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

作者簡(jiǎn)介

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

圖書(shū)目錄

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

第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)上購(gòu)物車(chē):表象之下的復(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  單體式購(gòu)物車(chē):創(chuàng)建訂單   17

1.2.5  事件溯源:銀行賬戶(hù)登記   19

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

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

1.4  通過(guò)本書(shū)能學(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  測(cè)試   25

1.5  本章小結(jié)   26

第2章  初識(shí)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  啟動(dòng)參與者系統(tǒng)   36

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

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

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

2.4.1  分布到兩個(gè)JVM   38

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

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

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

2.5  使用多個(gè)參與者進(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)行多個(gè)參與者系統(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  需求越來(lái)越大的回彈性和易伸縮性   57

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

3.3  Akka專(zhuān)用術(shù)語(yǔ)   58

3.3.1  并發(fā)和并行   58

3.3.2  異步和同步   59

3.3.3  競(jìng)爭(zhēng)   62

3.3.4  完全無(wú)共享   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  層級(jí)結(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  從類(lèi)比轉(zhuǎn)向應(yīng)用   86

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

4.2  轉(zhuǎn)變?yōu)橄Ⅱ?qū)動(dòng)   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  保持簡(jiǎn)單性   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ū)動(dòng)設(shè)計(jì)   115

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

5.1.1  大泥球   117

5.1.2  限界上下文   121

5.1.3  通用語(yǔ)言   122

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

5.1.5  服務(wù)、倉(cāng)儲(chǔ)和工廠(chǎng)   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  簡(jiǎn)單的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  劃分成多個(gè)參與者系統(tǒng)   138

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

6.2  配置應(yīng)用   140

6.2.1  創(chuàng)建第一個(gè)驅(qū)動(dòng)程序   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  在客戶(hù)端之間進(jìn)行替換   148

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

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

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

6.4.2  啟動(dòng)RareBooks驅(qū)動(dòng)程序   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  緩存過(guò)多的消息   166

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

7.2.1  停止和等待   167

7.2.2  表明多條消息的信號(hào)   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ū)動(dòng)因素   184

8.1.1  ACID事務(wù)   184

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

8.1.3  CRUD   185

8.2  CQRS的起源:命令、查詢(xún)以及兩條不同的路徑   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  什么是查詢(xún)   199

8.4.3  不必動(dòng)態(tài)查詢(xún)   201

8.4.4  對(duì)比SQL與NoSQL數(shù)據(jù)庫(kù)   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  對(duì)比命令溯源與事件溯源   210

8.6   本章小結(jié)   210

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

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

9.1.1  API層   212

9.1.2  無(wú)頭API   212

9.2  表述性RESTful接口   213

9.2.1  對(duì)比JSON與XML   214

9.2.2  表述性RESTful接口URL   214

9.2.3  Location   215

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

9.3.1  Play   216

9.3.2  專(zhuān)斷   217

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

9.3.4  簡(jiǎn)單路由   219

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

9.4  Akka HTTP:一個(gè)簡(jiǎn)單的CQRS式的服務(wù)   223

9.5  Lagom:訂單示例   227

9.6  Play、Akka HTTP和Lagom之間的對(duì)比   228

9.7  本章小結(jié)   229

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

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

10.1.1  識(shí)別測(cè)試模式   232

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

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

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

10.2.2  御敵于國(guó)門(mén)之外   236

10.2.3  添加HTTPS   237

10.3  對(duì)參與者進(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  減少對(duì)OpenTracing的依賴(lài)   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)對(duì)故障   255

10.6.1  決定要重啟的對(duì)象   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 ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)