编辑推荐
1、微服务是当前非常热的技术关键词之一,那么微服务如何落地呢?首先要实现服务化,微服务架构是一种服务化架构风格。《分布式服务框架原理与实践》对如何构建分布式服务化系统,提供了原理分析、关键技术、开发案例以及业界技术对比,非常系统化,不论是学习分布式服务技术还是深入大型互联网架构都非常实用。
2、《分布式服务框架原理与实践》作者李林锋多年来在华为一直从事核心代码的架构设计和开发,属于实战型架构师,这本书集合了他多年的架构思路,书中内容组织清晰,图例详实,非常便于理解与吸收。
3、《分布式服务框架原理与实践》首先分析了作为一个分布式服务框架所需具备的能力,包括服务注册中心、服务调用、服务路由、服务发布/灰度发布等;接着分析了服务底层如何有效地进行通信,包括通信框架、序列化/反序列化及协议栈等;然后分析了服务如何做到高可靠性及高安全性等重要特性;*后也阐述了从服务化如何向微服务演进。干货满满!
内容简介
本书作者具有丰富的分布式服务框架、平台中间件的架构设计和实践经验,主导设计的华为分布式服务框架已经在全球数十个国家成功商用。书中依托工作实践,从分布式服务框架的架构设计原理到实践经验总结,涵盖了服务化架构演进、订阅发布、路由策略、集群容错和服务治理等多个专题,全方位剖析服务框架的设计原则和原理,结合大量实践案例与读者分享作者对分布式服务框架设计和运维的体会。同时,对基于Docker部署微服务以及基于微服务架构开发、部署和运维业务系统进行了详细介绍。
作者简介
李林锋,现任华为PaaS平台架构师,8年Java NIO通信框架、平台中间件架构设计和开发经验,主导设计和开发的华为分布式服务框架已经在全球数十个国家成功商用。精通Netty、Mina、RPC框架、企业ESB总线、分布式服务框架等技术,《Netty权威指南》作者,公司总裁技术创新奖获得者。
微博、微信:Nettying
微信公众号:Netty之家
目 录
第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
前 言
序一
媒体评论
构建企业互联网架构的关键在于系统分布式和服务化,尤其对于大型网站和大型企业系统,系统的灵活性、超大容量、弹性和自治能力是非常大的挑战。在《分布式服务框架原理与实践》一书中,作者基于深厚的软件技术积累和电信领域成功应用实践,对如何构建分布式服务化系统,提供了原理分析、关键技术、开发案例以及业界技术对比,非常系统化,不论是学习分布式服务技术还是深入大型互联网架构都非常实用。
——华为云集成平台首席架构师苗彩霞
认识林锋已有多年,从《Netty权威指南》到本书的诞生,再次见证了作者在该领域深厚的沉淀。阅览该书的目录以及相关章节,我惊诧于作者在这些领域深入的洞察和实践。该书几乎覆盖了分布式系统开发的每一个关键技术点,包括*为重要的通信框架设计、时下流行的微服务、服务路由关联的技术和策略,以及饱受争议的OSGi。强烈推荐相关从业人员阅读此书。
——苏宁云商云计算中心技术总监汤泳
免费在线读
8.2.2 异步服务调用
基于JDK的Future机制,可以非常方便地实现异步服务调用,JDK的Future接口定义如图8-5所示。
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所示。