 庖丁解牛:华为云微服务工具解放开发者庖丁解牛:华为云微服务工具解放开发者 部门:应用平台服务 作者:王启军 日期:20190920 Security Level: 目录 1. 微服务拆分工具 2. 契约管理工具 Huawei Confidential 3 微服务架构的优势 因素 单体架构 微服务架构 交付速度 较慢 较快 故障隔离范围 线程级 进程级 整体可用性 较低 更高 架构持续演进 困难 简单 沟通效率 产品创新复杂度 困难 容易 一致性实现成本 低 高 时延 低 高 资源成本 低 高 关联查询复杂度 简单 复杂 远程调用 不涉及 涉及 服务治理 不涉及 涉及 对开发人员的要求 低 高 对工具的依赖 较低 较高 运维复杂度 低 高 Huawei Confidential 4 微服务架构的第一大问题——如何拆分微服务? •影响因素 >团队大小 >交付周期 >业务方向 >故障范围 >现有数据规模 >服务数量爆炸,运维复杂 >服务数量太少,不够灵活 >一个user story影响众多服务 >接口频繁变更 >大量关联查询 >系统架构复杂度提升 Huawei Confidential 6 通过微服务拆分工具解放开发者 支撑活动 方法论 • ThoughtWorks五步十一阶 • DDD聚合 • 事件源Event Sourcing • 命令查询责任分离CQRS 现有做法 业务改造 投入大0 码力 | 14 页 | 1.54 MB | 1 年前3 庖丁解牛:华为云微服务工具解放开发者庖丁解牛:华为云微服务工具解放开发者 部门:应用平台服务 作者:王启军 日期:20190920 Security Level: 目录 1. 微服务拆分工具 2. 契约管理工具 Huawei Confidential 3 微服务架构的优势 因素 单体架构 微服务架构 交付速度 较慢 较快 故障隔离范围 线程级 进程级 整体可用性 较低 更高 架构持续演进 困难 简单 沟通效率 产品创新复杂度 困难 容易 一致性实现成本 低 高 时延 低 高 资源成本 低 高 关联查询复杂度 简单 复杂 远程调用 不涉及 涉及 服务治理 不涉及 涉及 对开发人员的要求 低 高 对工具的依赖 较低 较高 运维复杂度 低 高 Huawei Confidential 4 微服务架构的第一大问题——如何拆分微服务? •影响因素 >团队大小 >交付周期 >业务方向 >故障范围 >现有数据规模 >服务数量爆炸,运维复杂 >服务数量太少,不够灵活 >一个user story影响众多服务 >接口频繁变更 >大量关联查询 >系统架构复杂度提升 Huawei Confidential 6 通过微服务拆分工具解放开发者 支撑活动 方法论 • ThoughtWorks五步十一阶 • DDD聚合 • 事件源Event Sourcing • 命令查询责任分离CQRS 现有做法 业务改造 投入大0 码力 | 14 页 | 1.54 MB | 1 年前3
 微服务的设计原则与⽣态系统 - 王磊服务,服务之间互相协作,为⽤用户提供最终价值 • 每个服务运⾏行行在其独⽴立的进程中,服务间采⽤用轻量量级的通信机制协作(通常是基于RESTful API) • 每个服务都围绕着具体业务进⾏行行构建,并且能够被独⽴立的部署到⽣生产环境、类⽣生产环境等 Microservices – the new architectural style. Martin Fowler,Mar 2014 . • 微服务架构⽣生态系统 It is about architecture, BUT not only architecture…… 微服务架构的设计原则 • 竞争能⼒力力平衡 • 围绕业务构建 • “去”中⼼心化 • ⾃自动化“⼀一切” 没有完美的架构,只有适合的架构 • Velocity • Scalability • Availability • Agility • Testability 微服务架构的设计原则 • 竞争能⼒力力平衡 • 围绕业务构建 • “去”中⼼心化 • ⾃自动化“⼀一切” • 业务领域模型(Domain) • 通⽤用语⾔言(Ubiquitous language) • 界限上下⽂文(Bundle context) 围绕业务-构建团队 围绕业务-构建团队 VS 服务A 开发 测试 DBA UI/UX 运维 服务B0 码力 | 62 页 | 6.65 MB | 1 年前3 微服务的设计原则与⽣态系统 - 王磊服务,服务之间互相协作,为⽤用户提供最终价值 • 每个服务运⾏行行在其独⽴立的进程中,服务间采⽤用轻量量级的通信机制协作(通常是基于RESTful API) • 每个服务都围绕着具体业务进⾏行行构建,并且能够被独⽴立的部署到⽣生产环境、类⽣生产环境等 Microservices – the new architectural style. Martin Fowler,Mar 2014 . • 微服务架构⽣生态系统 It is about architecture, BUT not only architecture…… 微服务架构的设计原则 • 竞争能⼒力力平衡 • 围绕业务构建 • “去”中⼼心化 • ⾃自动化“⼀一切” 没有完美的架构,只有适合的架构 • Velocity • Scalability • Availability • Agility • Testability 微服务架构的设计原则 • 竞争能⼒力力平衡 • 围绕业务构建 • “去”中⼼心化 • ⾃自动化“⼀一切” • 业务领域模型(Domain) • 通⽤用语⾔言(Ubiquitous language) • 界限上下⽂文(Bundle context) 围绕业务-构建团队 围绕业务-构建团队 VS 服务A 开发 测试 DBA UI/UX 运维 服务B0 码力 | 62 页 | 6.65 MB | 1 年前3
 ServiceComb 的前世今生技术实现单一,需要想办法用一种技术解决所有问题 • 只能按大颗粒系统发布版本,响应周期长 (小特性版本3-6个月,每年1个大版本) • 无法做到永远在线,大版本升级时,要停机中断服务 微服务化的应用构建和发布 产品发布计划 产品发布计划 产品发布计划 产品发布计划 开发 部署到生成 环境 部署到生成 环境 开发 开发 部署到生成 环境 部署到生成 生成工具 框架 代码 框架 代码 框架 代码 接口 文档 接口 文档 接口 文档 生成 生成 • 面向契约而不是逻辑 • 解耦服务提供者和消费者的开发顺序 • 契约定义为语言中立 • 规范化系统接口,让实现与文档的同 步成为必须 • 通过工具简化整个过程 API First 增速微服务开发 --- 工具支持 OpenAPI OpenAPI (Swagger) 定义 编辑器:在线编辑,语法提示, 错误检查 文档生成器:生成HTML与符合 华为规范文档 Mock生成器:生成Mock工具, 用于测试微服务 现有代码提取 OpenAPI工具 与RPC的IDL互 转工具 protobuf3 多语言多框架代 码生成器 多语言Protobuf3对象 编码库 Java 微服务编程框架 Go 框架0 码力 | 16 页 | 1.45 MB | 1 年前3 ServiceComb 的前世今生技术实现单一,需要想办法用一种技术解决所有问题 • 只能按大颗粒系统发布版本,响应周期长 (小特性版本3-6个月,每年1个大版本) • 无法做到永远在线,大版本升级时,要停机中断服务 微服务化的应用构建和发布 产品发布计划 产品发布计划 产品发布计划 产品发布计划 开发 部署到生成 环境 部署到生成 环境 开发 开发 部署到生成 环境 部署到生成 生成工具 框架 代码 框架 代码 框架 代码 接口 文档 接口 文档 接口 文档 生成 生成 • 面向契约而不是逻辑 • 解耦服务提供者和消费者的开发顺序 • 契约定义为语言中立 • 规范化系统接口,让实现与文档的同 步成为必须 • 通过工具简化整个过程 API First 增速微服务开发 --- 工具支持 OpenAPI OpenAPI (Swagger) 定义 编辑器:在线编辑,语法提示, 错误检查 文档生成器:生成HTML与符合 华为规范文档 Mock生成器:生成Mock工具, 用于测试微服务 现有代码提取 OpenAPI工具 与RPC的IDL互 转工具 protobuf3 多语言多框架代 码生成器 多语言Protobuf3对象 编码库 Java 微服务编程框架 Go 框架0 码力 | 16 页 | 1.45 MB | 1 年前3
 Service Mesh在华为公
有云的实践,Service Mesh服务商⽤用上 线公有云 • 简介 • 实现⼀一个Service Mesh • 使⽤用Service Mesh快速构建微服务 • ⽣生态与扩展 • Service Mesh在华为内部的技术演进 我们在构建微服务,⽽而构建微服务是困难 的 微服务架构模式引⼊入的问题 路由规则 • 引流 • ⽀支持权重 • 根据消费者信息或请求特征进⾏行引流 Consumer Mesh快速构建微服务 • ⽣生态与扩展 • Service Mesh在华为内部的技术演进 第⼀一代:基于Nginx的微服务代理 • 2013年,微服务开发平台中的组 件,公司内部某电信业务 • 400多个微服务,800左右实例, 200多个数据中⼼心 Sidecar模式 • 基于容器的分布式系统设计模式 • 容器可以共享存储与⺴⽹网络的能⼒力 应⽤用程序容器 ⽇日志同步⼯工具容器 存储卷 PerHost模式运⾏行 • ⽀支持多种部署⽅方式 • 占⽤用资源⼩小(闲置10多M,并发运⾏行时30多M) • 简介 • 实现⼀一个Service Mesh • 使⽤用Service Mesh快速构建微服务 • ⽣生态与扩展 • 与PaaS平台结合 • Service Mesh在华为内部的技术演进 整体架构 Mesher Service Mesher Service Mesher0 码力 | 52 页 | 4.37 MB | 1 年前3 Service Mesh在华为公
有云的实践,Service Mesh服务商⽤用上 线公有云 • 简介 • 实现⼀一个Service Mesh • 使⽤用Service Mesh快速构建微服务 • ⽣生态与扩展 • Service Mesh在华为内部的技术演进 我们在构建微服务,⽽而构建微服务是困难 的 微服务架构模式引⼊入的问题 路由规则 • 引流 • ⽀支持权重 • 根据消费者信息或请求特征进⾏行引流 Consumer Mesh快速构建微服务 • ⽣生态与扩展 • Service Mesh在华为内部的技术演进 第⼀一代:基于Nginx的微服务代理 • 2013年,微服务开发平台中的组 件,公司内部某电信业务 • 400多个微服务,800左右实例, 200多个数据中⼼心 Sidecar模式 • 基于容器的分布式系统设计模式 • 容器可以共享存储与⺴⽹网络的能⼒力 应⽤用程序容器 ⽇日志同步⼯工具容器 存储卷 PerHost模式运⾏行 • ⽀支持多种部署⽅方式 • 占⽤用资源⼩小(闲置10多M,并发运⾏行时30多M) • 简介 • 实现⼀一个Service Mesh • 使⽤用Service Mesh快速构建微服务 • ⽣生态与扩展 • 与PaaS平台结合 • Service Mesh在华为内部的技术演进 整体架构 Mesher Service Mesher Service Mesher0 码力 | 52 页 | 4.37 MB | 1 年前3
 微服务创新新品发布帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 分布式系统配置中心 服务中心异构通信 多语言运行环境 微服务鉴权 微服务契约工具 Apache ServiceComb 面对用户痛点持续创新 3 github.com/apache?q=servicecomb servicecomb.apache.org 服务网格-Mesher (符合OpenAPI规范) 用户交互 转换 微服务工程构建 CLI命令行 Maven/Gradle 插件 契约提取 代码生成 文档制作 契约校验 ServiceComb SpringCloud …… ServiceComb toolkit 划分微服务 (含依赖关系) 定义契约 (接口和模型) 发布契约 ServiceComb 契约开发工具 开发微服务 测试微服务 客户+集成商 软件开发商 境 验收微服务 协同企业遗留系统微服务化快速改造,实现基于契约的数据、服务标准化管控 微服务契约工具 https://github.com/apache/servicecomb-toolkit ServiceComb toolkit 提供契约、代码、文档相互转换和校验的能力,帮助用户快速构建基于流行微服务框架和编程模型 的微服务工程,降低微服务学习成本,使能用户聚焦业务开发,提升遗留系统重构、开发效率。0 码力 | 12 页 | 2.96 MB | 1 年前3 微服务创新新品发布帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 分布式系统配置中心 服务中心异构通信 多语言运行环境 微服务鉴权 微服务契约工具 Apache ServiceComb 面对用户痛点持续创新 3 github.com/apache?q=servicecomb servicecomb.apache.org 服务网格-Mesher (符合OpenAPI规范) 用户交互 转换 微服务工程构建 CLI命令行 Maven/Gradle 插件 契约提取 代码生成 文档制作 契约校验 ServiceComb SpringCloud …… ServiceComb toolkit 划分微服务 (含依赖关系) 定义契约 (接口和模型) 发布契约 ServiceComb 契约开发工具 开发微服务 测试微服务 客户+集成商 软件开发商 境 验收微服务 协同企业遗留系统微服务化快速改造,实现基于契约的数据、服务标准化管控 微服务契约工具 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 ] https://github.com/apache?q=servicecomb https://github.com/apache?q=servicecomb ServiceComb Toolkit Toolkit - 遵循OpenAPI的微服务开发、改造工具 提供遵循OpenAPI规范的API、代码、文档相互转换和校 验的能力,帮助用户快速构建基于流行微服务框架和编程 模型的微服务脚手架工程,提升遗留系统重构、开发效率 • 项目地址 https://github.com/apache/servicecomb-toolkit API提取 代码生成 文档生成 ServiceComb ServiceComb toolkit 划分微服务 (含依赖关系) 定义契约 (接口和模型) 发布契约 ServiceComb 契约开发工具 开发微服务 测试微服务 客户+集成商 软件提供商 部署微服务 契约仓库 微服务 运行环 境 验收微服务 协同实现基于契约(API)的数据、服务标准化管控 划分微服务 (含依赖关系)0 码力 | 13 页 | 1.24 MB | 1 年前3 Apache ServiceComb 微服务创新项目解读帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 多语言运行环境 服务中心异构通信 微服务鉴权 分布式系统配置中心 微服务契约工具 Apache ServiceComb [Website] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb https://github.com/apache?q=servicecomb ServiceComb Toolkit Toolkit - 遵循OpenAPI的微服务开发、改造工具 提供遵循OpenAPI规范的API、代码、文档相互转换和校 验的能力,帮助用户快速构建基于流行微服务框架和编程 模型的微服务脚手架工程,提升遗留系统重构、开发效率 • 项目地址 https://github.com/apache/servicecomb-toolkit API提取 代码生成 文档生成 ServiceComb ServiceComb toolkit 划分微服务 (含依赖关系) 定义契约 (接口和模型) 发布契约 ServiceComb 契约开发工具 开发微服务 测试微服务 客户+集成商 软件提供商 部署微服务 契约仓库 微服务 运行环 境 验收微服务 协同实现基于契约(API)的数据、服务标准化管控 划分微服务 (含依赖关系)0 码力 | 13 页 | 1.24 MB | 1 年前3
 华为企业级PaaS 微服务应用测试环境 预验证环境 灰度环境 生产环境 商业生态(aPaaS/SaaS) 行业 (政府、教育、医疗、零售、……) 伙伴 (软通、中软、幸宜、博思、医 信、……) 工具(CPE) 设计和开发 构建 测试 发布上线 监控运维 部署 流 水 线 ( 持 续 集 成 、 持 续 交 付 ) 扩展插件: Eclipse等 扩展插件: 静态检查等 扩展插件: 三方部署系 三方部署系 统 扩展插件: 客户测试系 统 扩展插件: 客户自有仓 库 扩展插件: 客户自有监 控 开发者生态 开源社区 案例 开发者 API 产品 生态 通用微服务工具市场 行业微服务组件市场 虚机(ECS) servicecomb.apache.org github.com/apache?q=servicecomb 基础设施 Build, ship and run in any 源码 软件中心 流水线 构建 归档 部署 配置中心 java python go nodejs php war jar 压缩包 二进制 Docker镜像 调整线上应用配置 x86 ARM CCI 虚机 CCE servicecomb.apache.org github.com/apache?q=servicecomb 围绕应用构建平台功能 • 操作的起点为应用0 码力 | 17 页 | 3.42 MB | 1 年前3 华为企业级PaaS 微服务应用测试环境 预验证环境 灰度环境 生产环境 商业生态(aPaaS/SaaS) 行业 (政府、教育、医疗、零售、……) 伙伴 (软通、中软、幸宜、博思、医 信、……) 工具(CPE) 设计和开发 构建 测试 发布上线 监控运维 部署 流 水 线 ( 持 续 集 成 、 持 续 交 付 ) 扩展插件: Eclipse等 扩展插件: 静态检查等 扩展插件: 三方部署系 三方部署系 统 扩展插件: 客户测试系 统 扩展插件: 客户自有仓 库 扩展插件: 客户自有监 控 开发者生态 开源社区 案例 开发者 API 产品 生态 通用微服务工具市场 行业微服务组件市场 虚机(ECS) servicecomb.apache.org github.com/apache?q=servicecomb 基础设施 Build, ship and run in any 源码 软件中心 流水线 构建 归档 部署 配置中心 java python go nodejs php war jar 压缩包 二进制 Docker镜像 调整线上应用配置 x86 ARM CCI 虚机 CCE servicecomb.apache.org github.com/apache?q=servicecomb 围绕应用构建平台功能 • 操作的起点为应用0 码力 | 17 页 | 3.42 MB | 1 年前3
 开源开发者的一天 - Apache ServiceComb开源社区⾥⾯没有项⽬经理,只有技术领导 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb • 自底向上构建,通过原型快速迭代验证 • 全方位开放,分布式开发,跨公司沟通协作 • 开源项目是新技术的试验场 • 开源依托于社区不断发展壮大 • 一群热爱开源的人们,全身心投入自己的时间来进行开发 开源项目形成 提交issue报告 • 善用Github issue • 检索是否有类似的错误 • 详细描述软件的版本和使用环境 • 描述错误详细内容 • 给出测试用例 • 登录到JIRA 或者其他的Bug管理 工具提交报告或者补丁 https://github.com/apache/servicecomb-java-chassis/issues [社区网站] http://servicecomb.apache q=servicecomb 贡献代码 • 代码提交指南(http://servicecomb.apache.org/cn/developers/submit-codes) • 熟悉开源项目的代码 • 学会自己构建(build)项目 • 注意运行测试,保证自己修改 的代码不break build • 提交项目,发送PR • 进行相关的讨论 https://github.com/apache/serv0 码力 | 31 页 | 2.02 MB | 1 年前3 开源开发者的一天 - Apache ServiceComb开源社区⾥⾯没有项⽬经理,只有技术领导 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb • 自底向上构建,通过原型快速迭代验证 • 全方位开放,分布式开发,跨公司沟通协作 • 开源项目是新技术的试验场 • 开源依托于社区不断发展壮大 • 一群热爱开源的人们,全身心投入自己的时间来进行开发 开源项目形成 提交issue报告 • 善用Github issue • 检索是否有类似的错误 • 详细描述软件的版本和使用环境 • 描述错误详细内容 • 给出测试用例 • 登录到JIRA 或者其他的Bug管理 工具提交报告或者补丁 https://github.com/apache/servicecomb-java-chassis/issues [社区网站] http://servicecomb.apache q=servicecomb 贡献代码 • 代码提交指南(http://servicecomb.apache.org/cn/developers/submit-codes) • 熟悉开源项目的代码 • 学会自己构建(build)项目 • 注意运行测试,保证自己修改 的代码不break build • 提交项目,发送PR • 进行相关的讨论 https://github.com/apache/serv0 码力 | 31 页 | 2.02 MB | 1 年前3
 2-4-禚娴静-微服务你玩得起吗中,服务与服务间采⽤用轻量级的通信机制互相沟通(通常是基于HTTP协议的 RESTful API)。每个服务都围绕着具体业务进⾏行构建,并且能够被独⽴立的部署到 ⽣生产环境、类⽣生产环境等。另外,应当尽量避免统⼀一的、集中式的服务管理机 制,对具体的⼀一个服务⽽而⾔言,应根据业务上下⽂文,选择合适的语⾔言、⼯工具对其进 ⾏行构建。 为什么要采⽤用微服务架构? - Rebecca Parsons 让系统尽可能快的响应变化!0 码力 | 51 页 | 8.18 MB | 1 年前3 2-4-禚娴静-微服务你玩得起吗中,服务与服务间采⽤用轻量级的通信机制互相沟通(通常是基于HTTP协议的 RESTful API)。每个服务都围绕着具体业务进⾏行构建,并且能够被独⽴立的部署到 ⽣生产环境、类⽣生产环境等。另外,应当尽量避免统⼀一的、集中式的服务管理机 制,对具体的⼀一个服务⽽而⾔言,应根据业务上下⽂文,选择合适的语⾔言、⼯工具对其进 ⾏行构建。 为什么要采⽤用微服务架构? - Rebecca Parsons 让系统尽可能快的响应变化!0 码力 | 51 页 | 8.18 MB | 1 年前3
 消费者云CSE微服务实践微服务框架采用的技术应该是经过验证、业界主流的技术,例如网 络传输采用Netty  微服务框架本身要成熟,经过丌同业务、较长时间的验证,商用发 布的特性要稳定  无论是社区开源版本,还是购买的商用软件,戒者自己构建,技术 支持和保障一定要到位 微服务框架技术选型-结果  为什么业务最终选择CSE作为微服务框架?  无论是华为内部的DSF,还是开源的Netflix、Spring Cloud等,都无法完全满足业务的 API,统一使用Swagger YAML定义API  服务端和客户端都基于API定义,通过CSE提供的工具生成丌同语言的类库, 客户端可以丌导入服务端的类库定义,双方互相解耦  始终以在线的API定义为准,防止服务端私自修改接口代码(例如增减字段、 修改字段类型)  每日微服务流水线构建,及时发现接口丌兼容问题 CSE 消费者 提供者 模 拟 桩 服务 端 Mock0 码力 | 22 页 | 1.39 MB | 1 年前3 消费者云CSE微服务实践微服务框架采用的技术应该是经过验证、业界主流的技术,例如网 络传输采用Netty  微服务框架本身要成熟,经过丌同业务、较长时间的验证,商用发 布的特性要稳定  无论是社区开源版本,还是购买的商用软件,戒者自己构建,技术 支持和保障一定要到位 微服务框架技术选型-结果  为什么业务最终选择CSE作为微服务框架?  无论是华为内部的DSF,还是开源的Netflix、Spring Cloud等,都无法完全满足业务的 API,统一使用Swagger YAML定义API  服务端和客户端都基于API定义,通过CSE提供的工具生成丌同语言的类库, 客户端可以丌导入服务端的类库定义,双方互相解耦  始终以在线的API定义为准,防止服务端私自修改接口代码(例如增减字段、 修改字段类型)  每日微服务流水线构建,及时发现接口丌兼容问题 CSE 消费者 提供者 模 拟 桩 服务 端 Mock0 码力 | 22 页 | 1.39 MB | 1 年前3
共 29 条
- 1
- 2
- 3













