注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)家庭與辦公軟件微服務(wù)架構(gòu)設(shè)計(jì)模式

微服務(wù)架構(gòu)設(shè)計(jì)模式

微服務(wù)架構(gòu)設(shè)計(jì)模式

定 價(jià):¥139.00

作 者: [美] 克里斯·理查森(Chris Richardson) 著,喻勇 譯
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng): 架構(gòu)師書庫
標(biāo) 簽: 暫缺

ISBN: 9787111624127 出版時(shí)間: 2019-05-01 包裝: 平裝
開本: 16開 頁數(shù): 455 字?jǐn)?shù):  

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

  成功地開發(fā)基于微服務(wù)架構(gòu)的應(yīng)用軟件,需要掌握一系列全新的架構(gòu)思想和實(shí)踐。在這本獨(dú)特的書籍中,微服務(wù)架構(gòu)的先驅(qū)、Java開發(fā)者社區(qū)的意見領(lǐng)袖ChrisRichardson收集、分類并解釋了44個(gè)架構(gòu)設(shè)計(jì)模式,這些模式用來解決諸如服務(wù)拆分、事務(wù)管理、查詢和跨服務(wù)通信等難題。本書將教會(huì)你如何開發(fā)和部署生產(chǎn)級(jí)別的微服務(wù)架構(gòu)應(yīng)用。這套寶貴的架構(gòu)設(shè)計(jì)模式建立在數(shù)十年的分布式系統(tǒng)經(jīng)驗(yàn)之上,Chris還為開發(fā)服務(wù)添加了新的模式,并將它們組合成可在真實(shí)條件下可靠地?cái)U(kuò)展和執(zhí)行的系統(tǒng)。本書不僅僅是一個(gè)模式目錄,還提供了經(jīng)驗(yàn)驅(qū)動(dòng)的建議,以幫助你設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試和部署基于微服務(wù)的應(yīng)用程序。 本書包含: 如何(以及為什么)使用微服務(wù)架構(gòu) 服務(wù)拆分的策略 事務(wù)管理和查詢相關(guān)的模式 高效的測(cè)試策略 包括容器和Serverless在內(nèi)的部署模式本書專為熟悉標(biāo)準(zhǔn)企業(yè)應(yīng)用程序架構(gòu)的開發(fā)人員編寫,使用Java編寫所有示例代碼。

作者簡(jiǎn)介

  克里斯?理查森(ChrisRichardson) 世界著名的軟件大師,《POJOS in Action》等技術(shù)名著的作者,也是著名開源項(xiàng)目 Cloud Foundry 和 Eventuate 的創(chuàng)始人。他的研究領(lǐng)域包括微服務(wù)架構(gòu)設(shè)計(jì)、分布式數(shù)據(jù)管理、事件驅(qū)動(dòng)的應(yīng)用架構(gòu)、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)、持續(xù)交付、Spring 框架、Scala、NoSQL 數(shù)據(jù)庫等。喻勇 在技術(shù)圈馳騁多年,曾擔(dān)任過微軟技術(shù)布道師,VMwareCloudFoundry生態(tài)建設(shè)負(fù)責(zé)人,并有幸引領(lǐng)了國(guó)內(nèi)容器技術(shù)的創(chuàng)業(yè)浪潮。目前定居加拿大,關(guān)注微服務(wù)架構(gòu)、云原生應(yīng)用等領(lǐng)域。Chris與喻勇曾在VMware全球開發(fā)者關(guān)系團(tuán)隊(duì)共事多年,現(xiàn)在他們合作為國(guó)內(nèi)企業(yè)客戶提供微服務(wù)相關(guān)的咨詢和培訓(xùn)服務(wù),他們的中文網(wǎng)站是:www.chrisrichardson.cn

圖書目錄

目錄
寫給中文版讀者的話
譯者序
中文版序一
中文版序二
前言
引言
第1章逃離單體地獄/1
1.1邁向單體地獄的漫長(zhǎng)旅程/2
1.1.1FTGO應(yīng)用程序的架構(gòu)/3
1.1.2單體架構(gòu)的好處/4
1.1.3什么是單體地獄/4
1.2為什么本書與你有關(guān)/7
1.3你會(huì)在本書中學(xué)到什么/8
1.4拯救之道:微服務(wù)架構(gòu)/8
1.4.1擴(kuò)展立方體和服務(wù)/9
1.4.2微服務(wù)架構(gòu)作為模塊化的一種形式/11
1.4.3每個(gè)服務(wù)都擁有自己的數(shù)據(jù)庫/12
1.4.4FTGO的微服務(wù)架構(gòu)/12
1.4.5微服務(wù)架構(gòu)與SOA的異同/14
1.5微服務(wù)架構(gòu)的好處和弊端/15
1.5.1微服務(wù)架構(gòu)的好處/15
1.5.2微服務(wù)架構(gòu)的弊端/17
1.6微服務(wù)架構(gòu)的模式語言/19
1.6.1微服務(wù)架構(gòu)并不是“銀彈”/20
1.6.2模式和模式語言/21
1.6.3微服務(wù)架構(gòu)的模式語言概述/24
1.7微服務(wù)之上:流程和組織/29
1.7.1進(jìn)行軟件開發(fā)和交付的組織/30
1.7.2進(jìn)行軟件開發(fā)和交付的流程/31
1.7.3采用微服務(wù)架構(gòu)時(shí)的人為因素/32
第2章服務(wù)的拆分策略/34
2.1微服務(wù)架構(gòu)到底是什么/35
2.1.1軟件架構(gòu)是什么,為什么它如此重要/35
2.1.2什么是架構(gòu)的風(fēng)格/37
2.1.3微服務(wù)架構(gòu)是一種架構(gòu)風(fēng)格/40
2.2為應(yīng)用程序定義微服務(wù)架構(gòu)/43
2.2.1識(shí)別系統(tǒng)操作/45
2.2.2根據(jù)業(yè)務(wù)能力進(jìn)行服務(wù)拆分/50
2.2.3根據(jù)子域進(jìn)行服務(wù)拆分/53
2.2.4拆分的指導(dǎo)原則/54
2.2.5拆分單體應(yīng)用為服務(wù)的難點(diǎn)/56
2.2.6定義服務(wù)API/59
第3章微服務(wù)架構(gòu)中的進(jìn)程間通信/63
3.1微服務(wù)架構(gòu)中的進(jìn)程間通信概述/64
3.1.1交互方式/64
3.1.2在微服務(wù)架構(gòu)中定義API/66
3.1.3API的演化/67
3.1.4消息的格式/69
3.2基于同步遠(yuǎn)程過程調(diào)用模式的通信/70
3.2.1使用REST/71
3.2.2使用gRPC/74
3.2.3使用斷路器模式處理局部故障/75
3.2.4使用服務(wù)發(fā)現(xiàn)/78
3.3基于異步消息模式的通信/82
3.3.1什么是消息傳遞/83
3.3.2使用消息機(jī)制實(shí)現(xiàn)交互方式/84
3.3.3為基于消息機(jī)制的服務(wù)API創(chuàng)建API規(guī)范/86
3.3.4使用消息代理/87
3.3.5處理并發(fā)和消息順序/91
3.3.6處理重復(fù)消息/92
3.3.7事務(wù)性消息/93
3.3.8消息相關(guān)的類庫和框架/97
3.4使用異步消息提高可用性/99
3.4.1同步消息會(huì)降低可用性/99
3.4.2消除同步交互/101
第4章使用Saga管理事務(wù)/106
4.1微服務(wù)架構(gòu)下的事務(wù)管理/107
4.1.1微服務(wù)架構(gòu)對(duì)分布式事務(wù)的需求/108
4.1.2分布式事務(wù)的挑戰(zhàn)/109
4.1.3使用Saga模式維護(hù)數(shù)據(jù)一致性/109
4.2Saga的協(xié)調(diào)模式/113
4.2.1協(xié)同式Saga/113
4.2.2編排式Saga/117
4.3解決隔離問題/121
4.3.1缺乏隔離導(dǎo)致的問題/122
4.3.2Saga模式下實(shí)現(xiàn)隔離的對(duì)策/123
4.4OrderService和CreateOrderSaga的設(shè)計(jì)/127
4.4.1OrderService類/128
4.4.2CreateOrderSaga的實(shí)現(xiàn)/129
4.4.3OrderCommandHandlers類/136
4.4.4OrderServiceConfiguration類/138
第5章微服務(wù)架構(gòu)中的業(yè)務(wù)邏輯設(shè)計(jì)/141
5.1業(yè)務(wù)邏輯組織模式/142
5.1.1使用事務(wù)腳本模式設(shè)計(jì)業(yè)務(wù)邏輯/143
5.1.2使用領(lǐng)域模型模式設(shè)計(jì)業(yè)務(wù)邏輯/144
5.1.3關(guān)于領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)/146
5.2使用聚合模式設(shè)計(jì)領(lǐng)域模型/146
5.2.1模糊邊界所帶來的問題/147
5.2.2聚合擁有明確的邊界/149
5.2.3聚合的規(guī)則/150
5.2.4聚合的顆粒度/152
5.2.5使用聚合設(shè)計(jì)業(yè)務(wù)邏輯/153
5.3發(fā)布領(lǐng)域事件/154
5.3.1為什么需要發(fā)布變更事件/154
5.3.2什么是領(lǐng)域事件/155
5.3.3事件增強(qiáng)/155
5.3.4識(shí)別領(lǐng)域事件/156
5.3.5生成和發(fā)布領(lǐng)域事件/157
5.3.6消費(fèi)領(lǐng)域事件/161
5.4KitchenService的業(yè)務(wù)邏輯/162
5.5OrderService的業(yè)務(wù)邏輯/167
5.5.1Order聚合/169
5.5.2OrderService類/173
第6章使用事件溯源開發(fā)業(yè)務(wù)邏輯/176
6.1使用事件溯源開發(fā)業(yè)務(wù)邏輯概述/177
6.1.1傳統(tǒng)持久化技術(shù)的問題/177
6.1.2什么是事件溯源/179
6.1.3使用樂觀鎖處理并發(fā)更新/186
6.1.4事件溯源和發(fā)布事件/186
6.1.5使用快照提升性能/188
6.1.6冪等方式的消息處理/189
6.1.7領(lǐng)域事件的演化/190
6.1.8事件溯源的好處/192
6.1.9事件溯源的弊端/193
6.2實(shí)現(xiàn)事件存儲(chǔ)庫/194
6.2.1EventuateLocal事件存儲(chǔ)庫的工作原理/195
6.2.2Eventuate的Java客戶端框架/198
6.3同時(shí)使用Saga和事件溯源/201
6.3.1使用事件溯源實(shí)現(xiàn)協(xié)同式Saga/203
6.3.2創(chuàng)建編排式Saga/203
6.3.3實(shí)現(xiàn)基于事件溯源的Saga參與方/205
6.3.4實(shí)現(xiàn)基于事件溯源的Saga編排器/208
第7章在微服務(wù)架構(gòu)中實(shí)現(xiàn)查詢/212
7.1使用API組合模式進(jìn)行查詢/213
7.1.1findOrder()查詢操作/213
7.1.2什么是API組合模式/214
7.1.3使用API組合模式實(shí)現(xiàn)findOrder()查詢操作/215
7.1.4API組合模式的設(shè)計(jì)缺陷/216
7.1.5API組合模式的好處和弊端/219
7.2使用CQRS模式/220
7.2.1為什么要使用CQRS/220
7.2.2什么是CQRS/223
7.2.3CQRS的好處/226
7.2.4CQRS的弊端/227
7.3設(shè)計(jì)CQRS視圖/228
7.3.1選擇視圖存儲(chǔ)庫/229
7.3.2設(shè)計(jì)數(shù)據(jù)訪問模塊/230
7.3.3添加和更新CQRS視圖/232
7.4實(shí)現(xiàn)基于AWSDynamoDB的CQRS視圖/233
7.4.1OrderHistoryEventHandlers模塊/234
7.4.2DynamoDB中的數(shù)據(jù)建模和查詢?cè)O(shè)計(jì)/235
7.4.3OrderHistoryDaoDynamoDb類/239
第8章外部API模式/244
8.1外部API的設(shè)計(jì)難題/245
8.1.1FTGO移動(dòng)客戶端API的設(shè)計(jì)難題/246
8.1.2其他類型客戶端API的設(shè)計(jì)難題/248
8.2APIGateway模式/250
8.2.1什么是APIGateway模式/250
8.2.2APIGateway模式的好處和弊端/256
8.2.3以Netflix為例的APIGateway/257
8.2.4APIGateway的設(shè)計(jì)難題/258
8.3實(shí)現(xiàn)一個(gè)APIGateway/260
8.3.1使用現(xiàn)成的APIGateway產(chǎn)品或服務(wù)/261
8.3.2開發(fā)自己的APIGateway/262
8.3.3使用GraphQL實(shí)現(xiàn)APIGateway/269
第9章微服務(wù)架構(gòu)中的測(cè)試策略(上)/282
9.1微服務(wù)架構(gòu)中的測(cè)試策略概述/284
9.1.1什么是測(cè)試/284
9.1.2微服務(wù)架構(gòu)中的測(cè)試挑戰(zhàn)/289
9.1.3部署流水線/295
9.2為服務(wù)編寫單元測(cè)試/296
9.2.1為實(shí)體編寫單元測(cè)試/298
9.2.2為值對(duì)象編寫單元測(cè)試/299
9.2.3為Saga編寫單元測(cè)試/300
9.2.4為領(lǐng)域服務(wù)編寫單元測(cè)試/302
9.2.5為控制器編寫單元測(cè)試/303
9.2.6為事件和消息處理程序編寫單元測(cè)試/305
第10章微服務(wù)架構(gòu)中的測(cè)試策略(下)/308
10.1編寫集成測(cè)試/308
10.1.1針對(duì)持久化層的集成測(cè)試/311
10.1.2針對(duì)基于REST的請(qǐng)求/響應(yīng)式交互的集成測(cè)試/312
10.1.3針對(duì)發(fā)布/訂閱式交互的集成測(cè)試/316
10.1.4針對(duì)異步請(qǐng)求/響應(yīng)式交互的集成契約測(cè)試/320
10.2編寫組件測(cè)試/324
10.2.1定義驗(yàn)收測(cè)試/325
10.2.2使用Gherkin編寫驗(yàn)收測(cè)試/326
10.2.3設(shè)計(jì)組件測(cè)試/328
10.2.4為FTGO的OrderService編寫組件測(cè)試/330
10.3端到端測(cè)試/334
10.3.1設(shè)計(jì)端到端測(cè)試/335
10.3.2編寫端到端測(cè)試/335
10.3.3運(yùn)行端到端測(cè)試/336
第11章開發(fā)面向生產(chǎn)環(huán)境的微服務(wù)應(yīng)用/338
11.1開發(fā)安全的服務(wù)/339
11.1.1傳統(tǒng)單體應(yīng)用程序的安全性/340
11.1.2在微服務(wù)架構(gòu)中實(shí)現(xiàn)安全性/343
11.2設(shè)計(jì)可配置的服務(wù)/349
11.2.1使用基于推送的外部化配置/350
11.2.2使用基于拉取的外部化配置/352
11.3設(shè)計(jì)可觀測(cè)的服務(wù)/353
11.3.1使用健康檢查API模式/355
11.3.2使用日志聚合模式/357
11.3.3使用分布式追蹤模式/358
11.3.4使用應(yīng)用程序指標(biāo)模式/361
11.3.5使用異常追蹤模式/364
11.3.6使用審計(jì)日志模式/365
11.4使用微服務(wù)基底模式開發(fā)服務(wù)/367
11.4.1使用微服務(wù)基底/368
11.4.2從微服務(wù)基底到服務(wù)網(wǎng)格/368
第12章部署微服務(wù)應(yīng)用/371
12.1部署模式:編程語言特定的發(fā)布包格式/374
12.1.1使用編程語言特定的發(fā)布包格式進(jìn)行部署的好處/376
12.1.2使用編程語言特定的發(fā)布包格式進(jìn)行部署的弊端/377
12.2部署模式:將服務(wù)部署為虛擬機(jī)/378
12.2.1將服務(wù)部署為虛擬機(jī)的好處/380
12.2.2將服務(wù)部署為虛擬機(jī)的弊端/380
12.3部署模式:將服務(wù)部署為容器/381
12.3.1使用Docker部署服務(wù)/383
12.3.2將服務(wù)部署為容器的好處/385
12.3.3將服務(wù)部署為容器的弊端/386
12.4使用Kubernetes部署FTGO應(yīng)用程序/386
12.4.1什么是Kubernetes/386
12.4.2在Kubernetes上部署RestaurantService/389
12.4.3部署APIGateway/392
12.4.4零停機(jī)部署/393
12.4.5使用服務(wù)網(wǎng)格分隔部署與發(fā)布流程/394
12.5部署模式:Serverless部署/402
12.5.1使用AWSLambda進(jìn)行Serverless部署/403
12.5.2開發(fā)Lambda函數(shù)/404
12.5.3調(diào)用Lambda函數(shù)/404
12.5.4使用Lambda函數(shù)的好處/405
12.5.5使用Lambda函數(shù)的弊端/406
12.6使用AWSLambda和AWSGateway部署RESTful服務(wù)/406
12.6.1AWSLambda版本的RestaurantService/407
12.6.2把服務(wù)打包為ZIP文件/411
12.6.3使用Serverless框架部署Lambda函數(shù)/412
第13章微服務(wù)架構(gòu)的重構(gòu)策略/415
13.1重構(gòu)到微服務(wù)需要考慮的問題/416
13.1.1為什么要重構(gòu)單體應(yīng)用/416
13.1.2絞殺單體應(yīng)用/417
13.2將單體應(yīng)用重構(gòu)為微服務(wù)架構(gòu)的若干策略/420
13.2.1將新功能實(shí)現(xiàn)為服務(wù)/420
13.2.2隔離表現(xiàn)層與后端/422
13.2.3提取業(yè)務(wù)能力到服務(wù)中/423
13.3設(shè)計(jì)服務(wù)與單體的協(xié)作方式/429
13.3.1設(shè)計(jì)集成膠水/430
13.3.2在服務(wù)和單體之間維持?jǐn)?shù)據(jù)一致性/434
13.3.3處理身份驗(yàn)證和訪問授權(quán)/438
13.4將新功能實(shí)現(xiàn)為服務(wù):處理錯(cuò)誤配送訂單/440
13.4.1DelayedDeliveryService的設(shè)計(jì)/441
13.4.2為DelayedDeliveryService設(shè)計(jì)集成膠水/442
13.5從單體中提取送餐管理功能/444
13.5.1現(xiàn)有的送餐管理功能/444
13.5.2DeliveryService概覽/446
13.5.3設(shè)計(jì)DeliveryService的領(lǐng)域模型/447
13.5.4DeliveryService集成膠水的設(shè)計(jì)/450
13.5.5修改FTGO單體使其能夠與DeliveryService交互/451
......

本目錄推薦

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