搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
分布式服务框架原理与实践
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121279195
  • 作      者:
    李林锋著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2016
收藏
编辑推荐
  1、微服务是当前非常热的技术关键词之一,那么微服务如何落地呢?首先要实现服务化,微服务架构是一种服务化架构风格。《分布式服务框架原理与实践》对如何构建分布式服务化系统,提供了原理分析、关键技术、开发案例以及业界技术对比,非常系统化,不论是学习分布式服务技术还是深入大型互联网架构都非常实用。  2、《分布式服务框架原理与实践》作者李林锋多年来在华为一直从事核心代码的架构设计和开发,属于实战型架构师,这本书集合了他多年的架构思路,书中内容组织清晰,图例详实,非常便于理解与吸收。  3、《分布式服务框架原理与实践》首先分析了作为一个分布式服务框架所需具备的能力,包括服务注册中心、服务调用、服务路由、服务发布/灰度发布等;接着分析了服务底层如何有效地进行通信,包括通信框架、序列化/反序列化及协议栈等;然后分析了服务如何做到高可靠性及高安全性等重要特性;最后也阐述了从服务化如何向微服务演进。干货满满!
展开
作者简介
  李林锋,现任华为PaaS平台架构师,8年JavaNIO通信框架、平台中间件架构设计和开发经验,主导设计和开发的华为分布式服务框架已经在全球数十个国家成功商用。精通Netty、Mina、RPC框架、企业ESB总线、分布式服务框架等技术,公司总裁技术创新奖获得者。
展开
内容介绍
  《分布式服务框架:原理与实践》作者具有丰富的分布式服务框架、平台中间件的架构设计和实践经验,主导设计的华为分布式服务框架已经在全球数十个国家成功商用。《分布式服务框架:原理与实践》依托工作实践,从分布式服务框架的架构设计原理到实践经验总结,涵盖了服务化架构演进、订阅发布、路由策略、集群容错和服务治理等多个专题,全方位剖析服务框架的设计原则和原理,结合大量实践案例与读者分享作者对分布式服务框架设计和运维的体会。同时,对基于Docker部署微服务以及基于微服务架构开发、部署和运维业务系统进行了详细介绍。
展开
精彩书评

  构建企业互联网架构的关键在于系统分布式和服务化,尤其对于大型网站和大型企业系统,系统的灵活性、超大容量、弹性和自治能力是非常大的挑战。在《分布式服务框架原理与实践》一书中,作者基于深厚的软件技术积累和电信领域成功应用实践,对如何构建分布式服务化系统,提供了原理分析、关键技术、开发案例以及业界技术对比,非常系统化,不论是学习分布式服务技术还是深入大型互联网架构都非常实用。

  ——华为云集成平台首席架构师苗彩霞

  认识林锋已有多年,见证了作者在该领域深厚的沉淀。阅览该书的目录以及相关章节,我惊诧于作者在这些领域深入的洞察和实践。该书几乎覆盖了分布式系统开发的每一个关键技术点,包括较为重要的通信框架设计、时下流行的微服务、服务路由关联的技术和策略,以及饱受争议的OSGi。强烈推荐相关从业人员阅读此书。

  ——苏宁云商云计算中心技术总监汤泳

  在大型网站架构设计方面摸爬滚打多年后,看到《分布式服务框架原理与实践》如获至宝,作者条理清晰、由浅入深地解析了分布式服务架构所涉及方方面面的关键技术和原理,既有纵向演进介绍,又有横向竞品对比。尤其针对各种场景所提出的设计原则或实践,都是作者的实战总结,有些经验的获取成本高昂,非常宝贵。本书完全可以直接用于指导分布式服务系统的构建。

  ——中国移动手机阅读基地平台首席架构师胡稳

  分布式的应用在设计、开发以及部署的各个方面都比较复杂,国内外也没有典型的图书进行系统介绍,于是在这方面,我们不得不一遍遍地踩坑。林锋有着深厚的技术基础和丰富的架构经验,这本集他经验和心血而成的图书,包含了分布式系统的方方面面,既有宏观的理论介绍,也有来自一线的经验分享,相信它必将成为架构师和开发人员的必备图书!

  ——东软集团资深软件工程师、InfoQ编辑张卫滨

  “微服务”无疑是本年度较热的技术关键词之一!那如何落地微服务呢?我认为首先要实现服务化,而本书恰好提供了一个很好的服务化操作指导。作者首先分析了作为一个分布式服务框架所需具备的能力,包括服务注册中心、服务调用、服务路由、服务发布/灰度发布等;其次作者分析了服务底层如何有效地进行通信,包括通信框架,序列化/反序列化及协议栈等;再次作者分析了服务如何做到高可靠性及高安全性等重要特性;最后作者也阐述了从服务化如何向微服务演进。

  ——麻袋理财首席架构师王天青

  以OpenStack为规范建设的IaaS、以Docker为代表的容器技术、以分布式微服务框架构建的业务平台即将颠覆业务系统整体建设方案,新的系统建设方案将极大提升业务系统的可用性、扩展性和应变能力。微服务架构对于运营商内容型业务的互联网化转型意义非凡,系统架构微服务化才能真正支撑好业务转型的需要。本书将成为帮助大家更好地理解微服务框架关键技术的原理和实现的必备书籍。

  ——咪咕动漫系统支撑部技术总监李鹏

  锋兄在华为一直从事核心代码的架构设计和开发,属于实战型架构师,而且乐于分享。《分布式服务框架原理与实践》源于他在多年架构设计工作中的实战经验,阅读价值极高!在面向大规模、分布式系统架构中,服务框架是其中的核心和必经之路。祝贺锋兄新书造福广大程序猿!

  ——奇蛙CEEWA运动无人机合伙人、前华为开放平台总架构师冯黎

  近些年来,越来越多网站需要同时提供Web、移动App、OpenAPI多种访问方式,基于分布式服务的业务分治与复用需求越来越强烈,使用分布式服务构建系统已经成为互联网开发的常用手段。但是分布式服务的关键技术有哪些?核心原理是什么?本书作者作为分布式框架的开发者根据自己的实践经验编写的这本《分布式服务框架原理与实践》或可为您解惑。分布式服务框架用到的各种技术也是整个互联网分布式技术的一个缩影,您也可窥一斑而知全豹,通过本书学习掌握各种分布式开发技巧。

  ——宅米网CTO、《大型网站技术架构:核心原理与案例分析》作者李智慧

  整书由构建分布式服务为基础讲起,逐步深入到分布式服务的保障机制,最后也讲解了时下新兴分布式设计方案微服务架构。书中内容组织清晰,图例详实,非常便于理解与吸收,是一本不错的提升分布式服务架构能力的书籍。

  ——链家网架构师吕毅

  本书深度阐述了应用和系统架构方面的设计和原理,真实体现了李林锋丰富的技术架构经验以及乐于分享的精神。在业务系统越来越讲究高可用、高性能、可伸缩扩展、高安全性、自动运维的今天,本书集合了大型企业多年的架构思路,为技术以及产品人员提供了重要的参考依据,从理念上提升了每位读者的技术水平,非常值得深入阅读和理解。

  ——阿里云PaaS平台产品架构师杨林

展开
精彩书摘
  8.2.2 异步服务调用
  基于JDK的Future机制,可以非常方便地实现异步服务调用。
  JDK原生的Future主要用于异步操作,它代表了异步操作的执行结果,用户可以通过调用它的get方法获取结果。如果当前操作没有执行完,get操作将阻塞调用线程。
  在实际项目中,往往会扩展JDK的Future,提供Future-Listener机制,它支持主动获取和被动异步回调通知两种模式,适用于不同的业务场景。
  以Netty的Future接口定义为例,新增了监听器管理接口,监听器主要用于异步通知回调。
  异步服务调用的工作流程如下:
  1)  消费者调用服务端发布的接口,接口调用由分布式服务框架包装成动态代理,发起远程服务调用。
  2)  通信框架异步发送请求消息,如果没有发生I/O异常,返回。
  3)  请求消息发送成功后,I/O线程构造Future对象,设置到RPC上下文中。
  4)  用户线程通过RPC上下文获取Future对象。
  5)  构造Listener对象,将其添加到Future中,用于服务端应答异步回调通知。
  6)  用户线程返回,不阻塞等待应答。
  7)  服务端返回应答消息,通信框架负责反序列化等。
  8)  I/O线程将应答设置到Future对象的操作结果中。
  9)  Future对象扫描注册的监听器列表,循环调用监听器的operationComplete方法,将结果通知给监听器,监听器获取到结果之后,继续后续业务逻辑的执行,异步服务调用结束。
  需要指出的是,还有另外一种异步服务调用形式,就是不添加Listener,用户连续发起N次服务调用,然后依次从RPC上下文中获取Future对象,最终再主动get结果,业务线程阻塞,相比于老的同步服务调用,它的阻塞时间更短,其工作原理如图8-8所示。
  异步服务调用的代码示例如下:
  xxxService1.xxxMethod(Req);
  Future f1 = RpcContext.getContext().getFuture();
  xxxService2.xxxMethod(Req);
  Future f2 = RpcContext.getContext().getFuture();
  Object xxResult1 = f1.get(3000);
  Object xxResult2 = f2.get(3000); }
  假如xxxService1和xxxService2发布成异步服务,则调用xxxMethod之后当前业务线程不阻塞,立即返回null。用户不能直接使用它的返回值,而是通过当前线程上下文RPCContext获取异步操作结果Future。获取到Future之后继续发起其他异步服务调用,然后获取另一个Future……最后,通过Future的get方法集中获取结果。无论有多少个Future,采用此种方式用户线程最长阻塞时间为耗时最长的Future,即T = Max t(future1....N)。如果采用同步服务调用,用户线程的阻塞时间T = t(future1) + t(future2) + ……+ t(futureN)。
  异步服务调用相比于同步服务调用有两个优点:
  ◎     化串行为并行,提升服务调用效率,减少业务线程阻塞时间。
  ◎     化同步为异步,避免业务线程阻塞。
  由于每次服务调用都是同步阻塞,三个服务调用总耗时为T = T1 + T2 + T3。下面我们看下采用异步服务调用之后的优化效果。
  采用异步服务调用模式,最后调用三个服务异步操作结果Future的get方法同步等待应答,它的总执行时间T = Max(T1, T2, T3),相比于同步服务调用,性能提升效果非常明显。
  第二种基于Future-Listener的纯异步服务调用,它的代码示例如下:
  xxxService1.xxxMethod(Req);
  Future f1 = RpcContext.getContext().getFuture();
  Listener l = new xxxListener();
  f1.addListener(l);
  ......后续代码省略 }
  基于Future-Listener的异步服务调用相比于Future-get模式更好,但是在实际使用中有一定的局限性,具体的使用限制留给读者自己思考。
  ……
展开
目录
第1 章应用架构演进 1
1 1 传统垂直应用架构 2
1 1 1 垂直应用架构介绍 2
1 1 2 垂直应用架构面临的挑战 4
1 2 RPC 架构  6
1 2 1 RPC 框架原理 6
1 2 2 最简单的RPC 框架实现 8
1 2 3 业界主流RPC 框架  14
1 2 4 RPC 框架面临的挑战  17
1 3 SOA 服务化架构  18
1 3 1 面向服务设计的原则 18
1 3 2 服务治理  19
1 4 微服务架构  21
1 4 1 什么是微服务  21
1 4 2 微服务架构对比SOA  22
1 5 总结 23
第2 章分布式服务框架入门 25
2 1 分布式服务框架诞生背景 26
2 1 1 应用从集中式走向分布式 26?
2 1 2 亟需服务治理  28
2 2 业界分布式服务框架介绍 29
2 2 1 阿里Dubbo 30
2 2 2 淘宝HSF  33
2 2 3 亚马逊Coral Service  35
2 3 分布式服务框架设计  36
2 3 1 架构原理  36
2 3 2 功能特性  37
2 3 3 性能特性  39
2 3 4 可靠性  39
2 3 5 服务治理  40
2 4 总结 41
第3 章通信框架  42
3 1 关键技术点分析 43
3 1 1 长连接还是短连接 43
3 1 2 BIO 还是NIO  43
3 1 3 自研还是选择开源NIO 框架 46
3 2 功能设计 47
3 2 1 服务端设计 48
3 2 2 客户端设计 50
3 3 可靠性设计  53
3 3 1 链路有效性检测 54
3 3 2 断连重连机制 56
3 3 3 消息缓存重发 57
3 3 4 资源优雅释放  58
3 4 性能设计  59
3 4 1 性能差的三宗罪  59
3 4 2 通信性能三原则 60
3 4 3 高性能之道 61
3 5 最佳实践  61
3 6 总结 64
第4 章序列化与反序列化 65
4 1 几个关键概念澄清  66
4 1 1 序列化与通信框架的关系 66
4 1 2 序列化与通信协议的关系 66
4 1 3 是否需要支持多种序列化方式  67
4 2 功能设计 67
4 2 1 功能丰富度 67
4 2 2 跨语言支持 68
4 2 3 兼容性  69
4 2 4 性能  70
4 3 扩展性设计  71
4 3 1 内置的序列化/反序列化功能类 71
4 3 2 反序列化扩展  72
4 3 3 序列化扩展 75
4 4 最佳实践 77
4 4 1 接口的前向兼容性规范 77
4 4 2 高并发下的稳定性 78
4 5 总结 78
第5 章协议栈 79
5 1 关键技术点分析 80
5 1 1 是否必须支持多协议  80
5 1 2 公有协议还是私有协议 80
5 1 3 集成开源还是自研 81
5 2 功能设计 82
5 2 1 功能描述  82
5 2 2 通信模型  82
5 2 3 协议消息定义  84
5 2 4 协议栈消息序列化支持的字段类型  85
5 2 5 协议消息的序列化和反序列化  86
5 2 6 链路创建  89
5 2 7 链路关闭  90
5 3 可靠性设计  90
5 3 1 客户端连接超时 90
5 3 2 客户端重连机制 91
5 3 3 客户端重复握手保护  91
5 3 4 消息缓存重发  92
5 3 5 心跳机制  92
5 4 安全性设计  92
5 5 最佳实践—协议的前向兼容性 94
5 6 总结 95
第6 章服务路由  96
6 1 透明化路由  97
6 1 1 基于服务注册中心的订阅发布  97
6 1 2 消费者缓存服务提供者地址 98
6 2 负载均衡 98
6 2 1 随机  98
6 2 2 轮循  99
6 2 3 服务调用时延  99
6 2 4 一致性哈希 100
6 2 5 粘滞连接  101
6 3 本地路由优先策略 102
6 3 1 injvm 模式 102
6 3 2 innative 模式 102
6 4 路由规则  103
6 4 1 条件路由规则 103
6 4 2 脚本路由规则 104
6 5 路由策略定制 105
6 6 配置化路由 106
6 7 最佳实践—多机房路由 107
6 8 总结  108
第7章集群容错  109
7 1 集群容错场景 110
7 1 1 通信链路故障 110
7 1 2 服务端超时  111
7 1 3 服务端调用失败 111
7 2 容错策略  112
7 2 1 失败自动切换(Failover)  112
7 2 2 失败通知(Failback) 113
7 2 3 失败缓存(Failcache)  113
7 2 4 快速失败(Failfast) 114
7 2 5 容错策略扩展 114
7 3 总结  115
第8 章服务调用  116
8 1 几个误区  117
8 1 1 NIO 就是异步服务  117
8 1 2 服务调用天生就是同步的  118
8 1 3 异步服务调用性能更高  120
8 2 服务调用方式 120
8 2 1 同步服务调用 120
8 2 2 异步服务调用 121
8 2 3 并行服务调用 125
8 2 4 泛化调用  129
8 3 最佳实践  130
8 4 总结  131
第9章服务注册中心 132
9 1 几个概念  133
9 1 1 服务提供者  133
9 1 2 服务消费者  133
9 1 3 服务注册中心 133
9 2 关键功能特性设计 134
9 2 1 支持对等集群 135
9 2 2 提供CRUD 接口 136
9 2 3 安全加固  136
9 2 4 订阅发布机制 137
9 2 5 可靠性 138
9 3 基于ZooKeeper 的服务注册中心设计  139
9 3 1 服务订阅发布流程设计  139
9 3 2 服务健康状态检测  141
9 3 3 对等集群防止单点故障  142
9 3 4 变更通知机制 144
9 4 总结  144
第10 章服务发布和引用 145
10 1 服务发布设计 146
10 1 1 服务发布的几种方式 146
10 1 2 本地实现类封装成代理  148
10 1 3 服务发布成指定协议 148
10 1 4 服务提供者信息注册 149
10 2 服务引用设计 150
10 2 1 本地接口调用转换成远程服务调用 150
10 2 2 服务地址本地缓存  151
10 2 3 远程服务调用  151
10 3 最佳实践  152
10 3 1 对等设计原则  152
10 3 2 启动顺序问题  153
10 3 3 同步还是异步发布服务  153
10 3 4 警惕网络风暴  154
10 3 5 配置扩展 154
10 4 总结 156
第11 章服务灰度发布  157
11 1 服务灰度发布流程设计  158
11 1 1 灰度环境准备  158
11 1 2 灰度规则设置  159
11 1 3 灰度规则下发  160
11 1 4 灰度路由 161
11 1 5 失败回滚 162
11 1 6 灰度发布总结  163
11 2 总结  163
第12 章参数传递 164
12 1 内部传参  165
12 1 1 业务内部参数传递  165
12 1 2 服务框架内部参数传递  168
12 2 外部传参  169
12 2 1 通信协议支持  169
12 2 2 传参接口定义  170
12 3 最佳实践  171
12 3 1 防止参数互相覆盖  171
12 3 2 参数生命周期管理  171
12 4 总结 172
第13 章服务多版本  173
13 1 服务多版本管理设计  174
13 1 1 服务版本号管理  174
13 1 2 服务提供者 175
13 1 3 服务消费者 175
13 1 4 基于版本号的服务路由  176
13 1 5 服务热升级 177
13 2 与OSGi 的对比  178
13 2 1 模块化开发 179
13 2 2 插件热部署和热升级 184
13 2 3 不使用OSGi 的其他理由  185
13 3 总结 185
第14 章流量控制 186
14 1 静态流控  187
14 1 1 传统静态流控设计方案  187
14 1 2 传统方案的缺点  188
14 1 3 动态配额分配制  188
14 1 4 动态配额申请制  190
14 2 动态流控  191
14 2 1 动态流控因子  192
14 2 2 分级流控 192
14 3 并发控制  193
14 3 1 服务端全局控制  193
14 3 2 服务消费者流控  194
14 4 连接控制  195
14 4 1 服务端连接数流控  195
14 4 2 服务消费者连接数流控  195
14 5 并发和连接控制算法  195
14 6 总结 197
第15 章服务降级 198
15 1 屏蔽降级  199
15 1 1 屏蔽降级的流程  199
15 1 2 屏蔽降级的设计实现 200
15 2 容错降级  202
15 2 1 容错降级的工作原理 202
15 2 2 运行时容错降级  204
15 3 业务层降级 205
15 4 总结 205
第16 章服务优先级调度 207
16 1 设置服务优先级 208
16 2 线程调度器方案 209
16 3 Java 优先级队列 210
16 4 加权优先级队列 211
16 5 服务迁入迁出 212
16 6 总结 213
第17 章服务治理 214
17 1 服务治理技术的历史变迁 215
17 1 1 SOA Governance  215
17 1 2 分布式服务框架服务治理 217
17 1 3 AWS 云端微服务治理  217
17 2 应用服务化后面临的挑战 218
17 2 1 跨团队协作问题  219
17 2 2 服务的上下线管控  220
17 2 3 服务安全 220
17 2 4 服务SLA 保障  221
17 2 5 故障快速定界定位  221
17 3 服务治理  222
17 3 1 服务治理架构设计  223
17 3 2 运行态服务治理功能设计 225
17 3 3 线下服务治理  232
17 3 4 安全和权限管理  234
17 4 总结 237
第18 章分布式消息跟踪 239
18 1 业务场景分析 240
18 1 1 故障的快速定界定位 240
18 1 2 调用路径分析  241
18 1 3 调用来源和去向分析 242
18 2 分布式消息跟踪系统设计 242
18 2 1 系统架构 243
18 2 2 埋点日志 244
18 2 3 采样率 247
18 2 4 采集和存储埋点日志 248
18 2 5 计算和展示 249
18 2 6 调用链扩展 251
18 3 总结 251
第19 章可靠性设计  253
19 1 服务状态检测 254
19 1 1 基于服务注册中心状态检测 254
19 1 2 链路有效性状态检测机制 255
19 2 服务健康度检测 256
19 3 服务故障隔离 257
19 3 1 进程级故障隔离  257
19 3 2 VM 级故障隔离 259
19 3 3 物理机故障隔离  260
19 3 4 机房故障隔离  261
19 4 其他可靠性特性 262
19 4 1 服务注册中心  262
19 4 2 监控中心 262
19 4 3 服务提供者 262
19 5 总结 263
第20 章微服务架构  264
20 1 微服务架构产生的历史背景 265
20 1 1 研发成本挑战  265
20 1 2 运维成本高 267
20 1 3 新需求上线周期长  268
20 2 微服务架构带来的改变  268
20 2 1 应用解耦 268
20 2 2 分而治之 270
20 2 3 敏捷交付 271
20 3 微服务架构解析 271
20 3 1 微服务划分原则  272
20 3 2 开发微服务 272
20 3 3 基于Docker 容器部署微服务  274
20 3 4 治理和运维微服务  277
20 3 5 特点总结 278
20 4 总结 279
第21 章服务化最佳实践 280
21 1 性能和时延问题 281
21 1 1 RPC 框架高性能设计 281
21 1 2 业务最佳实践  285
21 2 事务一致性问题 286
21 2 1 分布式事务设计方案 287
21 2 2 分布式事务优化  288
21 3 研发团队协作问题 289
21 3 1 共用服务注册中心  290
21 3 2 直连提供者 290
21 3 3 多团队进度协同  291
21 3 4 服务降级和Mock 测试 291
21 3 5 协同调试问题  292
21 3 6 接口前向兼容性  292
21 4 总结 292
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证