微服务场景下的数据一致性解决方案 - 殷湘和平统一 微服务场景下的数据一致性解决方案 殷湘 华为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 有对应的补偿 Saga transact transact transact B C A Saga compensate compensate 和平统一 减少业务代码集成/运维难度 剥离业务与数据一致性复杂度 和平:低侵入 让运维监控更加简单 可视化事务、调用链 统一:集中式 无状态、可集群、可分片 Event Sourcing架构 高可用 系统架构 – 基于图形 requests0 码力 | 31 页 | 4.28 MB | 1 年前3
庖丁解牛:华为云微服务工具解放开发者对工具的依赖 较低 较高 运维复杂度 低 高 Huawei Confidential 4 微服务架构的第一大问题——如何拆分微服务? •影响因素 >团队大小 >交付周期 >业务方向 >故障范围 >现有数据规模 >吞吐量 >一致性 >…… Huawei Confidential 5 拆分不好,可能带来的问题 •拆分不好,可能带来的问题 >服务数量爆炸,运维复杂 >服务数量太少,不够灵活 >一个user Confidential 6 通过微服务拆分工具解放开发者 支撑活动 方法论 • ThoughtWorks五步十一阶 • DDD聚合 • 事件源Event Sourcing • 命令查询责任分离CQRS 现有做法 业务改造 投入大 + 应用上云 + IaaS 应用微服务改造 + PaaS 业务创新 如AI 拆表 拆界面及业务逻辑 微服务化改造典型流程 挑战:强业务相关, 必须业务+微服务专 Confidential 8 微服务拆分工具 单体应用 单体数据库 微服务数据库 A库 B库 服务A 服务B 步骤1:通过SQL的关联程 度、使用次数等,识别出 相关性最高的表划分成一 个微服务 微服务数据库 A库 B库 服务A 服务B 步骤2:通过表结构调整, 将不同的数据库进行解耦, 防止一个微服务跨库访问 (反范式、服务重构等) 微服务数据库 A库 B库 服务A 服务B 步骤3:大表水平拆分,实0 码力 | 14 页 | 1.54 MB | 1 年前3
康彬-基于微服务的混合云和同城双活实践核心交易平台 风控审核平台 计算资源 (CPU) 存储资源 (内存|磁盘) 网络资源 (ip|端口|带宽) 中间件层 微服务框架 服务元数据管理 服务发布 服务订阅 消息中间件 消息元数据管理 消息生产 消息消费 job调度系统 job元数据管理 job发布 job调度 配置中心 mq管理系统 调用链路 系统 监控告警 系统 发布系统 服务注册 中心 服务治理 机器准备周期长,紧急 情况无法应对 大促后机器闲置率高,资 源浪费巨大 混合云需求分析 机器资源按需 申请 01 接入层按url调 度流量 02 服务层set化的 路由策略 03 数据层读请求 上云,写请求 回自建idc 04 流量大户上云,顶住流量洪峰 机器器资源按需分配 接入层URL粒度流量调度 LB DNS app/browser Nginx-Proxy Nginx-Proxy 越来越大,怎么破? 单元化&多活的范围 boss 客服系统 销售系统 风控审核 催收系统 政策管理 prod devops 监控系统 调用链路 日志系统 …… oa 人事系统 智能推荐 大数据 AI/BI …… 交易平台 电商 现金 信用卡 会员 桔子理财 风控平台 用户增长 发布系统 故障时,只影响内 部办公相关的公司 经营活动,不影响 用户下单交易 故障时,间接或部分影响用户0 码力 | 47 页 | 6.09 MB | 1 年前3
Apache ServiceComb 微服务创新项目解读使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 多语言运行环境 服务中心异构通信 微服务鉴权 分布式系统配置中心 微服务契约工具 Apache ServiceComb [Website] 发布契约 ServiceComb 契约开发工具 开发微服务 测试微服务 客户+集成商 软件提供商 部署微服务 契约仓库 微服务 运行环 境 验收微服务 协同实现基于契约(API)的数据、服务标准化管控 划分微服务 (含依赖关系) 定义契约 (接口和模型) 发布契约 微服务 运行环 境 验收微服务 基于OpenAPI规范 全新微服务开发 遗留应用微服务化改造 Maven https://github.com/apache?q=servicecomb Syncer是一个多服务中心的同步工具,对应用程序透明。专为大型微服务架构设计,实现不同的微服务技术栈实现的微服 务业务可以进行数据通信,未来可支持跨云的数据通信支持 • 项目地址:https://github.com/apache/servicecomb-service-center/tree/master/syncer Syncer -0 码力 | 13 页 | 1.24 MB | 1 年前3
微服务创新新品发布使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 分布式系统配置中心 服务中心异构通信 多语言运行环境 微服务鉴权 微服务契约工具 Apache ServiceComb 面对用户痛点持续创新 ServiceComb 契约开发工具 开发微服务 测试微服务 客户+集成商 软件开发商 部署微服务 契约仓库 微服务 运行环 境 验收微服务 协同企业遗留系统微服务化快速改造,实现基于契约的数据、服务标准化管控 微服务契约工具 https://github.com/apache/servicecomb-toolkit ServiceComb toolkit 提供契约、代码、文档相互转换和 Syncer Register Instances Discover Serf(Gossip) Syncer Follower Syncer Follower Etcd(raft) 服务实例数据通道 Syncer集群间的消息通 道 Syncer Leader Eureka/Consule /Istio/K8S… Register Instances Discover https://github0 码力 | 12 页 | 2.96 MB | 1 年前3
Apache ServiceComb 开源微服务社区边缘服务 熔断/容错 安全认证 分布式事务 标准契约管理 微服务脚手架 配置治理中心 POJO 编程模型 JAX-RS 编程模型 通信模型 RPC 插件式扩展 开箱即用 编程/通信模型分离 轻量级边缘服务 纯异步内核 内置监控治理 分布式事务方案 标准契约管理 复杂留给自己,极简留给用户 • 跨服务事务一致性 • 多语言,同时选型 • 灵活扩展、定制 • 减少基础设施运 维工作量 使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 多语言运行环境 服务中心异构通信 微服务鉴权 分布式系统配置中心 微服务契约工具 19 年Apache ServiceComb新品发布 电子印章 报表 电子凭证 工作流 标准存储 数据交换 …… 财政微应用 预算 编制 指标 管理 …… 财务微应用 会计 核算 项目 库 …… 统一基础 数据规范 统一财政 业务数据 标准存储 统一应用 支撑平台 总账结构 统一纵向 层级交换 机制 统一信息 安全体系 软件开发服务 ServiceStage 大数据服务 系统集成服务 IaaS(计算、存储、网络、安全)0 码力 | 15 页 | 2.86 MB | 1 年前3
微服务架构与领域驱动设计 - 王磊领域驱动设计是⼀一种设计⽅方法,围绕业务概念构建领域模型, 并通过分离技术实现的复杂性,从⽽而控制软件演化的复杂度。 Tacking Complexity in the heart of software �9 微服务架构与领域驱动设计? �10 • 能有效⽀支撑演进式架构 微服务架构与领域驱动设计 �11 随着时间的推移,采⽤用领域驱动设计⽐比采⽤用 以数据中⼼心设计的软件复杂度要低得多。 《Pattern • 领域模型的业务逻辑 Application Services • 同应⽤用相关的接⼝口适配 User Interface • ⽤用户接⼝口相关的部分 Infrastructure • 数据相关部分:WebService/DB/File • ⽀支撑相关部分: 环境相关配置 Onion架构 微服务架构与DDD 01 领域驱动设计的核⼼心 02 基于事件⻛风暴暴的DDD实践 03 顺序 • 事件采⽤用⽤用“xx已xx”的格式,如“订单已创建” 什什么是(领域)事件? • 任何的业务都会以数据的形式留留下⾜足迹。我们对于数据的追溯可以通过对 事件的追溯来完成。当把这些事件按照时间顺序排列列起来,⼏几乎可以清晰 的推测出在过往的⼀一段时间内到底发⽣生了了深数据变化。 寻找命令 参与过程: • 将命令写在蓝⾊色即时贴上 • 将命令贴在所产⽣生的事件旁边 • 有的命令可能产⽣生多个事件0 码力 | 28 页 | 1.84 MB | 1 年前3
《Saga分布式事务解决⽅案与实践》演讲者/姜宁• 后续的开发计划 微服务架构 • 微服务架构将⼀一个应⽤用分成多个相互独⽴立的服务。 • 好处是各个服务能够持续独⽴立的开发和部署。 • 难题是服务的数据需要采⽤用什什么样的⽅方式来进⾏行行存储? 多个微服务使⽤用同⼀一数据库 A B C commit rollback ⼀一个典型的微服务架构应⽤用 EdgeService Customer Service Order 真正执⾏行行业务,不不做业务检查 • Cancel:取消执⾏行行业务 • 释放Try阶段预留留的业务资源 业务服务 try confirm cancel 通过领域建模来解决 • 微服务内:聚合通过数据库事务保证强⼀一致 • 内刚 • 微服务间:最终⼀一致 • 外柔 微服务事务⼀一致性建议 • 1987年年Hector & Kenneth 发表论⽂文 Sagas • Saga = Long T T' time • 可交换补偿 T C = T C T 对服务的要求 • 幂等 T = T T … T car rental saga T T' time C 保留留所有事务数据! car rental saga T T' time ACID 与 Saga • ACID • 原⼦子性 (Atomicity) • ⼀一致性 (Consistency) •0 码力 | 33 页 | 2.38 MB | 1 年前3
《Saga分布式事务解决⽅案与实践》演讲者/姜宁• 后续的开发计划 微服务架构 • 微服务架构将⼀一个应⽤用分成多个相互独⽴立的服务。 • 好处是各个服务能够持续独⽴立的开发和部署。 • 难题是服务的数据需要采⽤用什什么样的⽅方式来进⾏行行存储? 多个微服务使⽤用同⼀一数据库 A B C commit rollback ⼀一个典型的微服务架构应⽤用 EdgeService Customer Service Order 真正执⾏行行业务,不不做业务检查 • Cancel:取消执⾏行行业务 • 释放Try阶段预留留的业务资源 业务服务 try confirm cancel 通过领域建模来解决 • 微服务内:聚合通过数据库事务保证强⼀一致 • 内刚 • 微服务间:最终⼀一致 • 外柔 微服务事务⼀一致性建议 • 1987年年Hector & Kenneth 发表论⽂文 Sagas • Saga = Long T T' time • 可交换补偿 T C = T C T 对服务的要求 • 幂等 T = T T … T car rental saga T T' time C 保留留所有事务数据! car rental saga T T' time ACID 与 Saga • ACID • 原⼦子性 (Atomicity) • ⼀一致性 (Consistency) •0 码力 | 39 页 | 2.78 MB | 1 年前3
华为微服务框架ServiceComb• Java/Go 微服务框架 • 提供微服务注册发现以及限流降级,容错熔断等治理功能 • Service Center • 高性能,高可用服务注册中心 • Saga • 微服务数据一致性问题解决方案 • 提供一个集中式的事务协调器,协调微服务乊间的事务,保证事务最终一致性 2018 Building Microservice NO.1 深圳站: Cloud Native 1 深圳站: Cloud Native 架构下的 K8S 和微服务实践 异步性能支持 • 基于Vertx提供的异步内核 • 保持高性能的同时支持同步调用方式 • 将通信线程不业务处理线程分离 • 操作级别线程池控制,支持隔离仓 • 支持多种异步编程接口 • CompletableFuture • RxJava • Reactive Stream • ……. Process NO.1 深圳站: Cloud Native 架构下的 K8S 和微服务实践 微服务数据一致性问题 A B C commit rollback 2018 Building Microservice NO.1 深圳站: Cloud Native 架构下的 K8S 和微服务实践 微服务数据一致性问题 A B C 2018 Building Microservice0 码力 | 28 页 | 1.53 MB | 1 年前3
共 40 条
- 1
- 2
- 3
- 4













