微服务场景下的数据一致性解决方案 - 殷湘和平统一 微服务场景下的数据一致性解决方案 殷湘 华为PaaS微服务架构师 开源能力中心 大纲 •离 数据一致性的起因 •合 数据一致性的解决方案 •断 方案选择建议 离 数据一致性的起因 单体应用 • 单体应用由于所有模块(A/B/C)使用同一个数据库 • 数据一致性通过数据库事务保证 A B C commit rollback 微服务场景 MySQL MongoDB MongoDB Cassandra 数据一致性无法完全通过数据库保证 离 独立进程 独立部署 独立技术 独立团队 合 数据一致性的解决方案 T1 T2 T3 C2 C1 • 1987年Hector & Kenneth 发表论文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 transact transact transact B C A Saga compensate compensate 和平统一 减少业务代码集成/运维难度 剥离业务与数据一致性复杂度 和平:低侵入 让运维监控更加简单 可视化事务、调用链 统一:集中式 无状态、可集群、可分片 Event Sourcing架构 高可用 系统架构 – 基于图形 requests0 码力 | 31 页 | 4.28 MB | 1 年前3
华为云分布式事务DTM最佳实践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 9 github.com/apache?q=servicecomb servicecomb.apache.org 使用限制及要求 • 接入DTM的应用程序TCC方法应保证幂等性。 • 接入DTM的应用程序TCC方法应保证原子性。 service DB request response X retry 10 github.com/apache?q=servicecomb servicecomb0 码力 | 15 页 | 3.10 MB | 1 年前3
支持10万TPS的高性能服务间通信解读Executor Queue Thread Pool Logic Logic 5 github.com/apache?q=servicecomb servicecomb.apache.org 可靠性 • 隔离仓 servicecomb: executors: Provider: [schemaId]: [operationId]: executorForSlowMethod • 丢弃策略0 码力 | 7 页 | 1.58 MB | 1 年前3
《Saga分布式事务解决⽅案与实践》演讲者/姜宁如果准备过程中出现问题,可以回滚 • 提交阶段不不允许出错 • 资源层⾯面提供保障业务侵⼊入性低 • 协议成本⾼高,并且存在全局锁的问题 ACID 与 BASE • ACID • 原⼦子性 (Atomicity) • ⼀一致性 (Consistency) • 隔离性 ( Isolation) • 持久性 (Durability) • BASE • 基本可⽤用(Basically 基本可⽤用(Basically Available) • 柔性状态 (Soft state) • 最终⼀一致性 (Eventually Consistent) (刚性事务) (柔性事务) https://queue.acm.org/detail.cfm?id=1394128 TCC • Try: 尝试执⾏行行业务 • 完成所有业务检查,预留留必须的业务资源 • Confirm:确认执⾏行行业务 Cancel:取消执⾏行行业务 • 释放Try阶段预留留的业务资源 业务服务 try confirm cancel 通过领域建模来解决 • 微服务内:聚合通过数据库事务保证强⼀一致 • 内刚 • 微服务间:最终⼀一致 • 外柔 微服务事务⼀一致性建议 • 1987年年Hector & Kenneth 发表论⽂文 Sagas • Saga = Long Live Transaction (LLT)0 码力 | 33 页 | 2.38 MB | 1 年前3
《Saga分布式事务解决⽅案与实践》演讲者/姜宁如果准备过程中出现问题,可以回滚 • 提交阶段不不允许出错 • 资源层⾯面提供保障业务侵⼊入性低 • 协议成本⾼高,并且存在全局锁的问题 ACID 与 BASE • ACID • 原⼦子性 (Atomicity) • ⼀一致性 (Consistency) • 隔离性 ( Isolation) • 持久性 (Durability) • BASE • 基本可⽤用(Basically 基本可⽤用(Basically Available) • 柔性状态 (Soft state) • 最终⼀一致性 (Eventually Consistent) (刚性事务) (柔性事务) https://queue.acm.org/detail.cfm?id=1394128 TCC • Try: 尝试执⾏行行业务 • 完成所有业务检查,预留留必须的业务资源 • Confirm:确认执⾏行行业务 Cancel:取消执⾏行行业务 • 释放Try阶段预留留的业务资源 业务服务 try confirm cancel 通过领域建模来解决 • 微服务内:聚合通过数据库事务保证强⼀一致 • 内刚 • 微服务间:最终⼀一致 • 外柔 微服务事务⼀一致性建议 • 1987年年Hector & Kenneth 发表论⽂文 Sagas • Saga = Long Live Transaction (LLT)0 码力 | 39 页 | 2.78 MB | 1 年前3
解读ApacheApache基⾦会的使命 Apache基⾦会的使命 Apache软基⾦⾦会 (ASF) 是⼀个根据美国法案 501(c)(3)注册公益性组织。 ASF的使命 是通过向加⼊ASF的志同道合的软件项⽬社区提供服务,为公众提供开源软件。 ASF提供了⼀个独⽴于任何公司影响⼒的中⽴空间,保证其中的 项⽬可以在商业友好Apache许可证2.0下繁荣发展, 为公众利益 创建开源软件。 公开成⽴于1999年的公益组织 提供了项⽬的治理 ASF 提供了项⽬的治理 Apache之道 “Apache之道” 核⼼原则 “Apache之道” 核⼼原则 粗略的共识和可以⼯作的代码 ⼩的可逆步骤(进⾏探索) 任何建设性的贡献都可以获得功绩… … ⽽企业从属关系和资 历却没有 功绩不会过期 功绩不给你权威; 它可以让你有⾏使权⼒威信 没有独裁者,没有否决权 - 依赖于建⽴共识 “Apache 之道” AKA 透明度 - 我们的项⽬是公开开发的,所以每个想参与的⼈都 能够参与。 社区 - 我们将社区健康放在⾸位。 注意不是所有的项⽬适合Apache之道的 Apache之道保证了: Apache之道保证了: ⼚商中⽴ 多样性 可信 安全 获取铜牌赞助商以最新赞助信息,请访问 http://www.apache.org/foundation/thanks.html 为什么⼤量的项⽬会加⼊Apache0 码力 | 43 页 | 4.89 MB | 1 年前3
Linux Con Workshop Quick Start Demo 殷湘 姜宁Demo 殷湘 姜宁 • 为了用户能更容易理解微服务架构原则,了解ServiceComb 的功能以及如何用其快速开发微服务; • 所以提供大家耳熟能详的例子,降低学习曲线的同时,增加 趣味性,加深用户的理解 。 Manager (网关) Doorman (认证服务) Worker (运算服务) Bulletin board (服务注册中心) Human resource (服务治理) • 认证用户,保护Worker,以免非法用户骗取服务并逃避服务费用; • 联系能力相符的Worker ,平衡工作量,避免单个Worker超载; • 管理Project archiv,避免重复工作,保证Company收益最大化。 Doorman为Company项目组提供安全保障,屏蔽非合法用户, 防止其骗取免费服务,甚至伤害Worker/Beekeeper Worker提供复杂数学计算服务,并给出结果。 供的计算服务,节省项目组开支 Human Resource从运维层面保证服务的可靠性,主要功能有 • 弹性伸缩:保证用户请求量超过Worker处理能力的某个阈值后,招聘更多Worker加入项目; 当请求量回落后,裁剪Worker以节省项目组开支 • 健康检查:保证Worker告病时,能有替补接手任务 • 滚动升级:保证项目需要新技能时,能替换、培训Worker ,不中断接收项目请求 •0 码力 | 12 页 | 2.10 MB | 1 年前3
ServiceCenter - 服务注册中心提供标准接口(RESTful) 2. 负载均衡,服务订阅(客户端LB,长连接) 3. 运行时依赖(Go) 4. 可靠性(BASE,最终一致性) 从服务注册中心到服务管理中心 1. 元数据 2. 依赖关系 3. 实例变化推送 4. 多租隔离 5. 高可用性保障 从服务注册中心到服务管理中心 元数据 1. 应用App,便于微服务可在多个应用间重用 2. 微服务名称,App内唯一 微服务标签,支持按标签检索 高可用性保障 互联网分布式系统设计的准则:BASE 1. Basically Available(基本可用) 2. Soft state(软状态) 3. Eventually consistent(最终一致性) CAP理论:Consistency(一致性), 在分布式系统的各点同时保持数据的一致。 Availability(可用性), 每个请求都能接受到一个响应,无论响应成功戒失败。 Partition tolerance(分区容错性),当出现网络分区故障时系统的容错能力 从微服务到服务管理中心 1.实例缓存机制 从微服务到服务管理中心 2.心跳保活机制 从服务管理中心到etcd 1.异步缓存机制 从服务管理中心到etcd 2.异步心跳机制 自我保护机制 前面提到的缓存机制,保证了ServiceCenter在etcd出现网络分区故障时依0 码力 | 18 页 | 856.27 KB | 1 年前3
微服务架构与领域驱动设计 - 王磊�8 领域驱动设计解决的两个核⼼心问题: 1.业务架构如何合理理的设计划分? 2.技术架构与业务架构保持⼀一致? 领域驱动设计是⼀一种设计⽅方法,围绕业务概念构建领域模型, 并通过分离技术实现的复杂性,从⽽而控制软件演化的复杂度。 Tacking Complexity in the heart of software �9 微服务架构与领域驱动设计? �10 • 能有效⽀支撑演进式架构 Shared Kernel • Anti-Corruption Layer Entity - 实体对象 • ⼀一个对象通过ID被唯⼀一标识 Value Object - 值对象 • 通过值确定对象的等价性 Domain Services - 业务逻辑 Aggregate - 聚合(根) • ⼀一组实体对象和值对象的集合 • 外部对聚合的访问通过聚合根 Factories - 对象⼯工⼚厂 Repository 统⼀一语⾔言 ① ② ③ ④ ⑤ ⑥ 参与过程: • 根据对业务的理理解,将领域事件写在橙⾊色贴上,每个即时贴代表⼀一个事件 • 事件按照从左到右按时间顺序排列列,不不同参与者的事件需保证相对顺序 • 事件采⽤用⽤用“xx已xx”的格式,如“订单已创建” 什什么是(领域)事件? • 任何的业务都会以数据的形式留留下⾜足迹。我们对于数据的追溯可以通过对 事件的追溯来完成。当把这些0 码力 | 28 页 | 1.84 MB | 1 年前3
ServiceComb 的前世今生旧版本持续运行 Speed & Safety 面临的问题 • 企业应用和互联网应用的不同? • 如何做到不同ISV的应用互联互通统一管理? • 怎么才能加快微服务的开发? • 微服务化后如何保证性能? • 如何进行统一的路由控制? 企业应用和集成 Java 注册中心、治理中心 Go 服务 契约 生成工具 框架 代码 框架 代码 框架 代码 接口 IDE插件支持(Maven插件) 增速微服务开发 --- 降低学习门槛 SpringMVC JAXRS 性能保证 Process Event-Loop Process R R W W 线 程 池 •异步 • 标准、开放、协议健壮性 • 开发框架的性能在于细节,而不仅仅 是协议。 更细致的服务路由管控 ETCD 集群 服务中 心实例 服务中 SpringMVC JAX-RS RPC编程 REST通讯 XX通讯插件 RPC通讯 TCC XX事务 强事务 多语言 多编程框架 多通信协议 多事务一致性 Java 微服务 Go 微服务 XX语言 微服务 Spring微 服务 遗留 应用 微服务云服务: https://servicestage.huaweicloud0 码力 | 16 页 | 1.45 MB | 1 年前3
共 40 条
- 1
- 2
- 3
- 4













