 华为云分布式事务DTM最佳实践servicecomb.apache.org github.com/apache?q=servicecomb 华为云分布式事务DTM最佳实践. 王启军 2 github.com/apache?q=servicecomb servicecomb.apache.org 王启军,华为云PaaS团队架构师,负责微服 务框架的开发。曾任当当网架构师,主导电商平台 架构设计;曾就职于搜狐负责手机微博的研发。 servicecomb.apache.org 弱一致性 Weak 最终一致性 Eventually 强一致性 Strong 业界常用的一致性分类 5 github.com/apache?q=servicecomb servicecomb.apache.org 方案\指标 2PC 传统事务 可靠事件 TCC 柔性事务 SAGA 补偿事务 数据一致性 强一致 最终一致 最终一致 最终一致 总体性能 适用广泛性 一般 一般 高 低 产品成熟度 高 高 一般 低 方案对比 6 github.com/apache?q=servicecomb servicecomb.apache.org 分布式事务管理中间件 (Distributed Transaction Management,DTM) 7 github.com/apache?q=servicecomb servicecomb.apache0 码力 | 15 页 | 3.10 MB | 1 年前3 华为云分布式事务DTM最佳实践servicecomb.apache.org github.com/apache?q=servicecomb 华为云分布式事务DTM最佳实践. 王启军 2 github.com/apache?q=servicecomb servicecomb.apache.org 王启军,华为云PaaS团队架构师,负责微服 务框架的开发。曾任当当网架构师,主导电商平台 架构设计;曾就职于搜狐负责手机微博的研发。 servicecomb.apache.org 弱一致性 Weak 最终一致性 Eventually 强一致性 Strong 业界常用的一致性分类 5 github.com/apache?q=servicecomb servicecomb.apache.org 方案\指标 2PC 传统事务 可靠事件 TCC 柔性事务 SAGA 补偿事务 数据一致性 强一致 最终一致 最终一致 最终一致 总体性能 适用广泛性 一般 一般 高 低 产品成熟度 高 高 一般 低 方案对比 6 github.com/apache?q=servicecomb servicecomb.apache.org 分布式事务管理中间件 (Distributed Transaction Management,DTM) 7 github.com/apache?q=servicecomb servicecomb.apache0 码力 | 15 页 | 3.10 MB | 1 年前3
 微服务场景下的数据一致性解决方案 - 殷湘和平统一 微服务场景下的数据一致性解决方案 殷湘 华为PaaS微服务架构师 开源能力中心 大纲 •离 数据一致性的起因 •合 数据一致性的解决方案 •断 方案选择建议 离 数据一致性的起因 单体应用 • 单体应用由于所有模块(A/B/C)使用同一个数据库 • 数据一致性通过数据库事务保证 A B C commit rollback 微服务场景 MySQL MongoDB Cassandra 数据一致性无法完全通过数据库保证 离 独立进程 独立部署 独立技术 独立团队 合 数据一致性的解决方案 T1 T2 T3 C2 C1 • 1987年Hector & Kenneth 发表论文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 transact transact B C A Saga compensate compensate 和平统一 减少业务代码集成/运维难度 剥离业务与数据一致性复杂度 和平:低侵入 让运维监控更加简单 可视化事务、调用链 统一:集中式 无状态、可集群、可分片 Event Sourcing架构 高可用 系统架构 – 基于图形 requests { T1:[a,b],0 码力 | 31 页 | 4.28 MB | 1 年前3 微服务场景下的数据一致性解决方案 - 殷湘和平统一 微服务场景下的数据一致性解决方案 殷湘 华为PaaS微服务架构师 开源能力中心 大纲 •离 数据一致性的起因 •合 数据一致性的解决方案 •断 方案选择建议 离 数据一致性的起因 单体应用 • 单体应用由于所有模块(A/B/C)使用同一个数据库 • 数据一致性通过数据库事务保证 A B C commit rollback 微服务场景 MySQL MongoDB Cassandra 数据一致性无法完全通过数据库保证 离 独立进程 独立部署 独立技术 独立团队 合 数据一致性的解决方案 T1 T2 T3 C2 C1 • 1987年Hector & Kenneth 发表论文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 transact transact B C A Saga compensate compensate 和平统一 减少业务代码集成/运维难度 剥离业务与数据一致性复杂度 和平:低侵入 让运维监控更加简单 可视化事务、调用链 统一:集中式 无状态、可集群、可分片 Event Sourcing架构 高可用 系统架构 – 基于图形 requests { T1:[a,b],0 码力 | 31 页 | 4.28 MB | 1 年前3
 《Saga分布式事务解决⽅案与实践》演讲者/姜宁《Saga分布式事务解决⽅方案与实践》 演讲者/姜宁 关于我 • 华为开源能⼒力力中⼼心 • ServiceComb项⽬目负责⼈人 • Apache Member , IPMC, 多个Apache项⽬目 • RedHat, IONA, Travelsky 议题 • 微服务事务⼀一致性问题? • 业界Saga的解决⽅方案 • ServiceComb Saga的演进 • (Atomicity) • ⼀一致性 (Consistency) • 隔离性 ( Isolation) • 持久性 (Durability) • BASE • 基本可⽤用(Basically Available) • 柔性状态 (Soft state) • 最终⼀一致性 (Eventually Consistent) (刚性事务) (柔性事务) https://queue • 微服务内:聚合通过数据库事务保证强⼀一致 • 内刚 • 微服务间:最终⼀一致 • 外柔 微服务事务⼀一致性建议 • 1987年年Hector & Kenneth 发表论⽂文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 Cx T10 码力 | 39 页 | 2.78 MB | 1 年前3 《Saga分布式事务解决⽅案与实践》演讲者/姜宁《Saga分布式事务解决⽅方案与实践》 演讲者/姜宁 关于我 • 华为开源能⼒力力中⼼心 • ServiceComb项⽬目负责⼈人 • Apache Member , IPMC, 多个Apache项⽬目 • RedHat, IONA, Travelsky 议题 • 微服务事务⼀一致性问题? • 业界Saga的解决⽅方案 • ServiceComb Saga的演进 • (Atomicity) • ⼀一致性 (Consistency) • 隔离性 ( Isolation) • 持久性 (Durability) • BASE • 基本可⽤用(Basically Available) • 柔性状态 (Soft state) • 最终⼀一致性 (Eventually Consistent) (刚性事务) (柔性事务) https://queue • 微服务内:聚合通过数据库事务保证强⼀一致 • 内刚 • 微服务间:最终⼀一致 • 外柔 微服务事务⼀一致性建议 • 1987年年Hector & Kenneth 发表论⽂文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 Cx T10 码力 | 39 页 | 2.78 MB | 1 年前3
 《Saga分布式事务解决⽅案与实践》演讲者/姜宁《Saga分布式事务解决⽅方案与实践》 演讲者/姜宁 关于我 • 华为开源能⼒力力中⼼心 • ServiceComb项⽬目负责⼈人 • Apache Member , IPMC, 多个Apache项⽬目 • RedHat, IONA, Travelsky 议题 • 微服务事务⼀一致性问题? • 业界Saga的解决⽅方案 • ServiceComb Saga的演进 • (Atomicity) • ⼀一致性 (Consistency) • 隔离性 ( Isolation) • 持久性 (Durability) • BASE • 基本可⽤用(Basically Available) • 柔性状态 (Soft state) • 最终⼀一致性 (Eventually Consistent) (刚性事务) (柔性事务) https://queue • 微服务内:聚合通过数据库事务保证强⼀一致 • 内刚 • 微服务间:最终⼀一致 • 外柔 微服务事务⼀一致性建议 • 1987年年Hector & Kenneth 发表论⽂文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 Cx T10 码力 | 33 页 | 2.38 MB | 1 年前3 《Saga分布式事务解决⽅案与实践》演讲者/姜宁《Saga分布式事务解决⽅方案与实践》 演讲者/姜宁 关于我 • 华为开源能⼒力力中⼼心 • ServiceComb项⽬目负责⼈人 • Apache Member , IPMC, 多个Apache项⽬目 • RedHat, IONA, Travelsky 议题 • 微服务事务⼀一致性问题? • 业界Saga的解决⽅方案 • ServiceComb Saga的演进 • (Atomicity) • ⼀一致性 (Consistency) • 隔离性 ( Isolation) • 持久性 (Durability) • BASE • 基本可⽤用(Basically Available) • 柔性状态 (Soft state) • 最终⼀一致性 (Eventually Consistent) (刚性事务) (柔性事务) https://queue • 微服务内:聚合通过数据库事务保证强⼀一致 • 内刚 • 微服务间:最终⼀一致 • 外柔 微服务事务⼀一致性建议 • 1987年年Hector & Kenneth 发表论⽂文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 Cx T10 码力 | 33 页 | 2.38 MB | 1 年前3
 ServiceComb雄关漫道MVC/JAX-RS) Golang 编程 限流 负载均衡 分布式追踪 动态配置 服务注册 服务度量 通信协议 (Rest&RPC) 边缘服务 熔断/容错 Token认证 Saga事务一致性 服务契约 平滑上云 拥抱开源生态 处理链 微服务脚手架 服务安全 治理UI 自动部署 监控运维 Public Cloud …… SpringCloud SpringBoot Istio 限流降级,容错熔 断等服务治理功能 • Service Center • 基于Etcd高性能,高可用服务注册中心 • Saga • 微服务事务最终一致性问题解决方案 • 提供一个集中式的事务协调器,协调微服务之间的事务调用,保证事务最终一致性 https://github.com/apache?q=incubator-servicecomb ServiceComb Java Chassis的架构图 程 池 分布式服务调用追踪 • 支持标准的分布式调用追踪Zipkin V1,V2 • 支持通过@span扩展自定义调用追踪 分布式事务一致性问题 A B C commit rollback 分布式事务一致性问题 A B C Saga分布式事务一致性解决方案 Saga Coordinator Saga Saga Saga ID: x Saga Log Saga Started0 码力 | 20 页 | 4.00 MB | 1 年前3 ServiceComb雄关漫道MVC/JAX-RS) Golang 编程 限流 负载均衡 分布式追踪 动态配置 服务注册 服务度量 通信协议 (Rest&RPC) 边缘服务 熔断/容错 Token认证 Saga事务一致性 服务契约 平滑上云 拥抱开源生态 处理链 微服务脚手架 服务安全 治理UI 自动部署 监控运维 Public Cloud …… SpringCloud SpringBoot Istio 限流降级,容错熔 断等服务治理功能 • Service Center • 基于Etcd高性能,高可用服务注册中心 • Saga • 微服务事务最终一致性问题解决方案 • 提供一个集中式的事务协调器,协调微服务之间的事务调用,保证事务最终一致性 https://github.com/apache?q=incubator-servicecomb ServiceComb Java Chassis的架构图 程 池 分布式服务调用追踪 • 支持标准的分布式调用追踪Zipkin V1,V2 • 支持通过@span扩展自定义调用追踪 分布式事务一致性问题 A B C commit rollback 分布式事务一致性问题 A B C Saga分布式事务一致性解决方案 Saga Coordinator Saga Saga Saga ID: x Saga Log Saga Started0 码力 | 20 页 | 4.00 MB | 1 年前3
 华为微服务框架ServiceComb提供微服务注册发现以及限流降级,容错熔断等治理功能 • Service Center • 高性能,高可用服务注册中心 • Saga • 微服务数据一致性问题解决方案 • 提供一个集中式的事务协调器,协调微服务乊间的事务,保证事务最终一致性 2018 Building Microservice NO.1 深圳站: Cloud Native 架构下的 K8S 和微服务实践 ServiceComb 1 深圳站: Cloud Native 架构下的 K8S 和微服务实践 微服务数据一致性问题 A B C commit rollback 2018 Building Microservice NO.1 深圳站: Cloud Native 架构下的 K8S 和微服务实践 微服务数据一致性问题 A B C 2018 Building Microservice NO & Kenneth 发表论文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 Cx T1 T2 T3 C3 C2 C1 https://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf0 码力 | 28 页 | 1.53 MB | 1 年前3 华为微服务框架ServiceComb提供微服务注册发现以及限流降级,容错熔断等治理功能 • Service Center • 高性能,高可用服务注册中心 • Saga • 微服务数据一致性问题解决方案 • 提供一个集中式的事务协调器,协调微服务乊间的事务,保证事务最终一致性 2018 Building Microservice NO.1 深圳站: Cloud Native 架构下的 K8S 和微服务实践 ServiceComb 1 深圳站: Cloud Native 架构下的 K8S 和微服务实践 微服务数据一致性问题 A B C commit rollback 2018 Building Microservice NO.1 深圳站: Cloud Native 架构下的 K8S 和微服务实践 微服务数据一致性问题 A B C 2018 Building Microservice NO & Kenneth 发表论文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 Cx T1 T2 T3 C3 C2 C1 https://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf0 码力 | 28 页 | 1.53 MB | 1 年前3
 ServiceComb介绍SpringMVC/JAX- RS) Golang 编程 限流 负载均衡 分布式追踪 动态配置 服务注册 服务度量量 通信协议 (Rest&RPC) 边缘服务 熔断/容错 Token认证 Saga事务⼀一致性 服务契约 平滑上云 拥抱开源⽣生态 处理理链 微服务脚⼿手架 服务安全 治理理UI ⾃自动部署 监控运维 Public Cloud …… SpringCloud SpringBoot 断等服务治理理功能 • Service Center • 基于Etcd⾼高性能,⾼高可⽤用服务注册中⼼心 • Saga • 微服务事务最终⼀一致性问题解决⽅方案 • 提供⼀一个集中式的事务协调器器,协调微服务之间的事务调⽤用,保证事务最终⼀一致性 https://github.com/apache?q=incubator-servicecomb ServiceComb Java Chassis的架构图 Center • 前端UI与服务中⼼心整合 • 优化微服务实例例统计信息 • Saga 0.2.0 • ⽀支持Spring Boot 2, Java 9, Java 10 • 提供了了Dubbo事务调⽤用追踪⽀支持 ServiceComb近期发展路路线图 响应式编程⽀支持 RxJava AsyncRestTemplate CompletableFuture ⽣生态⽀支持 Java 90 码力 | 16 页 | 877.58 KB | 1 年前3 ServiceComb介绍SpringMVC/JAX- RS) Golang 编程 限流 负载均衡 分布式追踪 动态配置 服务注册 服务度量量 通信协议 (Rest&RPC) 边缘服务 熔断/容错 Token认证 Saga事务⼀一致性 服务契约 平滑上云 拥抱开源⽣生态 处理理链 微服务脚⼿手架 服务安全 治理理UI ⾃自动部署 监控运维 Public Cloud …… SpringCloud SpringBoot 断等服务治理理功能 • Service Center • 基于Etcd⾼高性能,⾼高可⽤用服务注册中⼼心 • Saga • 微服务事务最终⼀一致性问题解决⽅方案 • 提供⼀一个集中式的事务协调器器,协调微服务之间的事务调⽤用,保证事务最终⼀一致性 https://github.com/apache?q=incubator-servicecomb ServiceComb Java Chassis的架构图 Center • 前端UI与服务中⼼心整合 • 优化微服务实例例统计信息 • Saga 0.2.0 • ⽀支持Spring Boot 2, Java 9, Java 10 • 提供了了Dubbo事务调⽤用追踪⽀支持 ServiceComb近期发展路路线图 响应式编程⽀支持 RxJava AsyncRestTemplate CompletableFuture ⽣生态⽀支持 Java 90 码力 | 16 页 | 877.58 KB | 1 年前3
 Metrics in ServiceComb Java Chassis 1.0.0-m1 让微服务运行状态清晰可见级, 容错熔断等服务治理功能 • Service Center 基于Etcd高性能,高可用服务注册中心 • Pack (Saga) 微服务事务最终一致性问题解决方案,提供一个集中式的事务协调器,协调微 服务之间的事务调用,保证事务最终一致性 https://github.com/apache?q=servicecomb 4 github.com/apache?q=servicecomb gMVC/JAX- RS) Golang 编程 限流 负载均衡 分布式追踪 动态配置 服务注册 服务度量 通信协议 (Rest&RP C) 边缘服务 熔断/容错 Token认证 Saga事务一致性 服务契约 平滑上云 拥抱开源生态 处理链 微服务脚手架 服务安全 治理UI 自动部署 监控运维 Public Cloud …… SpringClou d SpringBoot0 码力 | 18 页 | 3.12 MB | 1 年前3 Metrics in ServiceComb Java Chassis 1.0.0-m1 让微服务运行状态清晰可见级, 容错熔断等服务治理功能 • Service Center 基于Etcd高性能,高可用服务注册中心 • Pack (Saga) 微服务事务最终一致性问题解决方案,提供一个集中式的事务协调器,协调微 服务之间的事务调用,保证事务最终一致性 https://github.com/apache?q=servicecomb 4 github.com/apache?q=servicecomb gMVC/JAX- RS) Golang 编程 限流 负载均衡 分布式追踪 动态配置 服务注册 服务度量 通信协议 (Rest&RP C) 边缘服务 熔断/容错 Token认证 Saga事务一致性 服务契约 平滑上云 拥抱开源生态 处理链 微服务脚手架 服务安全 治理UI 自动部署 监控运维 Public Cloud …… SpringClou d SpringBoot0 码力 | 18 页 | 3.12 MB | 1 年前3
 ServiceComb 微服务框架JWT认证 Saga事务一致性 服务契约 平滑上云 开源生态能力互通 微服务脚手架 云 Dubbo SpringBoot SpringCloud ServiceMesh APM/Tracing生态 Prometheus Zipkin Skywalking Apollo ServiceMesh生态 Istio ServiceComb子系统 Saga 分布式事务解决方案 服务中心 是一个使用Go构造的、建立在etcd存储上的高性能、高 可用服务中心。 Java Chassis是一个由编程模型、运行模型、通信模型和服务契约四个 部分组成的微服务框架。 Saga 是一个微服务数据一致性解决方案。 ServiceComb的开放性设计 •Provider与Consumer具有完全 一致的开发体验 •通信模型与编程模型隔离,适 应不同业务场景需求 •运行模型支持灵活扩展,便于 基于Pack模型的新构架 由 Alpha 和 Omega组成 •Alpha充当协调者的角色,主要负责对事务的 事件进行持久化存储以及协调子事务的状态,使 其最终得以与全局事务的状态保持一致,即保证 事务中的子事务全执行,或全不执行。 •Omega是用户程序侧代理,负责对网络请求 进行拦截并向Alpha上报事务事件,并在异常情 况下根据Alpha下发的指令执行相应的补偿或重 试操作。 Service A0 码力 | 11 页 | 668.81 KB | 1 年前3 ServiceComb 微服务框架JWT认证 Saga事务一致性 服务契约 平滑上云 开源生态能力互通 微服务脚手架 云 Dubbo SpringBoot SpringCloud ServiceMesh APM/Tracing生态 Prometheus Zipkin Skywalking Apollo ServiceMesh生态 Istio ServiceComb子系统 Saga 分布式事务解决方案 服务中心 是一个使用Go构造的、建立在etcd存储上的高性能、高 可用服务中心。 Java Chassis是一个由编程模型、运行模型、通信模型和服务契约四个 部分组成的微服务框架。 Saga 是一个微服务数据一致性解决方案。 ServiceComb的开放性设计 •Provider与Consumer具有完全 一致的开发体验 •通信模型与编程模型隔离,适 应不同业务场景需求 •运行模型支持灵活扩展,便于 基于Pack模型的新构架 由 Alpha 和 Omega组成 •Alpha充当协调者的角色,主要负责对事务的 事件进行持久化存储以及协调子事务的状态,使 其最终得以与全局事务的状态保持一致,即保证 事务中的子事务全执行,或全不执行。 •Omega是用户程序侧代理,负责对网络请求 进行拦截并向Alpha上报事务事件,并在异常情 况下根据Alpha下发的指令执行相应的补偿或重 试操作。 Service A0 码力 | 11 页 | 668.81 KB | 1 年前3
 微服务架构及ServiceComb实践关注事务性要求(ACID) 2. 关注对性能的要求 举例:商品维护和下订单是2个微服务,下订单系统对性能有较高要求,所以可以考虑把商品的价格从商品维护微服务同步到订单系统,该同步动作 对性能没有要求,对事务性有要求。 常见的服务间通信模式:同(异)步通信,API组合,基于MQ的异步通信 事务性: saga, 事务性消息发布(一次仅一次),分布式事务等 很易用的服务间saga事务方案Servicecomb-Pack: Login-db Redis Redis Gateway Saga同步qualification 1. 每个微服务对应自己数据层 2. 拆分经验:看业务,不看技术 3. 利用:saga, 事务性消息发布,最终一致性,同(异)步调用组合等微服务模式 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb0 码力 | 14 页 | 2.04 MB | 1 年前3 微服务架构及ServiceComb实践关注事务性要求(ACID) 2. 关注对性能的要求 举例:商品维护和下订单是2个微服务,下订单系统对性能有较高要求,所以可以考虑把商品的价格从商品维护微服务同步到订单系统,该同步动作 对性能没有要求,对事务性有要求。 常见的服务间通信模式:同(异)步通信,API组合,基于MQ的异步通信 事务性: saga, 事务性消息发布(一次仅一次),分布式事务等 很易用的服务间saga事务方案Servicecomb-Pack: Login-db Redis Redis Gateway Saga同步qualification 1. 每个微服务对应自己数据层 2. 拆分经验:看业务,不看技术 3. 利用:saga, 事务性消息发布,最终一致性,同(异)步调用组合等微服务模式 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb0 码力 | 14 页 | 2.04 MB | 1 年前3
共 28 条
- 1
- 2
- 3













