微服务环境下的系统治理与容错微服务环境下的系统治理与容错 王新栋 • 《架构修炼之道》作者,《决战618:探秘京东技术取胜之道》联合作者; • 对分布式、微服务系统有多年实战经验,所设计和研发的系统经历了多次百亿流量的验证; • 热爱分享,维护技术公众号 [程序架道],对高并发、高可用系统有持续不懈的追求; 个人微信号 技术公众号 • 微服务架构 • 容错 • 总结 • 治理 微服务架构 架构 架构 架构是为应用程序服务的 软件系统应用程序的需求 软件系统的价值维度 架构师是什么样的人 架构的终极目标 研发团队的持续斗争 研发团队必须从公司长远利益出发与其他部门抗争 -- Robert C. Martin 多种架构思想的本质 分层架构思维到六边形架构思维 业务领域代码 基础设施代码 再看六边形架构 治理 微服务到底需要多“微” 微 微服务的“微”暗示了服务的大 微服务的“微”暗示了服务的大小,但实际上微服务架构对构成的服务实例并没有大小方面的要求。 微服务的微 微服务的两个“谬论” n 服务之间是强隔离的。 n 微服务是大型系统的唯一选择。 解耦合 独立开发部署 架构、组织、流程 微服务架构定义“三步法” 微服务拆分方法 微服务拆分-指导原则 拆服务-单体重构的节奏 服务分解的四大障碍 1、网络延迟 2、同步通信降低了可用性 3、跨服务的数据一致性 4、上帝类0 码力 | 45 页 | 16.09 MB | 1 年前3
微服务的设计原则与⽣态系统 - 王磊微服务的设计原则 与⽣生态系统 王磊磊 华为公司技术专家 ThoughtWorks⾸首席咨询师 Sybase Tech Leader • 《微服务架构与实践》作者 • 《DevOps Handbook》中⽂文译者之⼀一 • 国内较早倡导和实践微服务的先⾏行行者 • 对于⾃自动化测试、持续交付、DevOps有丰富的实践经验 • ⻄西安DevOps Meetup 联合发起⼈人 联合发起⼈人 关于我 议题 • 微服务架构的核⼼心 • 微服务架构设计原则 • 微服务架构⽣生态系统 Are you using microservices? Are you using microservices? https://www.nginx.com/resources/library/app-dev-survey/ 什什么是微服务架构? • 微服务架构是⼀一种架构模式, 识别问题并⽤用⾃自动化的⼿手段消除痛苦 演进式架构 - 运维意识是关键 架构只是抽象,直到真正投⼊入运维产⽣生价值 议题 • 微服务架构的核⼼心 • 微服务架构设计原则 • 微服务架构⽣生态系统 It is about architecture, BUT not only architecture…… 微服务架构的设计原则 • 竞争能⼒力力平衡 • 围绕业务构建 • “去”中⼼心化0 码力 | 62 页 | 6.65 MB | 1 年前3
使用微服务架构快速开发万级TPS高可用电商系统http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 使用微服务架构快速开发万级TPS高可用电商系统 git clone https://github.com/alec-z/servicecomb-samples cd servicecomb-samples/houserush/script/docker 更容易实验和采纳新的技术。 强大: • 使大型的复杂应用程序可以持续的交付和持续的部署。 • 更容易测试 • 更容易对已有大型系统进行修改和扩展 • 容易进行的性能优化 • 更高的可用性 • 更容易的进行性能伸缩性 适合同学们学习 Demo也可以作为生产系统的一部分 [社区网站] http://servicecomb.apache.org [Github ] https://github 的拆分。 不同的业务,涉及的不同的服务间通信有不同的要求 1. 关注事务性要求(ACID) 2. 关注对性能的要求 举例:客户维护和订单是2个微服务,订单系统对性能有较高要求,所以可以考虑把购房资格信息从客户维护微服务同步到订单系统,改同步动作 对性能没有要求,对事务性有要求。 常见的服务间通信模式:同(异)步通信,API组合,基于MQ的异步通信 事务性: saga, 事务性消息发布(一次仅一次),分布式事务等0 码力 | 15 页 | 1.46 MB | 1 年前3
微服务创新新品发布同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 分布式系统配置中心 服务中心异构通信 多语言运行环境 微服务鉴权 微服务契约工具 Apache ServiceComb 面对用户痛点持续创新 3 github.com/apache?q=servicecomb OpenAPI规范契约文件 契约与代码一致性校验报告 契约(接口)文档 异构微服务项目工程 (ServiceComb 或 SpringCloud) 遗留应用代码 (SpringMVC/POJO/JAX-RS) 契约文件 (符合OpenAPI规范) 用户交互 转换 微服务工程构建 CLI命令行 Maven/Gradle 插件 契约提取 代码生成 文档制作 契约校验 ServiceComb SpringCloud 验收微服务 协同企业遗留系统微服务化快速改造,实现基于契约的数据、服务标准化管控 微服务契约工具 https://github.com/apache/servicecomb-toolkit ServiceComb toolkit 提供契约、代码、文档相互转换和校验的能力,帮助用户快速构建基于流行微服务框架和编程模型 的微服务工程,降低微服务学习成本,使能用户聚焦业务开发,提升遗留系统重构、开发效率。0 码力 | 12 页 | 2.96 MB | 1 年前3
Apache ServiceComb 微服务创新项目解读方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 多语言运行环境 服务中心异构通信 微服务鉴权 分布式系统配置中心 微服务契约工具 Apache ServiceComb [Website] http://servicecomb.apache.org [Github ] ServiceComb Toolkit Toolkit - 遵循OpenAPI的微服务开发、改造工具 提供遵循OpenAPI规范的API、代码、文档相互转换和校 验的能力,帮助用户快速构建基于流行微服务框架和编程 模型的微服务脚手架工程,提升遗留系统重构、开发效率 • 项目地址 https://github.com/apache/servicecomb-toolkit • 开发计划 - - 支持API生成Spring Cloud微服务工程 - 支持OAI V3 - 支持toolkit plugin集成到Eclipse&Intellij 接口层 API提取 文档制作 API校验 代码解析 微服务开发框架层 ServiceComb SpringCloud …… 实现层 插件 命令行 …… …… 脚手架服务 [Website] http://servicecomb0 码力 | 13 页 | 1.24 MB | 1 年前3
ServiceComb 介绍企业业务逻辑复杂,如何进行跨团队协同开发? • 大量老旧系统代码,如何支持其服务化改造? • 云化应用面临的监控已经分布调用追踪问题? 企业应用微服务开发面临的问题 ServiceComb 为什么需要服务契约 • 作为服务消费者 • 需要明确知道如何调用服务? • 需要知道服务调用参数有哪些? • 需要知道传输的内容是什么? • 作为服务提供方 • 提供详细描述的文档很难 • 提供和维护标准的SDK也很难 Java Go 服务 契约 生成工具 框架 代码 框架 代码 框架 代码 接口 文档 接口 文档 接口 文档 生成 生成 • 面向接口契约而不是逻辑 • 解耦服务提供者和消费者的开发顺序 • 契约定义为语言中立 • 规范化系统接口,让实现与文档的同步 • 通过工具简化整个过程 API First & Code First 服务契约定义 Event-Loop Process R R W W 线 程 池 • 框架以事件驱劢为基础 • 异步操作提升应用处理效率 • 支持Restful以及RPC 异步事件操作保证系统性能 分布式调用追踪 • 支持标准追踪协议 • Zipkin • 支持@span扩展事务追踪 • 提供调用追踪扩展 • 可以配置自定义的追踪处理器 • 支持适配自定义追踪格式0 码力 | 16 页 | 1.26 MB | 1 年前3
ServiceComb 的前世今生开发 产品发布计划 开发 集成开发 运维人员替换 部 署 旧 版 本 开发 开发 测试/发布 • 技术实现单一,需要想办法用一种技术解决所有问题 • 只能按大颗粒系统发布版本,响应周期长 (小特性版本3-6个月,每年1个大版本) • 无法做到永远在线,大版本升级时,要停机中断服务 微服务化的应用构建和发布 产品发布计划 产品发布计划 服务 契约 生成工具 框架 代码 框架 代码 框架 代码 接口 文档 接口 文档 接口 文档 生成 生成 • 面向契约而不是逻辑 • 解耦服务提供者和消费者的开发顺序 • 契约定义为语言中立 • 规范化系统接口,让实现与文档的同 步成为必须 • 通过工具简化整个过程 API First 增速微服务开发 --- --- 工具支持 OpenAPI (Swagger) 定义 编辑器:在线编辑,语法提示, 错误检查 文档生成器:生成HTML与符合 华为规范文档 Mock生成器:生成Mock工具, 用于测试微服务 现有代码提取 OpenAPI工具 与RPC的IDL互 转工具 protobuf3 多语言多框架代 码生成器 多语言Protobuf3对象 编码库 Java0 码力 | 16 页 | 1.45 MB | 1 年前3
华为企业级PaaS 微服务应用从过去“数据中心网络拓扑几乎没变化”变为“应用发布,应对业务流量,随时随地的网络拓扑变化” • 平台功能解决了应用运行时之前的种种问题,但为了将应用的运行时统一治理,保障业务可靠运行,需要引入微服务框架 来解决分布式系统中的难题 9 github.com/apache?q=servicecomb servicecomb.apache.org ServiceComb实践 servicecomb.apache.org 兼容Spring Cloud与ServiceComb等开源生态,使开发者能够无改造迁移上云 • 多语言解决方案:Java,Go两种语言框架与Service mesh方案 • 契约管理:自动生成API文档,并在中心管理,使集成更加流畅,约束接口不能任意变更 servicecomb.apache.org github.com/apache?q=servicecomb 引擎 把他们放在一起 微服务 • 变更业务配置 管理微服务运行时,查看API文档 对接 监控平台 上报 观察 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
Apache ServiceComb 开源微服务社区q=servicecomb ServiceMesh 服务通信规范 配置 流行微服务框架 可视化监控 分布式追踪 遗留应用转型 全新微服务开发 开发工具 代码自 动生成 契约自 动提取 契约校验 文档自 动生成 微服务脚手架 快速入门 案例代码库 用户手册 社区网站 开源异构微服务兼容 内核 服务中心 微服务开发框架 TCC&Saga 分布式事务框架 认证框架 配置中心 多语言方案 流行 生态 Apache ServiceComb 融合开源生态的一站式微服务解决方案 融合开源生态的一站式微服务解决方案 • 团队协作困难 • 问题定位困难 • 资源利用率低 • 对现有系统改动小 • 提升性能和硬件 利用率 • 提升定位问题效率 Apache ServiceComb 插件式处理链 SpringMVC 编程模型 限流 负载均衡 分布式追踪 动态配置 服务注册 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 多语言运行环境 服务中心异构通信 微服务鉴权 分布式系统配置中心 微服务契约工具 19 年Apache ServiceComb新品发布 面对用户痛点持续创新 财政业务应用 指导 规约 支撑 支撑 云平台 财政业务中台0 码力 | 15 页 | 2.86 MB | 1 年前3
Metrics in ServiceComb Java Chassis 1.0.0-m1 让微服务运行状态清晰可见github.com/apache?q=servicecomb servicecomb.apache.org Apache孵化器毕业 • 社区成熟度模型评估 – 代码,发版,共识决策 • Board决议文档撰写 – PMC成员,PMC Chair,项目章程 • 通过投票的方式进行决议 – PPMC投票 – IPMC投票 • 是否构建了有生命力的社区 • 是否能够自主发布合规版本 https://incubator Sample示例优化 Service Center Java Chassis 0.4.0 服务中心升级 Service Center Java Chassis 0.5.0 边缘服务 系统Metric 异步调用API Saga 0.0.1 集中式Saga原型 Saga 0.0.2 Saga调用支持条件判断 2017年6月 2017年8月 2017年10月 2017年9月 2017年12月0 码力 | 18 页 | 3.12 MB | 1 年前3
共 42 条
- 1
- 2
- 3
- 4
- 5













