《分布式服务架构:原理、设计与实战》
概念
X/Open:X/Open Company Ltd,X/Open国际联盟有限公司,1984年成立于欧洲的基金会,制定UNIX标准
OSF:The Open Software Foundation,开放软件基金会,1988年成立于美国,制定UNIX标准
TOG:The Open Group,1996年由X/Open和OSF合并成立
TOGAF:The Open Group Architecture Framework,TOG企业架构框架
X/Open DTP:X/Open Distributed Transaction Processing Reference Model,X/Open分布式事务处理模型
分布式微服务架构
RPC方案
1、JDK RMI:不能跨语言,使用底层网络协议,性能较好,消息可读性差
2、Spring HTTP Invoker:基于RMI,使用HTTP传输数据,性能比RMI稍差,也不能跨语言
3、Caucho公司的Hessian和Burlap:基于HTTP和XML,数据可读,跨语言,适合传输小对象
SOA(服务化)框架
1、Apache Dubbo:2018年由阿里巴巴贡献给Apache基金会,基于RPC,不能跨语言
2、Apache Thrift:2008年有Facebook贡献给Apache基金会,基于RPC,跨语言
3、Apache Axis:是Apache Web Services的子项目,基于SOAP,复杂臃肿
4、Spring Cloud:基于HTTP REST
微服务框架
微服务是有以下特点的SOA:服务粒度小,每个服务单独部署
分布式系统一致性(分布式事务)
服务拆分:水平拆分,垂直拆分
强一致性:ACID
强一致性:Consistency,C,一个节点任意时刻读取的数据都是最新数据
高可用性:Availability,A,良好的响应性能
分区容错性:Partition tolerance,P,集群中的单节点出现故障,系统仍可继续工作
CAP原理:任何分布式系统最多同时满足CAP中的两点,P必须实现,A和C之间可以权衡
BASE模型:BA(Basically Available,基本可用)S(Soft State,软状态,状态允许一段时间内不同步)E(Eventually Consistent,最终一致),不保证ACID,系统进行每一步操作时,记录临时状态,出现故障时可以从中间状态继续处理或回退,最终达到一致性
酸碱平衡理论:在不同场景下,分别利用ACID和BASE来解决分布式服务化系统的一致性问题
X/Open DTP
角色:应用程序、事务管理器(协调者)、资源管理器(参与者)
目的:确保一个操作能顺利执行,且执行时能独占资源
TX协议:定义应用程序与事务管理器之间的接口
XA协议:定义事务管理器与资源管理器之间的接口,基于两阶段提交协议
两阶段提交协议
准备阶段:
1、协调者向参与者发起准备指令
2、参与者评估自己的状态
3、如果参与者评估指令可以完成,然后锁定资源,执行操作,但是并不提交
4、参与者返回准备成功 或 失败
提交阶段:
如果每个参与者明确返回准备成功
1、协调者向参与者发起提交指令
2、参与者提交资源变更的事务,释放锁定的资源
如果任何一个参与者明确返回准备失败, 也就是预留资源或者执行操作失败
1、协调者向参与者发起中止指令
2、参与者取消己经变更的事务,释放锁定的资源
缺点:任何一次指令都必须收到明确的响应,才会继续进行下一步,否则处于阻塞状态,占用的资源被一直锁定,不会被释放
三阶段提交协议
询问阶段:
1、协调者询问参与者是否可以完成指令
2、协调者只需要回答是或不是,而不需要做真正的操作,这个阶段超时会导致中止
准备阶段:
如果在询问阶段所有参与者都返回可以执行操作
1、协调者向参与者发送预执行请求
2、执行操作但是不提交操作,这个阶段超时默认为成功
如果在询问阶段任意参与者返回不能执行操作的结果
1、协调者向参与者发送中止请求
提交阶段:
如果每个参与者在准备阶段返回准备成功,也就是说预留资源和执行操作成功
1、协调者向参与者发起提交指令
2、参与者提交资源变更的事务,释放锁定的资源
如果任何参与者返回准备失败,也就是说预留资源或者执行操作失败
1、协调者向参与者发起中止指令
2、参与者取消已经变更的事务,释放锁定的资源
与两阶段提交协议的对比
1、增加了询问阶段,可以尽早发现问题
2、准备阶段超时默认为成功,避免阻塞,但可能造成不一致
服务化系统容量
互联网架构权衡分析方法:Architecture Tradeoff Analysis Method,ATAM,是评价软件构架的一
种综合且全面的方法
核心非功能质量指标:高性能、高可用、可伸缩、可扩展、安全性
其他非功能质量指标:可监控性、可测试性、鲁棒性、可维护性、可重用性、易用性
大数据日志系统
详见:https://www.jianshu.com/p/614c7972179c
基于调用链的服务治理系统
谷歌Dapper论文:谷歌发表的关于其Dapper系统(调用链跟踪系统)的论文
APM:Application Performance Management,应用性能管理,涵盖调用链跟踪(分布式跟踪)
APM系统:例如Twitter Pinpoint、Zipkin、美团 CAT
调用链跟踪原理:
1、每个服务实例都有自己的spanID,即spanID标识服务实例
2、前端服务接收到请求,为请求生成一个traceID,即traceID标识请求
3、服务之间调用,都在请求头上带上 前端服务传来的traceID 和 自己的 spanID
4、每个服务都记录访问日志,其中包括traceID、请求里带的spanID(记成parentSpanID) 和 自己的spanID
线上应急与技术攻关
线上应急阶段:发现问题、定位问题、解决问题、消除影响、回顾问题、避免措施
技术攻关方法论
1、建立上线流程、上线评审机制、快速回滚方案
2、历史经验记录
3、领域专家库
服务的容器化
详见 https://www.jianshu.com/p/51622370d79e
敏捷开发的自动化工具
涉及DevOps、Jenkins、Git、Ansible等
阿里云
企业级分布式应用服务 EDAS:微服务架构中 免去 Zookeeper、Eureka 和 Consul 等组件的搭建,支持Spring Cloud、Duddo
应用配置管理:配置中心
全局事务服务 GTS
API网关
链路追踪
应用高可用服务:自动感知现有服务器的架构关系,流量控制,服务降级