分布式服务框架原理与实践是一本服务框架平台设计教材,由华为PaaS平台架构师李林锋编著。全书条理清晰、由浅入深的解析了分布式服务架构所涉及方方面面的关键技术和原理,包括原理分析、关键技术、开发案例以及业界技术,既有纵向演进介绍,又有横向竞品对比。尤其针对各种场景所提出的设计原则或实践,这些统统都来自于作者的实战总结,有些甚至可以直接用于实战,不论是学习分布式服务技术还是深入大型互联网架构都非常实用。《分布式服务框架原理与实践》首先分析了作为一个分布式服务框架所需具备的能力,包括服务注册中心、服务调用、服务路由、服务发布/灰度发布等;接着分析了服务底层如何有效地进行通信,包括通信框架、序列化/反序列化及协议栈等;然后分析了服务如何做到高可靠性及高安全性等重要特性;最后也阐述了从服务化如何向微服务演进。干货满满。全书简介本收作者李林锋具有非常丰富的分布式服务框架、平台中间件的架构设计和实践经验,主导设计的华为分布式服务框架已经在全球数十个国家成功商用。《分布式服务框架原理与实践》中依托工作实践,从分布式服务框架的架构设计原理到实践经验总结,涵盖了服务化架构演进、订阅发布、路由策略、集群容错和服务治理等多个专题,全方位剖析服务框架的设计原则和原理,结合大量实践案例与读者分享作者对分布式服务框架设计和运维的体会。同时,对基于Docker部署微服务以及基于微服务架构开发、部署和运维业务系统进行了详细介绍。作者简介李林锋,现任华为PaaS平台架构师,8年JavaNIO通信框架、平台中间件架构设计和开发经验,主导设计和开发的华为分布式服务框架已经在全球数十个国家成功商用。精通Netty、Mina、RPC框架、企业ESB总线、分布式服务框架等技术,Netty专业书作者,公司总裁技术创新奖获得者。分布式服务框架原理与实践pdf章节目录第1章应用架构演进11.1传统垂直应用架构21.1.1垂直应用架构介绍21.1.2垂直应用架构面临的挑战41.2RPC架构61.2.1RPC框架原理61.2.2最简单的RPC框架实现81.2.3业界主流RPC框架141.2.4RPC框架面临的挑战171.3SOA服务化架构181.3.1面向服务设计的原则181.3.2服务治理191.4微服务架构211.4.1什么是微服务211.4.2微服务架构对比SOA221.5总结23第2章分布式服务框架入门252.1分布式服务框架诞生背景262.1.1应用从集中式走向分布式.26?2.1.2亟需服务治理282.2业界分布式服务框架介绍292.2.1阿里Dubbo302.2.2淘宝HSF332.2.3亚马逊CoralService352.3分布式服务框架设计362.3.1架构原理362.3.2功能特性372.3.3性能特性392.3.4可靠性392.3.5服务治理402.4总结41第3章通信框架423.1关键技术点分析433.1.1长连接还是短连接433.1.2BIO还是NIO433.1.3自研还是选择开源NIO框架463.2功能设计473.2.1服务端设计483.2.2客户端设计503.3可靠性设计533.3.1链路有效性检测543.3.2断连重连机制563.3.3消息缓存重发573.3.4资源优雅释放583.4性能设计593.4.1性能差的三宗罪593.4.2通信性能三原则603.4.3高性能之道613.5最佳实践613.6总结64第4章序列化与反序列化654.1几个关键概念澄清664.1.1序列化与通信框架的关系664.1.2序列化与通信协议的关系664.1.3是否需要支持多种序列化方式674.2功能设计674.2.1功能丰富度674.2.2跨语言支持684.2.3兼容性694.2.4性能704.3扩展性设计714.3.1内置的序列化/反序列化功能类714.3.2反序列化扩展724.3.3序列化扩展754.4最佳实践774.4.1接口的前向兼容性规范774.4.2高并发下的稳定性784.5总结78第5章协议栈795.1关键技术点分析.805.1.1是否必须支持多协议805.1.2公有协议还是私有协议805.1.3集成开源还是自研815.2功能设计825.2.1功能描述825.2.2通信模型825.2.3协议消息定义845.2.4协议栈消息序列化支持的字段类型855.2.5协议消息的序列化和反序列化865.2.6链路创建895.2.7链路关闭905.3可靠性设计905.3.1客户端连接超时905.3.2客户端重连机制915.3.3客户端重复握手保护915.3.4消息缓存重发925.3.5心跳机制925.4安全性设计925.5最佳实践—协议的前向兼容性945.6总结95第6章服务路由966.1透明化路由976.1.1基于服务注册中心的订阅发布976.1.2消费者缓存服务提供者地址986.2负载均衡986.2.1随机986.2.2轮循996.2.3服务调用时延996.2.4一致性哈希1006.2.5粘滞连接1016.3本地路由优先策略1026.3.1injvm模式1026.3.2innative模式1026.4路由规则1036.4.1条件路由规则1036.4.2脚本路由规则1046.5路由策略定制1056.6配置化路由1066.7最佳实践—多机房路由1076.8总结108第7章集群容错1097.1集群容错场景1107.1.1通信链路故障1107.1.2服务端超时1117.1.3服务端调用失败1117.2容错策略1127.2.1失败自动切换(Failover)1127.2.2失败通知(Failback)1137.2.3失败缓存(Failcache)1137.2.4快速失败(Failfast)1147.2.5容错策略扩展1147.3总结115第8章服务调用1168.1几个误区1178.1.1NIO就是异步服务1178.1.2服务调用天生就是同步的1188.1.3异步服务调用性能更高1208.2服务调用方式1208.2.1同步服务调用1208.2.2异步服务调用1218.2.3并行服务调用1258.2.4泛化调用1298.3最佳实践1308.4总结131第9章服务注册中心1329.1几个概念1339.1.1服务提供者1339.1.2服务消费者1339.1.3服务注册中心1339.2关键功能特性设计1349.2.1支持对等集群1359.2.2提供CRUD接口1369.2.3安全加固1369.2.4订阅发布机制1379.2.5可靠性1389.3基于ZooKeeper的服务注册中心设计1399.3.1服务订阅发布流程设计1399.3.2服务健康状态检测1419.3.3对等集群防止单点故障1429.3.4变更通知机制1449.4总结144第10章服务发布和引用14510.1服务发布设计14610.1.1服务发布的几种方式14610.1.2本地实现类封装成代理14810.1.3服务发布成指定协议14810.1.4服务提供者信息注册14910.2服务引用设计15010.2.1本地接口调用转换成远程服务调用15010.2.2服务地址本地缓存15110.2.3远程服务调用15110.3最佳实践15210.3.1对等设计原则15210.3.2启动顺序问题15310.3.3同步还是异步发布服务15310.3.4警惕网络风暴15410.3.5配置扩展15410.4总结156第11章服务灰度发布15711.1服务灰度发布流程设计15811.1.1灰度环境准备15811.1.2灰度规则设置15911.1.3灰度规则下发16011.1.4灰度路由16111.1.5失败回滚16211.1.6灰度发布总结16311.2总结163第12章参数传递16412.1内部传参16512.1.1业务内部参数传递16512.1.2服务框架内部参数传递16812.2外部传参16912.2.1通信协议支持16912.2.2传参接口定义17012.3最佳实践17112.3.1防止参数互相覆盖17112.3.2参数生命周期管理17112.4总结172第13章服务多版本17313.1服务多版本管理设计17413.1.1服务版本号管理17413.1.2服务提供者17513.1.3服务消费者17513.1.4基于版本号的服务路由17613.1.5服务热升级17713.2与OSGi的对比17813.2.1模块化开发17913.2.2插件热部署和热升级18413.2.3不使用OSGi的其他理由18513.3总结185第14章流量控制18614.1静态流控18714.1.1传统静态流控设计方案18714.1.2传统方案的缺点18814.1.3动态配额分配制18814.1.4动态配额申请制19014.2动态流控19114.2.1动态流控因子19214.2.2分级流控19214.3并发控制19314.3.1服务端全局控制19314.3.2服务消费者流控19414.4连接控制19514.4.1服务端连接数流控19514.4.2服务消费者连接数流控19514.5并发和连接控制算法19514.6总结197第15章服务降级19815.1屏蔽降级19915.1.1屏蔽降级的流程19915.1.2屏蔽降级的设计实现20015.2容错降级20215.2.1容错降级的工作原理20215.2.2运行时容错降级.20415.3业务层降级20515.4总结205第16章服务优先级调度20716.1设置服务优先级20816.2线程调度器方案20916.3Java优先级队列21016.4加权优先级队列21116.5服务迁入迁出21216.6总结213第17章服务治理21417.1服务治理技术的历史变迁21517.1.1SOAGovernance21517.1.2分布式服务框架服务治理21717.1.3AWS云端微服务治理21717.2应用服务化后面临的挑战21817.2.1跨团队协作问题21917.2.2服务的上下线管控22017.2.3服务安全22017.2.4服务SLA保障.22117.2.5故障快速定界定位22117.3服务治理22217.3.1服务治理架构设计22317.3.2运行态服务治理功能设计22517.3.3线下服务治理23217.3.4安全和权限管理23417.4总结237第18章分布式消息跟踪23918.1业务场景分析24018.1.1故障的快速定界定位24018.1.2调用路径分析24118.1.3调用来源和去向分析24218.2分布式消息跟踪系统设计24218.2.1系统架构24318.2.2埋点日志24418.2.3采样率24718.2.4采集和存储埋点日志24818.2.5计算和展示24918.2.6调用链扩展25118.3总结251第19章可靠性设计25319.1服务状态检测25419.1.1基于服务注册中心状态检测25419.1.2链路有效性状态检测机制25519.2服务健康度检测25619.3服务故障隔离25719.3.1进程级故障隔离25719.3.2VM级故障隔离25919.3.3物理机故障隔离26019.3.4机房故障隔离26119.4其他可靠性特性26219.4.1服务注册中心26219.4.2监控中心26219.4.3服务提供者26219.5总结263第20章微服务架构26420.1微服务架构产生的历史背景26520.1.1研发成本挑战26520.1.2运维成本高26720.1.3新需求上线周期长26820.2微服务架构带来的改变26820.2.1应用解耦26820.2.2分而治之27020.2.3敏捷交付27120.3微服务架构解析27120.3.1微服务划分原则27220.3.2开发微服务27220.3.3基于Docker容器部署微服务27420.3.4治理和运维微服务27720.3.5特点总结27820.4总结279第21章服务化最佳实践28021.1性能和时延问题28121.1.1RPC框架高性能设计28121.1.2业务最佳实践28521.2事务一致性问题28621.2.1分布式事务设计方案28721.2.2分布式事务优化28821.3研发团队协作问题28921.3.1共用服务注册中心29021.3.2直连提供者29021.3.3多团队进度协同29121.3.4服务降级和Mock测试29121.3.5协同调试问题29221.3.6接口前向兼容性29221.4总结292使用说明1、下载并解压,得出pdf文件2、如果打不开本文件,请务必下载pdf阅读器3、安装后,在打开解压得出的pdf文件4、双击进行阅读