Movatterモバイル変換


[0]ホーム

URL:


登录/注册
下载豆瓣客户端
豆瓣6.0 全新发布×

豆瓣

扫码直接下载

iPhone·Android
豆瓣读书
搜索:

微服务设计

微服务设计
作者:[英] Sam Newman
出版社:人民邮电出版社
译者:崔力强 /张骏
出版年: 2016-5
页数: 228
定价: 69.00元
装帧: 平装
丛书: 图灵程序设计丛书
ISBN: 9787115420268
豆瓣评分
5星
29.6%
4星
49.7%
3星
17.8%
2星
2.1%
1星
0.8%
评价:

内容简介  · · · · · ·

本书全面介绍了微服务的建模、集成、测试、部署和监控,通过一个虚构的公司讲解了如何建立微服务架构。主要内容包括认识微服务在保证系统设计与组织目标统一上的重要性,学会把服务集成到已有系统中,采用递增手段拆分单块大型应用,通过持续集成部署微服务,等等。

作者简介  · · · · · ·

作者简介:

Sam Newman

是ThoughtWorks公司的技术专家、ThoughtWorks内部系统架构师,同时还为全球的客户提供咨询服务。他在开发和IT运维方面与全球多个领域的公司有过合作。

译者简介:

崔力强

阿里巴巴技术专家,目前专注于持续交付相关的产品开发。曾在ThoughtWorks任职多年,从事软件定制开发、敏捷软件开发的相关咨询等工作,帮助过数个团队和项目进行精益需求管理、软件设计、自动化测试和持续集成等实践。微信号:blade_1986

张骏

2010年加入ThoughtWorks公司。作为开发人员、项目经理、资深敏捷教练和资深咨询师,在金融、电信和能源服务行业的大型复杂业务系统的设计、开发、管理、咨询等方面有丰富的经验。曾为国内外诸多客户提供软件设计、开发以及咨询服务。拥有10年工作经验,在Scrum、看板、规模化敏捷等方法...

(展开全部)

作者简介:

Sam Newman

是ThoughtWorks公司的技术专家、ThoughtWorks内部系统架构师,同时还为全球的客户提供咨询服务。他在开发和IT运维方面与全球多个领域的公司有过合作。

译者简介:

崔力强

阿里巴巴技术专家,目前专注于持续交付相关的产品开发。曾在ThoughtWorks任职多年,从事软件定制开发、敏捷软件开发的相关咨询等工作,帮助过数个团队和项目进行精益需求管理、软件设计、自动化测试和持续集成等实践。微信号:blade_1986

张骏

2010年加入ThoughtWorks公司。作为开发人员、项目经理、资深敏捷教练和资深咨询师,在金融、电信和能源服务行业的大型复杂业务系统的设计、开发、管理、咨询等方面有丰富的经验。曾为国内外诸多客户提供软件设计、开发以及咨询服务。拥有10年工作经验,在Scrum、看板、规模化敏捷等方法论,以及精益需求管理、自动化测试、持续集成、领域驱动设计、微服务等具体实践方面都有丰富的积累。微信号:zhangjun695339

目录  · · · · · ·

前言  xiv
第1章 微服务  1
1.1 什么是微服务  2
1.1.1 很小,专注于做好一件事  2
1.1.2 自治性  3
1.2 主要好处  3
· · · · · · (更多)
前言  xiv
第1章 微服务  1
1.1 什么是微服务  2
1.1.1 很小,专注于做好一件事  2
1.1.2 自治性  3
1.2 主要好处  3
1.2.1 技术异构性  3
1.2.2 弹性  4
1.2.3 扩展  5
1.2.4 简化部署  5
1.2.5 与组织结构相匹配  6
1.2.6 可组合性  6
1.2.7 对可替代性的优化  6
1.3 面向服务的架构  7
1.4 其他分解技术  7
1.4.1 共享库  8
1.4.2 模块  8
1.5 没有银弹  9
1.6 小结  10
第2章 演化式架构师  11
2.1 不准确的比较  11
2.2 架构师的演化视角  12
2.3 分区  14
2.4 一个原则性的方法  15
2.4.1 战略目标  15
2.4.2 原则  15
2.4.3 实践  16
2.4.4 将原则和实践相结合  16
2.4.5 真实世界的例子  16
2.5 要求的标准  17
2.5.1 监控  18
2.5.2 接口  18
2.5.3 架构安全性  18
2.6 代码治理  18
2.6.1 范例  19
2.6.2 裁剪服务代码模板  19
2.7 技术债务  20
2.8 例外管理  21
2.9 集中治理和领导  21
2.10 建设团队  22
2.11 小结  23
第3章 如何建模服务  24
3.1 MusicCorp简介  24
3.2 什么样的服务是好服务  25
3.2.1 松耦合  25
3.2.2 高内聚  25
3.3 限界上下文  26
3.3.1 共享的隐藏模型  26
3.3.2 模块和服务  27
3.3.3 过早划分  28
3.4 业务功能  28
3.5 逐步划分上下文  29
3.6 关于业务概念的沟通  30
3.7 技术边界  30
3.8 小结  31
第4章 集成  32
4.1 寻找理想的集成技术  32
4.1.1 避免破坏性修改  32
4.1.2 保证API的技术无关性  32
4.1.3 使你的服务易于消费方使用  33
4.1.4 隐藏内部实现细节  33
4.2 为用户创建接口  33
4.3 共享数据库  33
4.4 同步与异步  35
4.5 编排与协同  35
4.6 远程过程调用  38
4.6.1 技术的耦合  38
4.6.2 本地调用和远程调用并不相同  39
4.6.3 脆弱性  39
4.6.4 RPC很糟糕吗  40
4.7 REST  41
4.7.1 REST和HTTP  41
4.7.2 超媒体作为程序状态的引擎  42
4.7.3 JSON、XML还是其他  44
4.7.4 留心过多的约定  44
4.7.5 基于HTTP的REST的缺点  45
4.8 实现基于事件的异步协作方式  46
4.8.1 技术选择  46
4.8.2 异步架构的复杂性  47
4.9 服务即状态机  48
4.10 响应式扩展  48
4.11 微服务世界中的DRY和代码重用的危险  49
4.12 按引用访问  50
4.13 版本管理  51
4.13.1 尽可能推迟  51
4.13.2 及早发现破坏性修改  52
4.13.3 使用语义化的版本管理  53
4.13.4 不同的接口共存  53
4.13.5 同时使用多个版本的服务  54
4.14 用户界面  55
4.14.1 走向数字化  56
4.14.2 约束  56
4.14.3 API组合  57
4.14.4 UI片段的组合  57
4.14.5 为前端服务的后端  59
4.14.6 一种混合方式  60
4.15 与第三方软件集成  61
4.15.1 缺乏控制  61
4.15.2 定制化  62
4.15.3 意大利面式的集成  62
4.15.4 在自己可控的平台进行定制化  62
4.15.5 绞杀者模式  64
4.16 小结  65
第5章 分解单块系统  66
5.1 关键是接缝  66
5.2 分解MusicCorp  67
5.3 分解单块系统的原因  68
5.3.1 改变的速度  68
5.3.2 团队结构  68
5.3.3 安全  68
5.3.4 技术  68
5.4 杂乱的依赖  69
5.5 数据库  69
5.6 找到问题的关键  69
5.7 例子:打破外键关系  70
5.8 例子:共享静态数据  71
5.9 例子:共享数据  72
5.10 例子:共享表  73
5.11 重构数据库  74
5.12 事务边界  75
5.12.1 再试一次  76
5.12.2 终止整个操作  77
5.12.3 分布式事务  77
5.12.4 应该怎么办呢  78
5.13 报告  78
5.14 报告数据库  78
5.15 通过服务调用来获取数据  80
5.16 数据导出  81
5.17 事件数据导出  82
5.18 数据导出的备份  83
5.19 走向实时  84
5.20 修改的代价  84
5.21 理解根本原因  84
5.22 小结  85
第6章 部署  86
6.1 持续集成简介  86
6.2 把持续集成映射到微服务  87
6.3 构建流水线和持续交付  90
6.4 平台特定的构建物  91
6.5 操作系统构建物  92
6.6 定制化镜像  93
6.6.1 将镜像作为构建物  94
6.6.2 不可变服务器  95
6.7 环境  95
6.8 服务配置  96
6.9 服务与主机之间的映射  97
6.9.1 单主机多服务  97
6.9.2 应用程序容器  99
6.9.3 每个主机一个服务  100
6.9.4 平台即服务  101
6.10 自动化  101
6.11 从物理机到虚拟机  102
6.11.1 传统的虚拟化技术  103
6.11.2 Vagrant  104
6.11.3 Linux容器  104
6.11.4 Docker  106
6.12 一个部署接口  107
6.13 小结  109
第7章 测试  110
7.1 测试类型  110
7.2 测试范围  111
7.2.1 单元测试  112
7.2.2 服务测试  113
7.2.3 端到端测试  114
7.2.4 权衡  114
7.2.5 比例  115
7.3 实现服务测试  115
7.3.1 mock还是打桩  115
7.3.2 智能的打桩服务  116
7.4 微妙的端到端测试  117
7.5 端到端测试的缺点  118
7.6 脆弱的测试  118
7.6.1 谁来写这些测试  119
7.6.2 测试多长时间  119
7.6.3 大量的堆积  120
7.6.4 元版本  120
7.7 测试场景,而不是故事  121
7.8 拯救消费者驱动的测试  121
7.8.1 Pact  123
7.8.2 关于沟通  124
7.9 还应该使用端到端测试吗  124
7.10 部署后再测试  125
7.10.1 区分部署和上线  125
7.10.2 金丝雀发布  126
7.10.3 平均修复时间胜过平均故障间隔时间  127
7.11 跨功能的测试  128
7.12 小结  129
第8章 监控  131
8.1 单一服务,单一服务器  132
8.2 单一服务,多个服务器  132
8.3 多个服务,多个服务器  133
8.4 日志,日志,更多的日志  134
8.5 多个服务的指标跟踪  135
8.6 服务指标  135
8.7 综合监控  136
8.8 关联标识  137
8.9 级联  139
8.10 标准化  139
8.11 考虑受众  140
8.12 未来  140
8.13 小结  141
第9章 安全  143
9.1 身份验证和授权  143
9.1.1 常见的单点登录实现  144
9.1.2 单点登录网关  145
9.1.3 细粒度的授权  146
9.2 服务间的身份验证和授权  146
9.2.1 在边界内允许一切  146
9.2.2 HTTP(S) 基本身份验证  147
9.2.3 使用SAML或OpenID Connect  148
9.2.4 客户端证书  148
9.2.5 HTTP之上的HMAC  149
9.2.6 API密钥  149
9.2.7 代理问题  150
9.3 静态数据的安全  152
9.3.1 使用众所周知的加密算法  152
9.3.2 一切皆与密钥相关  153
9.3.3 选择你的目标  153
9.3.4 按需解密  153
9.3.5 加密备份  153
9.4 深度防御  154
9.4.1 防火墙  154
9.4.2 日志  154
9.4.3 入侵检测(和预防)系统  154
9.4.4 网络隔离  155
9.4.5 操作系统  155
9.5 一个示例  156
9.6 保持节俭  158
9.7 人的因素  158
9.8 黄金法则  158
9.9 内建安全  159
9.10 外部验证  159
9.11 小结  159
第10章 康威定律和系统设计  161
10.1 证据  161
10.1.1 松耦合组织和紧耦合组织  162
10.1.2 Windows Vista  162
10.2 Netflix和Amazon  162
10.3 我们可以做什么  163
10.4 适应沟通途径  163
10.5 服务所有权  164
10.6 共享服务的原因  164
10.6.1 难以分割  164
10.6.2 特性团队  164
10.6.3 交付瓶颈  165
10.7 内部开源  166
10.7.1 守护者的角色  166
10.7.2 成熟  166
10.7.3 工具  167
10.8 限界上下文和团队结构  167
10.9 孤儿服务  167
10.10 案例研究:RealEstate.com.au  168
10.11 反向的康威定律  169
10.12 人  170
10.13 小结  170
第11章 规模化微服务  171
11.1 故障无处不在  171
11.2 多少是太多  172
11.3 功能降级  173
11.4 架构性安全措施  174
11.5 反脆弱的组织  175
11.5.1 超时  176
11.5.2 断路器  176
11.5.3 舱壁  178
11.5.4 隔离  179
11.6 幂等  179
11.7 扩展  180
11.7.1 更强大的主机  181
11.7.2 拆分负载  181
11.7.3 分散风险  181
11.7.4 负载均衡  182
11.7.5 基于worker的系统  184
11.7.6 重新设计  184
11.8 扩展数据库  185
11.8.1 服务的可用性和数据的持久性  185
11.8.2 扩展读取  185
11.8.3 扩展写操作  186
11.8.4 共享数据库基础设施  187
11.8.5 CQRS  187
11.9 缓存  188
11.9.1 客户端、 代理和服务器端缓存  188
11.9.2 HTTP缓存  189
11.9.3 为写使用缓存  190
11.9.4 为弹性使用缓存  190
11.9.5 隐藏源服务  191
11.9.6 保持简单  191
11.9.7 缓存中毒:一个警示  192
11.10 自动伸缩  192
11.11 CAP定理  193
11.11.1 牺牲一致性  194
11.11.2 牺牲可用性  195
11.11.3 牺牲分区容忍性  195
11.11.4 AP还是CP  196
11.11.5 这不是全部或全不  196
11.11.6 真实世界  197
11.12 服务发现  197
11.13 动态服务注册  199
11.13.1 Zookeeper  199
11.13.2 Consul  200
11.13.4 构造你自己的系统  201
11.13.5 别忘了人  201
11.14 文档服务  201
11.14.1 Swagger  202
11.14.2 HAL 和HAL浏览器  202
11.15 自描述系统  203
11.16 小结  203
第12章 总结  204
12.1 微服务的原则  204
12.1.1 围绕业务概念建模  205
12.1.2 接受自动化文化  205
12.1.3 隐藏内部实现细节  205
12.1.4 让一切都去中心化  206
12.1.5 可独立部署  206
12.1.6 隔离失败  206
12.1.7 高度可观察  207
12.2 什么时候你不应该使用微服务  207
12.3 临别赠言  208
关于作者  209
关于封面  209
· · · · · · (收起)

"微服务设计"试读  · · · · · ·

多年以来,我们一直在寻找更好的方法来构建应用系统。我们一直在学习已有的技术,尝试新技术,也目睹过不少新兴技术公司使用不同的方式来构建IT 应用系统,从而提高了客户满意度和开发效率。Eric Evans 的《领域驱动设计》一书帮助我们理解了用代码呈现真实世界的重要性,并且告诉我们如何更好地进行建模。持续交付理论告诉我们如何更有效及更高效地发布软件产品,并指出保持每次提交...

· · · · · · (查看全部试读)

原文摘录   · · · · · · (全部 )

  • 聚在一起,就如何做事情达成共识是一个好主意。但是,花时间保证人们按照这个共识来做事情就没那么有趣了,因为在各个服务中使用这些标准做法会成为开发人员的负担。我坚信应该使用简单的方式把事情做对。我见过比较奏效的两种方式是,提供范例和服务代码模板。 (查看原文)
    红色有角F叔2016-06-09 11:49:40
    —— 引自章节:代码治理
  • 编写文档是有用的,... 但是开发人员更喜欢可以查看和运行的代码。创建服务代码模板不是某个中心化工具的职责,也不是指导我们应怎样工作的架构团队的职责。应该通过合作的方式定义出这些实践,所以你的团队也需要负责更新这个模板。我也见过一个团队的士气和生产力是如何被强制使用的框架给毁掉的。基于代码重用的目的,越来越多的功能被加入到一个中心化的框架中,直到把这个框架变成一个不堪重负的怪兽。你还需要知道,重用代码可能引入的危险。在重用代码的驱动下,我们可能会引入服务之间的耦合。... 一些我接触过的团队,把服务代码模板简单地做成了一个共享的库依赖,这时他们就要非常小心地防止对 DRY 的追求导致系统过度耦合。 (查看原文)
    红色有角F叔2016-06-09 11:49:40
    —— 引自章节:代码治理

>全部原文摘录

丛书信息  · · · · · ·

  图灵程序设计丛书(共112册),这套丛书还有《大师谈游戏设计》《实用Common Lisp编程》《深度学习入门》《Erlang/OTP并发编程实战》《白话深度学习的数学》等。

喜欢读"微服务设计"的人也喜欢的电子书  · · · · · ·

支持 Web、iPhone、iPad、Android 阅读器
我来说两句

短评  · · · · · · (全部 365 条 )

我要写书评

微服务设计的书评 · · · · · ·(全部 22 条 )

juvenxu2016-06-26 22:32:03

什么时候你不应该使用微服务

最近几年我一直在微服务相关的工作,编码、学习模式、寻找并使用开源工具,到大会做分享…… 这本《微服务设计》我读起来还是有很多比较切身的感触的,这里记录下。 首先这本书最后一章有一段说的特别好,“你越不了解一个领域,为服务找到合适的界限上下文就越难……服务的界...  (展开)
Asura2017-11-11 14:15:04

微服务改造——拥有技术信仰团队的系统级重构

当PaaS(Platform as a service)已不是什么新鲜名词的时代,我们每天面对这各种各样的新兴技术名词,哪怕作为一名所谓的业内人士,我已然清晰地记得当2017年初的某个初晨,工位隔壁的同事兴奋地对我说“Hi,Bill 听说北京团队开始做FaaS了”时自己的一脸懵逼,心里暗想什么是F...  (展开)
小池·水2016-04-24 15:37:08

组织架构和工程架构

> 如果你有四个小组开发编译器,那么你会得到一个四步编译器。 这是《新黑客字典》的说法。 另一种更学术化的说法是: > 任何组织在设计一套系统(广义概念上的系统)时,所交付的设计方案在结构上都与该组织的沟通架构保持一致。 如果一个系统很大,以至于开发的它的人分...  (展开)
纯阳书评2018-01-30 11:29:07

两个超越

一千个人眼中就会有一千个哈姆雷特,这句话可能大家都很熟悉,那么我要问一个问题,这一千个哈姆雷特到底有没有高地上下之分呢?我的答案是有的,而且我相信大家也会同意这一点,尽管评判角度不同,高地上下的具体结果也不同。微服务同样也是这个道理,尽管微服务是一个软件开...  (展开)
莫冲2016-12-02 18:44:53

大咖经验分享,十足干货

这篇书评可能有关键情节透露

在中亚买了这本电子书,越看越喜欢,很对路的感觉,一个星期内利用上下班坐车时间看完了。 作为专业书,全书没有一行代码,这是非常难的的,但有比代码更复杂和深沉的思考。如果你没有做过类似系统,或没有从系统架构弹性的思维角度去考虑系统的组织和设计,对书中的很多内容...  (展开)
pan2019-08-25 18:53:37

阅历太浅不适合读此书么?

【此贴纯属个人寻意见贴】我是一个刚工作两年的,读此书的时候,会发现,啊,不能集中注意力往下看,讲的东西感觉有点飘,会抓不住重点,感觉讲的不够直接,讲一个东西会牵扯出其他东西,感觉和我的阅历太浅有关?由于不是一口气看完的,之前看过的篇章,回过头在看目录,会记...  (展开)
pan2019-08-25 18:53:30

阅历太浅不适合读此书么?

【此贴纯属个人寻意见贴】我是一个刚工作两年的,读此书的时候,会发现,啊,不能集中注意力往下看,讲的东西感觉有点飘,会抓不住重点,感觉讲的不够直接,讲一个东西会牵扯出其他东西,感觉和我的阅历太浅有关?由于不是一口气看完的,之前看过的篇章,回过头在看目录,会记...  (展开)
Footprint2017-09-25 00:57:00O'Reilly Media2014版

Building Microservices

一本比较全面介绍Micro-Service 架构的书,从Micro-Service 的优势,讲到转型过程中可能遇到的挑战。有组织结构上的也有技术层面的,譬如在测试,集成,发布,运维,安全等等。由于篇幅较短,概括的内容很多,所以讨论的问题没有很深入。其实本身来说Micro-Service也没有什么新...  (展开)
甲烷菌。2017-02-26 16:59:43

很有广度的一本介绍微服务的书

本书是2016年出版的,英文版是2015年出版的,微服务算是比较新的一项技术(或思想)。本书以宏观的角度讲述了微服务的理论思想,从下面的目录架构也能看出来,作者在第2章用了一章的篇幅讲了微服务中的架构师角色。什么是微服务? 微服务如何寻找平衡? 如何测试?等等,这些问题...  (展开)
DavidTian2023-10-07 13:47:48

一场与单体服务的战争

我离开上一家互联网金融公司的时候,团队正巧花费了一年的时间将微服务架构的服务全面重构成单体服务,架构的转变外加上经济大环境不好,我被fire掉了。在家期间读《凤凰架构》开篇的服务架构演进史章节里面提到了微服务时代,想到了这本书,随后翻出来细细阅读,应该是经历了...  (展开)

> 更多书评 22篇

论坛  · · · · · ·

大咖经验分享,十足干货来自莫冲2016-12-02 18:43:37

在线试读 :

这本书的其他版本  · · · · · · (全部5 )

以下书单推荐  · · · · · · (全部 )

谁读这本书?  · · · · · ·

HowieZhao
HowieZhao
9月16日 在读


海上吉他师
海上吉他师
9月14日 在读


豆友7404827007
豆友7404827007
9月6日 想读


愤怒的乔治大叔
愤怒的乔治大叔
8月31日 想读


>252人在读

>1048人读过

>2258人想读

二手市场  · · · · · ·

订阅关于微服务设计的评论:
feed: rss 2.0

© 2005-2025 douban.com, all rights reserved 北京豆网科技有限公司关于豆瓣 ·在豆瓣工作 ·联系我们 ·法律声明 ·帮助中心 ·图书馆合作 ·移动应用

[8]ページ先頭

©2009-2025 Movatter.jp