 Service Mesh在华为公
有云的实践使⽤用Service Mesh快速构建微服务 • ⽣生态与扩展 • Service Mesh在华为内部的技术演进 我们在构建微服务,⽽而构建微服务是困难 的 微服务架构模式引⼊入的问题 路由规则 • 引流 • ⽀支持权重 • 根据消费者信息或请求特征进⾏行引流 Consumer 0.2 Provider 1.2 Provider 1.3 80% 20% Consumer 0 Mesher ServiceB Control Plane 可⼈人⼯工介⼊入,为所有运⾏行的Mesher 提供配置下发,不会碰服务请求 • 注册中⼼心 • 下发配置 • 对接监控服务 • 调度引擎 Mesher Mesher Mesher Mesher Service Center Governance UX LB RouteRule Circuit Breaker Rate Code—开发者⾃自⾏行选型 • 命令⾏行注⼊入⼯工具—Mesher开发团队定制 • 编排服务⾃自动注⼊入—最完整的产品体验 应⽤用与Mesher集成最佳实践 • 使⽤用容器,容器⺴⽹网络与编排调度平台 • 业务代码监听在本地端⼝口,并且不要暴露业 务服务端⼝口。使⽤用Mesher端⼝口对外提供服务 • 使⽤用SideCar部署模式 • 将服务提供者地址写在配置⽂文件中,在本地 ⾥里信息是http://x0 码力 | 52 页 | 4.37 MB | 1 年前3 Service Mesh在华为公
有云的实践使⽤用Service Mesh快速构建微服务 • ⽣生态与扩展 • Service Mesh在华为内部的技术演进 我们在构建微服务,⽽而构建微服务是困难 的 微服务架构模式引⼊入的问题 路由规则 • 引流 • ⽀支持权重 • 根据消费者信息或请求特征进⾏行引流 Consumer 0.2 Provider 1.2 Provider 1.3 80% 20% Consumer 0 Mesher ServiceB Control Plane 可⼈人⼯工介⼊入,为所有运⾏行的Mesher 提供配置下发,不会碰服务请求 • 注册中⼼心 • 下发配置 • 对接监控服务 • 调度引擎 Mesher Mesher Mesher Mesher Service Center Governance UX LB RouteRule Circuit Breaker Rate Code—开发者⾃自⾏行选型 • 命令⾏行注⼊入⼯工具—Mesher开发团队定制 • 编排服务⾃自动注⼊入—最完整的产品体验 应⽤用与Mesher集成最佳实践 • 使⽤用容器,容器⺴⽹网络与编排调度平台 • 业务代码监听在本地端⼝口,并且不要暴露业 务服务端⼝口。使⽤用Mesher端⼝口对外提供服务 • 使⽤用SideCar部署模式 • 将服务提供者地址写在配置⽂文件中,在本地 ⾥里信息是http://x0 码力 | 52 页 | 4.37 MB | 1 年前3
 Service Mesh的思考及在华为云的实践6/30/2018 Request 请求特征: • Service Name • Headers • Consumer metadata Resolve 决定要访问的服务名后即可开 始匹配路由规则,比如 • 系统中稳定运行着A服务, 版本是1.0,最近新上线了 1.1版本,你希望只让一部分 用户进行体验,那么你可以 定义Header带有device- os=android就将95%流量转 移版本为1 PHP语言开发,遗留单体服务快速改造为分布式架构 • 负责公司内部的楼宇设施管理,使用mesher改造后,帮 助客户将软件改造为SaaS服务,为更多企业提供服务 6/30/2018 最佳实践 • 结合容器,容器网络,编排调度平台,监控平台使用 • 业务代码只需监听在127.0.0.1.使用mesher对外提供服务 • 使用SideCar部署模式 • 将服务提供者地址写在配置文件中,在本地里信息是http://x.x0 码力 | 29 页 | 1.55 MB | 1 年前3 Service Mesh的思考及在华为云的实践6/30/2018 Request 请求特征: • Service Name • Headers • Consumer metadata Resolve 决定要访问的服务名后即可开 始匹配路由规则,比如 • 系统中稳定运行着A服务, 版本是1.0,最近新上线了 1.1版本,你希望只让一部分 用户进行体验,那么你可以 定义Header带有device- os=android就将95%流量转 移版本为1 PHP语言开发,遗留单体服务快速改造为分布式架构 • 负责公司内部的楼宇设施管理,使用mesher改造后,帮 助客户将软件改造为SaaS服务,为更多企业提供服务 6/30/2018 最佳实践 • 结合容器,容器网络,编排调度平台,监控平台使用 • 业务代码只需监听在127.0.0.1.使用mesher对外提供服务 • 使用SideCar部署模式 • 将服务提供者地址写在配置文件中,在本地里信息是http://x.x0 码力 | 29 页 | 1.55 MB | 1 年前3
 康彬-基于微服务的混合云和同城双活实践(内存|磁盘) 网络资源 (ip|端口|带宽) 中间件层 微服务框架 服务元数据管理 服务发布 服务订阅 消息中间件 消息元数据管理 消息生产 消息消费 job调度系统 job元数据管理 job发布 job调度 配置中心 mq管理系统 调用链路 系统 监控告警 系统 发布系统 服务注册 中心 服务治理 系统 api-gateway 获客 授信 下单 还款 接入层按url调 度流量 02 服务层set化的 路由策略 03 数据层读请求 上云,写请求 回自建idc 04 流量大户上云,顶住流量洪峰 机器器资源按需分配 接入层URL粒度流量调度 LB DNS app/browser Nginx-Proxy Nginx-Proxy 安全防护 自建IDC 云IDC WAF WAF https://order.lexin.com/create data_proxy 单元机房 registry data(r) web data_proxy registry_sync 电商单元 核心交易平台 风控审核平台 残酷的现实 缺乏按用户维度的流量调度能力 LB Nginx-Proxy Nginx-Proxy 自建IDC 云IDC 3 2 1 6 5 4 3 2 1 4 5 6 定时任务与普通服务耦合 lsf_registry0 码力 | 47 页 | 6.09 MB | 1 年前3 康彬-基于微服务的混合云和同城双活实践(内存|磁盘) 网络资源 (ip|端口|带宽) 中间件层 微服务框架 服务元数据管理 服务发布 服务订阅 消息中间件 消息元数据管理 消息生产 消息消费 job调度系统 job元数据管理 job发布 job调度 配置中心 mq管理系统 调用链路 系统 监控告警 系统 发布系统 服务注册 中心 服务治理 系统 api-gateway 获客 授信 下单 还款 接入层按url调 度流量 02 服务层set化的 路由策略 03 数据层读请求 上云,写请求 回自建idc 04 流量大户上云,顶住流量洪峰 机器器资源按需分配 接入层URL粒度流量调度 LB DNS app/browser Nginx-Proxy Nginx-Proxy 安全防护 自建IDC 云IDC WAF WAF https://order.lexin.com/create data_proxy 单元机房 registry data(r) web data_proxy registry_sync 电商单元 核心交易平台 风控审核平台 残酷的现实 缺乏按用户维度的流量调度能力 LB Nginx-Proxy Nginx-Proxy 自建IDC 云IDC 3 2 1 6 5 4 3 2 1 4 5 6 定时任务与普通服务耦合 lsf_registry0 码力 | 47 页 | 6.09 MB | 1 年前3
 消费者云CSE微服务实践无论是华为内部的DSF,还是开源的Netflix、Spring Cloud等,都无法完全满足业务的 选型诉求,而CSE则能够很好的满足我们的需求  仔细阅读了CSE的主要模块代码,包括网络通信、线程调度模型等,代码质量非常高, 对细节的把握比较好  选型试用时,大家对CSE的接受度比较高,使用CSE改造已有的Spring MVC代码相对较 容易些  华为内部的平台,无论是新需求接纳,还是技术支撑,各方面保障都比较给力 能比传统Servlet NIO性能高X倍  Highway RPC:采用Netty + PB,既支持多语 言,又保证高性能  高性能幵发设计:线程绑定技术,网络I/O线程 绑定后端的服务调度线程,最大限度减少锁竞 争。采用连接池机制,重用已有的连接 CSE在消费者云业务的实践-分布式事务 1、服务化乊前本地事务: 2、服务化乊后引入分布式事务: 解决方案:CSE提供数据最终一致性方案-Saga0 码力 | 22 页 | 1.39 MB | 1 年前3 消费者云CSE微服务实践无论是华为内部的DSF,还是开源的Netflix、Spring Cloud等,都无法完全满足业务的 选型诉求,而CSE则能够很好的满足我们的需求  仔细阅读了CSE的主要模块代码,包括网络通信、线程调度模型等,代码质量非常高, 对细节的把握比较好  选型试用时,大家对CSE的接受度比较高,使用CSE改造已有的Spring MVC代码相对较 容易些  华为内部的平台,无论是新需求接纳,还是技术支撑,各方面保障都比较给力 能比传统Servlet NIO性能高X倍  Highway RPC:采用Netty + PB,既支持多语 言,又保证高性能  高性能幵发设计:线程绑定技术,网络I/O线程 绑定后端的服务调度线程,最大限度减少锁竞 争。采用连接池机制,重用已有的连接 CSE在消费者云业务的实践-分布式事务 1、服务化乊前本地事务: 2、服务化乊后引入分布式事务: 解决方案:CSE提供数据最终一致性方案-Saga0 码力 | 22 页 | 1.39 MB | 1 年前3
 庖丁解牛:华为云微服务工具解放开发者SQL 语句 SQL 语句 … 语法分析 语法分析 语法分析 表关联分析 图切割+启 发式规则 Step1:提取系统所有SQL Step2:逐条根据SQL创建语法树 Step3:在每棵语法树上分析表的关联关系并汇集 成表关联关系加权图 Step6:采用图切割算法并配合启发式规则将表分 割到不同库中 原则:低耦合,高内聚 耦合度:微服务划分后,微服务与微服务连接的边的权重之和 和 内聚度:微服务划分后,微服务内部表与表之间的边权重之和 采用图搜索算法划分微服务的启发式规则(规则可自定义): 规则1:贪婪原则 规则2:完全独立的表可归属任意微服务,也可独立成微服务 规则3:归属同一微服务的表数量不低于5(作为参数可配置) 规则4:关联度大于10(作为参数可配置)的表归属同一微服务 Huawei Confidential 8 微服务拆分工具 单体应用 单体数据库 greedy) 3.指定sql规则(目前默认 mysql,后续做成智能分 析) Parser (mybatis/hibernate/…) graphanalyzer sqlanalyzer algorithm (greedy/clustering/…) output 数据拆分 建议文件 解析代码,搜集sql语句 开发时预处理:通过 Antlr4工具生成java可识 别的解析规则的对象, 埋入源码0 码力 | 14 页 | 1.54 MB | 1 年前3 庖丁解牛:华为云微服务工具解放开发者SQL 语句 SQL 语句 … 语法分析 语法分析 语法分析 表关联分析 图切割+启 发式规则 Step1:提取系统所有SQL Step2:逐条根据SQL创建语法树 Step3:在每棵语法树上分析表的关联关系并汇集 成表关联关系加权图 Step6:采用图切割算法并配合启发式规则将表分 割到不同库中 原则:低耦合,高内聚 耦合度:微服务划分后,微服务与微服务连接的边的权重之和 和 内聚度:微服务划分后,微服务内部表与表之间的边权重之和 采用图搜索算法划分微服务的启发式规则(规则可自定义): 规则1:贪婪原则 规则2:完全独立的表可归属任意微服务,也可独立成微服务 规则3:归属同一微服务的表数量不低于5(作为参数可配置) 规则4:关联度大于10(作为参数可配置)的表归属同一微服务 Huawei Confidential 8 微服务拆分工具 单体应用 单体数据库 greedy) 3.指定sql规则(目前默认 mysql,后续做成智能分 析) Parser (mybatis/hibernate/…) graphanalyzer sqlanalyzer algorithm (greedy/clustering/…) output 数据拆分 建议文件 解析代码,搜集sql语句 开发时预处理:通过 Antlr4工具生成java可识 别的解析规则的对象, 埋入源码0 码力 | 14 页 | 1.54 MB | 1 年前3
 ServiceComb java SDK详解果成功建立WebSocket连接,则服 务中心会将目标实例变更事件尽 快推送给相关的消费者 服务发现-LoadBalance 1.将从服务中心取得的实例集合,进行过滤,得到 Endpoint集合 • 根据兼容规则,将实例进行分组 只有edge service场景下,对于同一个目 标微服务,存在多个版本分组 • 兼容分组内,新版本功能集合大于旧版本,自动 根据url选择合适的版本组 • AZ亲和性 • Handlers.handle HttpClientFilters.beforeSendRequest (Http) 微服务调用-producer 透明RPC、JAX-RS、SpringMVC统一规则: class Schema { // 传统同步调用,默认在线程池中执行 public String hello1(String name) { return “hello “ + name; 置LB识别这是一个需要转发到edge的请求 这里假设前缀为rest • 第二个segment为微服务名 • 第三个segment表示兼容规则,v1表示调用1.0.0-2.0.0的微服务,v2表示2.0.0-3.0.0的微服务 如果内部微服务URL规则为: /{microserviceName}/{v1/v2/......}/pa th 则可以配置为 servicecomb: http:0 码力 | 21 页 | 1.15 MB | 1 年前3 ServiceComb java SDK详解果成功建立WebSocket连接,则服 务中心会将目标实例变更事件尽 快推送给相关的消费者 服务发现-LoadBalance 1.将从服务中心取得的实例集合,进行过滤,得到 Endpoint集合 • 根据兼容规则,将实例进行分组 只有edge service场景下,对于同一个目 标微服务,存在多个版本分组 • 兼容分组内,新版本功能集合大于旧版本,自动 根据url选择合适的版本组 • AZ亲和性 • Handlers.handle HttpClientFilters.beforeSendRequest (Http) 微服务调用-producer 透明RPC、JAX-RS、SpringMVC统一规则: class Schema { // 传统同步调用,默认在线程池中执行 public String hello1(String name) { return “hello “ + name; 置LB识别这是一个需要转发到edge的请求 这里假设前缀为rest • 第二个segment为微服务名 • 第三个segment表示兼容规则,v1表示调用1.0.0-2.0.0的微服务,v2表示2.0.0-3.0.0的微服务 如果内部微服务URL规则为: /{microserviceName}/{v1/v2/......}/pa th 则可以配置为 servicecomb: http:0 码力 | 21 页 | 1.15 MB | 1 年前3
 微服务创新新品发布-在这样的数据格式设计下可生成多角度的配置视图,提升易用性,人类可读性 假如说我们要定义A到B以及到某个API的超时时间 -学习成本高,运维人员要学习这个只在团队内部生效的key规则 -所有的key集中在一种类型的视图中管理,管理成本高。 -不断增长的规则定义,越来越复杂,人类不可读。 -Key设计无法扩展变更,没法轻易变更数据结构 分布式系统配置中心 7 github.com/apache?q=servicecomb com/apache?q=servicecomb  ServiceComb-ServiceCenter:注册发现,治理中心,与kie连接,读取治理规则,下发规则到数据面框架与服务网格  ServiceComb-Kie:保存管理面自身的配置项,也保存框架与服务网格的治理规则,同时可以保存业务相关的配置项  ServiceComb-Pack:分布式事务  ServiceComb-UX:统一微服务治理前台0 码力 | 12 页 | 2.96 MB | 1 年前3 微服务创新新品发布-在这样的数据格式设计下可生成多角度的配置视图,提升易用性,人类可读性 假如说我们要定义A到B以及到某个API的超时时间 -学习成本高,运维人员要学习这个只在团队内部生效的key规则 -所有的key集中在一种类型的视图中管理,管理成本高。 -不断增长的规则定义,越来越复杂,人类不可读。 -Key设计无法扩展变更,没法轻易变更数据结构 分布式系统配置中心 7 github.com/apache?q=servicecomb com/apache?q=servicecomb  ServiceComb-ServiceCenter:注册发现,治理中心,与kie连接,读取治理规则,下发规则到数据面框架与服务网格  ServiceComb-Kie:保存管理面自身的配置项,也保存框架与服务网格的治理规则,同时可以保存业务相关的配置项  ServiceComb-Pack:分布式事务  ServiceComb-UX:统一微服务治理前台0 码力 | 12 页 | 2.96 MB | 1 年前3
 ServiceComb在华为消费者云的亿级用户微服务实践隔离仓-3 手机客户端 WAP客户端 图书门户 单点故障 正常 正常 隔离仓-2 配置隔离仓: 通过配置线程池隔离仓,实现快 慢接口、读写接口、核心和非核 心接口、管理和业务接口的调度 隔离,提升微服务可靠性 实践-轻量化 Website: http://servicecomb.incubator.apache.org/ Gitter: https://gitter.0 码力 | 15 页 | 1.15 MB | 1 年前3 ServiceComb在华为消费者云的亿级用户微服务实践隔离仓-3 手机客户端 WAP客户端 图书门户 单点故障 正常 正常 隔离仓-2 配置隔离仓: 通过配置线程池隔离仓,实现快 慢接口、读写接口、核心和非核 心接口、管理和业务接口的调度 隔离,提升微服务可靠性 实践-轻量化 Website: http://servicecomb.incubator.apache.org/ Gitter: https://gitter.0 码力 | 15 页 | 1.15 MB | 1 年前3
 解读ApacheLICENSE 和 NOTICE ⽂件 遵循ALv2以及任何包括第三⽅软件的协议声明 源⽂件有ASF头 由未编译的源码构成 ⼆进制版本 ⼆进制版本 不是必需的 不是官⽅版本 同样需要遵守规则 毕业 毕业 展示了项⽬独⽴运作的能 ⼒: ⾃我管理 发布管理 建⽴法律框架 公开透明地运作项⽬ ServiceComb 孵化记录 ServiceComb 孵化记录 姜宁介绍 姜宁介绍 LICENSE和NOTICE⽂件问题 版权问题 没有ASF头 包含加密软件 实践创造完美 实践创造完美 开始未必是完美的 协议⼗分复杂 可能对政策不太熟悉 更多的是指导原则,很少有绝对的规则 添加项⽬正在完善中的声明 提早发布和频繁发布 每⼀个发布都⽐上⼀个更好 从Apache孵化器毕业 从Apache孵化器毕业 完成(或者签署)孵化项⽬状态⽂件中的任务 保证项⽬和产品有合适的名称0 码力 | 43 页 | 4.89 MB | 1 年前3 解读ApacheLICENSE 和 NOTICE ⽂件 遵循ALv2以及任何包括第三⽅软件的协议声明 源⽂件有ASF头 由未编译的源码构成 ⼆进制版本 ⼆进制版本 不是必需的 不是官⽅版本 同样需要遵守规则 毕业 毕业 展示了项⽬独⽴运作的能 ⼒: ⾃我管理 发布管理 建⽴法律框架 公开透明地运作项⽬ ServiceComb 孵化记录 ServiceComb 孵化记录 姜宁介绍 姜宁介绍 LICENSE和NOTICE⽂件问题 版权问题 没有ASF头 包含加密软件 实践创造完美 实践创造完美 开始未必是完美的 协议⼗分复杂 可能对政策不太熟悉 更多的是指导原则,很少有绝对的规则 添加项⽬正在完善中的声明 提早发布和频繁发布 每⼀个发布都⽐上⼀个更好 从Apache孵化器毕业 从Apache孵化器毕业 完成(或者签署)孵化项⽬状态⽂件中的任务 保证项⽬和产品有合适的名称0 码力 | 43 页 | 4.89 MB | 1 年前3
 Apache ServiceComb 微服务创新项目解读getUser.timeout=10s -在这样的数据格式设计下可生成多角度的配置视图,提升易用性,人类可读性 -学习成本高,运维人员要学习这个只在团队内部生效的key规则 -所有的key集中在一种类型的视图中管理,管理成本高。 -不断增长的规则定义,越来越复杂,人类不可读。 -Key设计无法扩展变更,没法轻易变更数据结构 Kie - 语义型分布式系统配置中心 core API storage0 码力 | 13 页 | 1.24 MB | 1 年前3 Apache ServiceComb 微服务创新项目解读getUser.timeout=10s -在这样的数据格式设计下可生成多角度的配置视图,提升易用性,人类可读性 -学习成本高,运维人员要学习这个只在团队内部生效的key规则 -所有的key集中在一种类型的视图中管理,管理成本高。 -不断增长的规则定义,越来越复杂,人类不可读。 -Key设计无法扩展变更,没法轻易变更数据结构 Kie - 语义型分布式系统配置中心 core API storage0 码力 | 13 页 | 1.24 MB | 1 年前3
共 13 条
- 1
- 2













