庖丁解牛:华为云微服务工具解放开发者
庖丁解牛:华为云微服务工具解放开发者 部门:应用平台服务 作者:王启军 日期:20190920 Security Level: 目录 1. 微服务拆分工具 2. 契约管理工具 Huawei Confidential 3 微服务架构的优势 因素 单体架构 微服务架构 交付速度 较慢 较快 故障隔离范围 线程级 进程级 整体可用性 较低 更高 架构持续演进 困难 简单 沟通效率 服务A 服务B 步骤1:通过SQL的关联程 度、使用次数等,识别出 相关性最高的表划分成一 个微服务 微服务数据库 A库 B库 服务A 服务B 步骤2:通过表结构调整, 将不同的数据库进行解耦, 防止一个微服务跨库访问 (反范式、服务重构等) 微服务数据库 A库 B库 服务A 服务B 步骤3:大表水平拆分,实 现水平扩展,提升访问速度 (分区分库) 步骤4:根据表结构变化,自动 Confidential 12 微服务架构下,API管控的挑战 • API在微服务架构下爆炸性增长 • 移动互联网、物联网 • API是技术leader和架构师的控制力,API==契约 • API First,解耦各个服务的开发者 Huawei Confidential 13 ServiceStage契约管理工具—管控分离 Copyright©2018 Huawei Technologies Co., Ltd0 码力 | 14 页 | 1.54 MB | 1 年前3微服务架构与领域驱动设计 - 王磊
Vaughn Vernon Eric Evan Event Storming是⼀一种快速探索复杂业务领域的⽅方法: Event Storming Effective: 可以让实践者在数⼩小时内理理解复杂业务模型 Engaging: 带着问题的和拥有答案的⼈人⼀一起来构建模型 Efficient: 能快速发现界限上下⽂文以及相关的聚合根等 参与⼈人员:业务⼈人员,领域专家,技术⼈人员,架构师,测试⼈人员等关键⻆角⾊色 寻找事件 寻找命令 寻找聚合 划分⼦子域&界限上下⽂文 理理解业务 发⽣生了了什什么? 通过什什么产⽣生? 谁引起的? 分解系统(划分微服务) 统⼀一语⾔言 顺畅的沟通 ① ② ③ ④ ⑤ ⑥ 统⼀一语⾔言 设计中的技术⽅方⾯面 技术术语 技术设计模式 领域驱动设计 中提到的很多 模式名称 开发⼈人⼈人员理理解 的业务术语 每个⼈人都使⽤用, 但不不出现在设计 中的业务术语 统⼀一语⾔言 业务流梳理理 寻找事件 寻找命令 寻找聚合 划分⼦子域&界限上下⽂文 统⼀一语⾔言 ① ② ③ ④ ⑤ ⑥ 业务流梳理理 领域专家介绍业务,参与者可以任意提问,⼤大家在理理解业务的基础上梳理理出业务流。 业务流梳理理 寻找事件 寻找命令 寻找聚合 划分⼦子域&界限上下⽂文 统⼀一语⾔言 ① ② ③ ④ ⑤ ⑥ 寻找事件 注意要点: • 业务流程中发⽣生的事件0 码力 | 28 页 | 1.84 MB | 1 年前3消费者云CSE微服务实践
华为消费者云业务包括 华为应用市场、华为视频、华为钱包、华为运 劢健康等服务,为华为和荣耀手机提供精品云服务,提升用户体验 华为消费者云业务简介 微服务框架技术选型-业务服务化目标 系统解耦,功能内聚,提升需求交付效率:通过业务的拆分和解耦,让系统敏 捷起来,快速、小批量的交付价值需求,提升业务的交付效率 践行API First:通过服务化,让服务提供者和消费者乊间通过微服务API建立契约,利 从用户体验看,端到端时延非常重要,分布式乊后带来的时延增加,是一个很大的挑戓 丌是所有业务都有苛刻的性能需求,丌同业务对性能的诉求丌同, 可以按需选择协议和传输方式,服务不传输协议、序列化方式解耦 微服务框架技术选型-成熟 微服务框架采用的技术应该是经过验证、业界主流的技术,例如网 络传输采用Netty 微服务框架本身要成熟,经过丌同业务、较长时间的验证,商用发 布的特性要稳定 API,戒者RPC Highway API,统一使用Swagger YAML定义API 服务端和客户端都基于API定义,通过CSE提供的工具生成丌同语言的类库, 客户端可以丌导入服务端的类库定义,双方互相解耦 始终以在线的API定义为准,防止服务端私自修改接口代码(例如增减字段、 修改字段类型) 每日微服务流水线构建,及时发现接口丌兼容问题 CSE 消费者 提供者 模 拟 桩0 码力 | 22 页 | 1.39 MB | 1 年前3微服务架构及ServiceComb实践
ServiceCenter SDK SDK SDK SDK ServiceA ServiceB ServiceC ServiceD 网关 EdgeService SDK 目标: • 服务与物理地址解耦 • 基本的健康检测 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb q=servicecomb Thank You. 欢迎关注 微服务蜂巢公众号 获取更多微服务技术干货、资讯文章 欢迎添加 ServiceComb小助手 加入微服务技术交流群,架构、设计、开 发、解BUG、调优,总有您感兴趣的话题0 码力 | 14 页 | 2.04 MB | 1 年前3ServiceComb在华为消费者云的亿级用户微服务实践
API,统一使用Swagger YAML定义API 微服务代码生成:服务端和客户端都基于API定义,通过 ServiceComb提供的工具生成不同语言的类库,客户端可以不导入服务 端的类库定义,双方互相解耦 微服务接口测试:测试基于流水线的API定义生成自动化测试用例, 防止开发本地随意修改API 微服务API依赖关系:通过微服务流水线编译、打包和系统集成 测试,识别并展示微服务API之间的依赖关系(我依赖谁、谁依赖我) im/ServiceCombUsers/Lobby 以ServiceComb为核心构建的微服务架构体系,极大的提升了消费者云业务研发效率 需求的研发和交付周期缩短,业务更敏捷应对变化 可独立交付和升级的服务越来越多,业务之间逐步解耦,可独立演进 服务之间的接口契约可视化、可度量和管控,架构看护和优化更有章可循 服务无状态,微服务数据自治,天生的弹性伸缩架构,高效支撑业务快速发展 提供微服务维度的监控大盘和细粒度的治理措施,运维更得心应手0 码力 | 15 页 | 1.15 MB | 1 年前3使用微服务架构快速开发万级TPS高可用电商系统
ServiceCenter SDK SDK …… SDK SDK ServiceA ServiceB ServiceC ServiceD 网关 EdgeService SDK 目标: • 服务与物理地址解耦 • 基本的健康检测 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb q=servicecomb Thank You. 欢迎关注 微服务蜂巢公众号 获取更多微服务技术干货、资讯文章 欢迎添加 ServiceComb小助手 加入微服务技术交流群,架构、设计、开 发、解BUG、调优,总有您感兴趣的话题0 码力 | 15 页 | 1.46 MB | 1 年前3ServiceComb 介绍
提供用户支持也不太方便 Java Go 服务 契约 生成工具 框架 代码 框架 代码 框架 代码 接口 文档 接口 文档 接口 文档 生成 生成 • 面向接口契约而不是逻辑 • 解耦服务提供者和消费者的开发顺序 • 契约定义为语言中立 • 规范化系统接口,让实现与文档的同步 • 通过工具简化整个过程 API First & Code First 服务契约定义0 码力 | 16 页 | 1.26 MB | 1 年前3微服务环境下的系统治理与容错
微 微服务的“微”暗示了服务的大小,但实际上微服务架构对构成的服务实例并没有大小方面的要求。 微服务的微 微服务的两个“谬论” n 服务之间是强隔离的。 n 微服务是大型系统的唯一选择。 解耦合 独立开发部署 架构、组织、流程 微服务架构定义“三步法” 微服务拆分方法 微服务拆分-指导原则 拆服务-单体重构的节奏 服务分解的四大障碍 1、网络延迟 2、同步通信降低了可用性0 码力 | 45 页 | 16.09 MB | 1 年前3ServiceComb 的前世今生
服务 契约 生成工具 框架 代码 框架 代码 框架 代码 接口 文档 接口 文档 接口 文档 生成 生成 • 面向契约而不是逻辑 • 解耦服务提供者和消费者的开发顺序 • 契约定义为语言中立 • 规范化系统接口,让实现与文档的同 步成为必须 • 通过工具简化整个过程 API First 增速微服务开发 --- 工具支持0 码力 | 16 页 | 1.45 MB | 1 年前3Service Mesh的思考及在华为云的实践
Handler Chain Consumer service 注册发现 • 统一的缓存保存机制 • Registrator与ServiceDiscovery插件,对接多种不同的注册发现服务 • 解耦的注册器和服务发现模块,可灵活选择使用客户端发现还是服务端发现 6/30/2018 Registrator Service center Istio Kubern etes Consul0 码力 | 29 页 | 1.55 MB | 1 年前3
共 17 条
- 1
- 2