微服务场景下的数据一致性解决方案 - 殷湘
和平统一 微服务场景下的数据一致性解决方案 殷湘 华为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 B C A Saga compensate compensate 和平统一 减少业务代码集成/运维难度 剥离业务与数据一致性复杂度 和平:低侵入 让运维监控更加简单 可视化事务、调用链 统一:集中式 无状态、可集群、可分片 Event Sourcing架构 高可用 系统架构 – 基于图形 requests { T1:[a,b], C1:[c,d],0 码力 | 31 页 | 4.28 MB | 1 年前3使用微服务架构快速开发万级TPS高可用电商系统
更容易实验和采纳新的技术。 强大: • 使大型的复杂应用程序可以持续的交付和持续的部署。 • 更容易测试 • 更容易对已有大型系统进行修改和扩展 • 容易进行的性能优化 • 更高的可用性 • 更容易的进行性能伸缩性 适合同学们学习 Demo也可以作为生产系统的一部分 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache 管理楼盘的基本信息,楼盘 1-n 楼栋 1-n 房源。 管理开售活动,进行开售时 的抢购 用户查看自己的开售活动和 抢房资格,管理查看收藏的 房源,查看自己的抢房结果。 用户和管理员登录/修改密 码等功能。可扩展为多种登 录方式。 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 举例:客户维护和订单是2个微服务,订单系统对性能有较高要求,所以可以考虑把购房资格信息从客户维护微服务同步到订单系统,改同步动作 对性能没有要求,对事务性有要求。 常见的服务间通信模式:同(异)步通信,API组合,基于MQ的异步通信 事务性: saga, 事务性消息发布(一次仅一次),分布式事务等 很易用的服务间saga事务方案Servicecomb ServicePack: https://github0 码力 | 15 页 | 1.46 MB | 1 年前3华为企业级PaaS 微服务应用
q=servicecomb ServiceStage overall ServiceStage 微服务解决方案 容器云平台(CCE) Serverless云平台(CCI) 微服务咨询 现状分析 适用性评估 试点实施 效果评估 经验固化 目标设定 培 训 ( 理 论 、 案 例 、 实 战 演 练 ) 应用管理平台(CAS) 生命周期管理 部署/卸载 启动/停止 升级/回滚 灰度发布 Build, ship and run in any infrastructure • 开发者不需要知道应用部署到容器还是虚机中,只需要像过去一样开发应用 • Java,Go,Nodejs等语言可部署到ARM,x86不同的基础设施中 • 完善的自动化促使组织能够管理大规模,快速的部署应用实例,应对业务流量,需求的变化 源码 软件中心 流水线 构建 归档 部署 配置中心 java python 监控平台 上报 观察 servicecomb.apache.org github.com/apache?q=servicecomb 案例 servicecomb.apache.org github.com/apache?q=servicecomb 助力文思海辉PHP语言系统实现 全微服务化架构 基于RFID技术的楼宇设施管理 遇到的问题 性能瓶颈稳定 性差 复杂度高不易 扩展0 码力 | 17 页 | 3.42 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庖丁解牛:华为云微服务工具解放开发者
因素 单体架构 微服务架构 交付速度 较慢 较快 故障隔离范围 线程级 进程级 整体可用性 较低 更高 架构持续演进 困难 简单 沟通效率 低 高 技术栈选择 受限 灵活 可扩展性 受限 灵活 可重用性 低 高 实现业务复杂性分解难度 困难 容易 产品创新复杂度 困难 容易 一致性实现成本 低 高 时延 低 高 资源成本 低 高 关联查询复杂度 简单 复杂 远程调用 不涉及 运维复杂度 低 高 Huawei Confidential 4 微服务架构的第一大问题——如何拆分微服务? •影响因素 >团队大小 >交付周期 >业务方向 >故障范围 >现有数据规模 >吞吐量 >一致性 >…… Huawei Confidential 5 拆分不好,可能带来的问题 •拆分不好,可能带来的问题 >服务数量爆炸,运维复杂 >服务数量太少,不够灵活 >一个user story影响众多服务 规则2:完全独立的表可归属任意微服务,也可独立成微服务 规则3:归属同一微服务的表数量不低于5(作为参数可配置) 规则4:关联度大于10(作为参数可配置)的表归属同一微服务 Huawei Confidential 8 微服务拆分工具 单体应用 单体数据库 微服务数据库 A库 B库 服务A 服务B 步骤1:通过SQL的关联程 度、使用次数等,识别出 相关性最高的表划分成一 个微服务0 码力 | 14 页 | 1.54 MB | 1 年前3Service Mesh在华为公 有云的实践
⽆无需多种语⾔言的微服务框架开发 • 对业务代码0侵⼊入 • 不适合改造的单体应⽤用 • 开发出开的应⽤用既是云原⽣生的⼜又具有独⽴立性 没有银弹 • 新的故障点 • ⼀一定程度的性能降低 • 侵⼊入式框架有更强的定制和扩展能⼒力 • 部署复杂性 • 简介 • 实现⼀一个Service Mesh • 使⽤用Service Mesh快速构建微服务 • ⽣生态与扩展 • Service 基于容器的分布式系统设计模式 • 容器可以共享存储与⺴⽹网络的能⼒力 应⽤用程序容器 ⽇日志同步⼯工具容器 存储卷 Sidecar优势 • 以容器作为基础打包单元,可以分给不同的团队进⾏行开发测试 • 可重⽤用 • 以容器作为错误边界,使服务能够正确推出 • 独⽴立回滚与更新 第⼆二代:HSA SideCar • 2016年,基于Java 微服务 框架开发 • 提供SOAP协议转换 • 与微服务部署在⼀一个Pod • ⽣生成监控数据 Mesher ServiceC Mesher ServiceD Mesher ServiceA Mesher ServiceB Control Plane 可⼈人⼯工介⼊入,为所有运⾏行的Mesher 提供配置下发,不会碰服务请求 • 注册中⼼心 • 下发配置 • 对接监控服务 • 调度引擎 Mesher Mesher Mesher Mesher0 码力 | 52 页 | 4.37 MB | 1 年前3微服务创新新品发布
在同一个业 务领域的微 服务中使用 了多种不同 语言进行开 发部署 使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 分布式系统配置中心 服务中心异构通信 多语言运行环境 微服务鉴权 metal 4 github.com/apache?q=servicecomb servicecomb.apache.org 用户输入 第三方 输出 OpenAPI规范契约文件 契约与代码一致性校验报告 契约(接口)文档 异构微服务项目工程 (ServiceComb 或 SpringCloud) 遗留应用代码 (SpringMVC/POJO/JAX-RS) 契约文件 (符合OpenAPI规范) ingCloud的微服务工程。 • 代码提取契约:一键从基于SpringMVC/POJO/JAX-RS编程模型开发代码提取OpenAPI契约。 • 契约校验:一键校验实际代码的实现是否与约定契约一致性。 • 契约/代码生成文档:一键制作html文档。 5 github.com/apache?q=servicecomb servicecomb.apache.org 服务中心异构通信 Syncer0 码力 | 12 页 | 2.96 MB | 1 年前3ServiceComb在华为消费者云的亿级用户微服务实践
统的同步服务调用,性能更高(吞吐量N倍+提升、时延降低 为原来的50%-) 轻量级、易集成:可以方便的与Spring MVC、Tomcat等 已有技术和容器集成,支持轻量级的standalone部署 服务治理:可商用的服务治理能力 成熟和商用支持:Apache孵化项目,公司内部大规模使 用,专职的团队支撑 微服务框架 RPC框架 跨语言: gRPC Thrift ServiceComb http://servicecomb.incubator.apache.org/ Gitter: https://gitter.im/ServiceCombUsers/Lobby 适合异步的业务采用全栈异步架构,提升性能和可靠性 异步场景1:降低长流程/复杂业务流程时延:消费端需要调用多个微服务,进行业务逻辑编排,多个微服务之间没有执行先后顺序 和参数依赖,可以通过异步微服务调用并行执行 异步场景2:性能提升:使用更少 异步场景3:业务超时较长:业务上对服务调用时延不敏感(例如1-3S),如果采用同步调用 + 大超时时间,在业务高峰期,如果 时延达到超时阈值,系统很容易被压挂 异步场景4:级联调用:需要级联调用多个微服务,希望提升可靠性,不会因为某个微服务处理慢而导致其它微服务调用被阻塞 传统I/O和业务线程分离技术: 纯Reactive异步: 性能对比测试:采用Reactive异步模式之 后,TPS提升 43% 左右、时延降低0 码力 | 15 页 | 1.15 MB | 1 年前3Apache ServiceComb 微服务创新项目解读
在同一个业 务领域的微 服务中使用 了多种不同 语言进行开 发部署 使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 多语言运行环境 服务中心异构通信 微服务鉴权 分布式系统配置中心 com/apache/servicecomb-toolkit/blob/master/samples/README-ZH.md 用户 第三方 输出 遵循OpenAPI规范 API文件 代码与API 一致性比较报告 API文档 基于ServiceComb/SpringCloud 微服务工程 用户交互 转换 微服务开发框架 API提取 代码生成 文档生成 ServiceComb ServiceComb https://github.com/apache?q=servicecomb Syncer是一个多服务中心的同步工具,对应用程序透明。专为大型微服务架构设计,实现不同的微服务技术栈实现的微服 务业务可以进行数据通信,未来可支持跨云的数据通信支持 • 项目地址:https://github.com/apache/servicecomb-service-center/tree/master/syncer Syncer -0 码力 | 13 页 | 1.24 MB | 1 年前3ServiceComb介绍
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 多数据中⼼心⽀支持 契约测试 微服务管理理控制 开源配置中⼼心 对接多监控系统 Service Mesh 多语⾔言微服务⽀支持 监控管理理对接 多协议对接 微服务事务协调器器 服务端⾼高可⽤用 管理理控制台 TCC事务协调 如何加⼊入到ServiceComb社区 • 线上 • 关注ServiceComb微信⼩小助⼿手, 加⼊入微信群与⼤大家进⾏行行交流 • 官⽹网0 码力 | 16 页 | 877.58 KB | 1 年前3
共 40 条
- 1
- 2
- 3
- 4