Service Mesh在华为公 有云的实践
基于容器的分布式系统设计模式 • 容器可以共享存储与⺴⽹网络的能⼒力 应⽤用程序容器 ⽇日志同步⼯工具容器 存储卷 Sidecar优势 • 以容器作为基础打包单元,可以分给不同的团队进⾏行开发测试 • 可重⽤用 • 以容器作为错误边界,使服务能够正确推出 • 独⽴立回滚与更新 第⼆二代:HSA SideCar • 2016年,基于Java 微服务 框架开发 • 提供SOAP协议转换 • 与微服务部署在⼀一个Pod • ⽣生成监控数据 Mesher ServiceC Mesher ServiceD Mesher ServiceA Mesher ServiceB Control Plane 可⼈人⼯工介⼊入,为所有运⾏行的Mesher 提供配置下发,不会碰服务请求 • 注册中⼼心 • 下发配置 • 对接监控服务 • 调度引擎 Mesher Mesher Mesher Mesher LB RouteRule Circuit Breaker Rate Limiting Config Center Scheduler 调⽤用场景1 • 透明TLS传输能⼒力,⽤用户可托管⾃自⼰己的证书 • 提供者可获得服务端限流能⼒力和处理链功能 ServiceA Mesher Mesher ServiceB https://10.100.2.3:30101 http://1270 码力 | 52 页 | 4.37 MB | 1 年前3庖丁解牛:华为云微服务工具解放开发者
因素 单体架构 微服务架构 交付速度 较慢 较快 故障隔离范围 线程级 进程级 整体可用性 较低 更高 架构持续演进 困难 简单 沟通效率 低 高 技术栈选择 受限 灵活 可扩展性 受限 灵活 可重用性 低 高 实现业务复杂性分解难度 困难 容易 产品创新复杂度 困难 容易 一致性实现成本 低 高 时延 低 高 资源成本 低 高 关联查询复杂度 简单 复杂 远程调用 不涉及 耦合度:微服务划分后,微服务与微服务连接的边的权重之和 内聚度:微服务划分后,微服务内部表与表之间的边权重之和 采用图搜索算法划分微服务的启发式规则(规则可自定义): 规则1:贪婪原则 规则2:完全独立的表可归属任意微服务,也可独立成微服务 规则3:归属同一微服务的表数量不低于5(作为参数可配置) 规则4:关联度大于10(作为参数可配置)的表归属同一微服务 Huawei Confidential 8 微服务拆分工具 sqlanalyzer algorithm (greedy/clustering/…) output 数据拆分 建议文件 解析代码,搜集sql语句 开发时预处理:通过 Antlr4工具生成java可识 别的解析规则的对象, 埋入源码 生成sql语句集(Mysql 或其他DB的方言) mysql/oracle 的规则文件 生成表关联关系list 计算权重,生成图 输出权重图, 选择、调用0 码力 | 14 页 | 1.54 MB | 1 年前3ServiceComb在华为消费者云的亿级用户微服务实践
统的同步服务调用,性能更高(吞吐量N倍+提升、时延降低 为原来的50%-) 轻量级、易集成:可以方便的与Spring MVC、Tomcat等 已有技术和容器集成,支持轻量级的standalone部署 服务治理:可商用的服务治理能力 成熟和商用支持:Apache孵化项目,公司内部大规模使 用,专职的团队支撑 微服务框架 RPC框架 跨语言: gRPC Thrift ServiceComb ServiceComb SDK Service API 业务微服务实例 Standalone模式,后台应用 不依赖Web容器 对于纯微服务消费端,不需要额外 监听端口 业务微服务独立部署,一个微服务可 对应多个Java Interface 更轻量,启停速度更快,云端 弹性伸缩效率更高 实践-微服务治理 Website: http://servicecomb.incubator.apache im/ServiceCombUsers/Lobby 以ServiceComb为核心构建的微服务架构体系,极大的提升了消费者云业务研发效率 需求的研发和交付周期缩短,业务更敏捷应对变化 可独立交付和升级的服务越来越多,业务之间逐步解耦,可独立演进 服务之间的接口契约可视化、可度量和管控,架构看护和优化更有章可循 服务无状态,微服务数据自治,天生的弹性伸缩架构,高效支撑业务快速发展 提供微服务维度的监控大盘和细粒度的治理措施,运维更得心应手0 码力 | 15 页 | 1.15 MB | 1 年前3ServiceComb在Service Mesh的 探索与思考
华为云 异构基础设施 - CCE - Kubernetes - Docker - VM - Bare metal Huawei Confidential 8 注册发现 - 统一缓存模型 - 可灵活选择客户端注册发现,与平台注册 Registrator Service center Istio Kuberne tes Service Discovery Instance Cache metadata Resolve 决定要访问的服务名后即可开 始匹配路由规则,比如 • 系统中稳定运行着A服务, 版本是1.0,最近新上线了 1.1版本,你希望只让一部 分用户进行体验,那么你可 以定义Header带有device- os=android就将95%流量转 移版本为1.0的实例中,5% 转移到1.1版本 • 请求者的元数据中带有 env=production,那么要将 路由到元数据中带有 24.0.23:8080 10.24.0.24:8080 … Istio Apollo Huawei Confidential 10 多协议支持 - 使用Invocation抽象 - 协议可快速接入到mesher中,并享受同样的治理能力 Http Request Grpc Request Transfer Invocation Http Server Grpc Server Transfer0 码力 | 21 页 | 8.48 MB | 1 年前3微服务的设计原则与⽣态系统 - 王磊
注册发现 监控 调⽤用链 路路由 授权认证 ⽇日志聚合 熔断 集中配置 基础设施 接⼊入层 业务层 - 聚合服务 - 基础服务 • ⾯面向对象设计(名词/动词) • 可重⽤用的逻辑 • 资源密集型部分 • 领域驱动设计 • 数据访问⽅方式 服务设计与拆分 44 Node.js Java 基础服务实现 聚合服务实现 Proxy Chained Shared 动态更更新配置信息 • 多实例例间的同步 • 配置信息的版本管理理 容错(Resilient) 52 • 降级 - 关闭⾮非核⼼心业务,保证核⼼心业务可⽤用 • 限流 - 超过处理理能⼒力力,采⽤用适当策略略丢弃 • 熔断 - 避免某个服务不不可⽤用导致的故障蔓延 微服务⽣生态系统 API⽹网关/Edge Service ⽀支撑层 基础设施 交付流⽔水线与⼯工程实践 CaaS/PaaS0 码力 | 62 页 | 6.65 MB | 1 年前3微服务创新新品发布
型微服务架构设计,实现不同的微服务技术栈实现的微服务业务可以进行数 据通信,未来可支持跨云的数据通信支持。 •对应用程序透明。同步工具启停,不应该对应用程序的原有流程产生影响。 •为多服务中心提供对等网络。他们之间是松耦合的,成员可以自由加入与退出。 •对异构服务中心提供支持。插件化的形式支持多种服务中心驱动,用户可便捷的接入自定义插件。 gossip 协议 Syncer Syncer Syncer OCR_address(environment=test): http://xxxx ServiceB.timeout=1s ServiceB.user.getUser.timeout=10s -在这样的数据格式设计下可生成多角度的配置视图,提升易用性,人类可读性 假如说我们要定义A到B以及到某个API的超时时间 -学习成本高,运维人员要学习这个只在团队内部生效的key规则 -所有的key集中在一种类型的视图中管理,管理成本高。0 码力 | 12 页 | 2.96 MB | 1 年前3反应式微服务框架ServiceComb设计思想&mdash
Loop 什么才叫阻塞? n Thead.sleep() n 等待一个锁 n 等待一个互斥信号或监视器(例如同步的代码块) n 执行一个长时间数据库操作并等待其结果 n 执行一个复杂的计算,占用了可感知的时长 n 在循环语句中长时间逗留 10000TPS=0.1ms处理一个请求 如果利⽤多核? ServiceComb 采⽤Vert.x的背景 3 Vert.x vs webflux 同步 异步场景4:多个微服务级联调用 性能对比测试: 采用Reactive异步模式之后,TPS提升 43% 左右 时延降低 28% 左右,CPU占用降低 56% 左右 总结 n 根据业务场景选择,可同时使用; n 必须关注整个调用链路,不能只关注通信。 参考⽂献 • https://burrsutter.com/wp- content/uploads/2018/04/BS_020517_0 码力 | 33 页 | 5.68 MB | 1 年前3ServiceComb介绍
Java Chassis • ⾼高性能的微服务框架,提供服务注册发现以及动态配置管理理,以及限流降级,容错熔 断等服务治理理功能 • Service Center • 基于Etcd⾼高性能,⾼高可⽤用服务注册中⼼心 • Saga • 微服务事务最终⼀一致性问题解决⽅方案 • 提供⼀一个集中式的事务协调器器,协调微服务之间的事务调⽤用,保证事务最终⼀一致性 https://github 多数据中⼼心⽀支持 契约测试 微服务管理理控制 开源配置中⼼心 对接多监控系统 Service Mesh 多语⾔言微服务⽀支持 监控管理理对接 多协议对接 微服务事务协调器器 服务端⾼高可⽤用 管理理控制台 TCC事务协调 如何加⼊入到ServiceComb社区 • 线上 • 关注ServiceComb微信⼩小助⼿手, 加⼊入微信群与⼤大家进⾏行行交流 • 官⽹网0 码力 | 16 页 | 877.58 KB | 1 年前3Metrics in ServiceComb 1.0.0-m1
定义: “对微服务的某个指标给予一个可量化程度的测量” • Metrics应该具备的特性: • Comparative(可对比):指标能够在不同的微服务或同一个微服务的多 个实例之间比较; • Understandable(易理解):指标所衡量的对象、计算方法和输出的结果 值都是容易理解的; • Ratio(理想的比例):理想结果可预见,可以立即用于比较。0 码力 | 18 页 | 938.89 KB | 1 年前3Service Mesh的思考及在华为云的实践
incubator.apache.org/ Gitter: https://gitter.im/ServiceCombUsers/Lobby Mesher Design Goal • 侵入式与非侵入式可结合使用 • 不绑定基础设施 • 服务可视化 • 高性能,轻量 • 尽最大可能插件化各功能模块 • 透明的产品体验:整合容器平台,微服务引擎,API 网关,指标监控,日志审计等云上服务,封装为微服 务平台,让用户感知不到背后的复杂 Consumer service 注册发现 • 统一的缓存保存机制 • Registrator与ServiceDiscovery插件,对接多种不同的注册发现服务 • 解耦的注册器和服务发现模块,可灵活选择使用客户端发现还是服务端发现 6/30/2018 Registrator Service center Istio Kubern etes Consul Eureka Service0 码力 | 29 页 | 1.55 MB | 1 年前3
共 23 条
- 1
- 2
- 3