 ServiceComb在华为消费者云的亿级用户微服务实践 微服务API设计:支持Swagger API规范  开发方式:支持透明RPC、Spring MVC风格的微服务开发  编程模型:同时支持同步、异步的编程模型  性能:支持原生的Reactive模式(EventLoop),相比于传 统的同步服务调用,性能更高(吞吐量N倍+提升、时延降低 为原来的50%-)  轻量级、易集成:可以方便的与Spring MVC、Tomcat等 已 业务熟悉的模式,可以更好的重用已有代码和开发经验,提升重构 效率 实践-同步和异步 Website: http://servicecomb.incubator.apache.org/ Gitter: https://gitter.im/ServiceCombUsers/Lobby 不一刀切,根据业务实际需要选择同步或者异步微服务调用 微服务消费端 业务 线程 池 异步 I/O线 程池 业务线程阻塞, 同步等待 唤醒等待的业务线程, 获取响应 1 2 微服务同步调用问题: 1、同步服务调用:业务线程将请求消息交给I/O线程之后, 无论I/O线程是同步还是异步发送请求消息,业务线程都会 同步阻塞,等待响应 2、异步I/O通信:I/O通信方式与服务调用方式没关联关 系,无论是同步服务调用还是异步服务调用,I/O通信都 可以采用异步非阻塞模式 同步服务调用的几个缺点:0 码力 | 15 页 | 1.15 MB | 1 年前3 ServiceComb在华为消费者云的亿级用户微服务实践 微服务API设计:支持Swagger API规范  开发方式:支持透明RPC、Spring MVC风格的微服务开发  编程模型:同时支持同步、异步的编程模型  性能:支持原生的Reactive模式(EventLoop),相比于传 统的同步服务调用,性能更高(吞吐量N倍+提升、时延降低 为原来的50%-)  轻量级、易集成:可以方便的与Spring MVC、Tomcat等 已 业务熟悉的模式,可以更好的重用已有代码和开发经验,提升重构 效率 实践-同步和异步 Website: http://servicecomb.incubator.apache.org/ Gitter: https://gitter.im/ServiceCombUsers/Lobby 不一刀切,根据业务实际需要选择同步或者异步微服务调用 微服务消费端 业务 线程 池 异步 I/O线 程池 业务线程阻塞, 同步等待 唤醒等待的业务线程, 获取响应 1 2 微服务同步调用问题: 1、同步服务调用:业务线程将请求消息交给I/O线程之后, 无论I/O线程是同步还是异步发送请求消息,业务线程都会 同步阻塞,等待响应 2、异步I/O通信:I/O通信方式与服务调用方式没关联关 系,无论是同步服务调用还是异步服务调用,I/O通信都 可以采用异步非阻塞模式 同步服务调用的几个缺点:0 码力 | 15 页 | 1.15 MB | 1 年前3
 张波-虎牙直播在微服务改造中的实践级生效,新扩容服务主动拉取全量 配置,流量接入时长缩短3分钟+ 配置名字服务 配置IP方式 服务端下发文件更新配置,更新配 置生效时间长,由于需要预先知道 负责均衡集群的机器信息,扩缩容 需要等元信息同步以后才能接入流 量,扩容流量接入时间长 负载均衡节点对接名字服务 虎牙负载均衡部署的机器一台机器上可能存在数百的配置,每次节点生效需要重新 reload配置,且节点新增或删除需人工上系统操作配置,配置生效对服务会有中断 微服务架构中基于DNS的服务注册与发现 背景 公司内部注册中心比较多,常见的有zookeeper、 ectd、consul、eureka等。服务注册通常有三种: 自注册、第三方注册、注册中心主动同步,异构微 服务相互调用困难;公共DNS不稳定,解析结果生 效慢,解析失败率高;DNS无法提供内网环境的就 近接入能力,内部服务调用无法实现就近访问。 目标 DNS解析成功率 100% 公共DNS分钟级生效 好,新加入节点无需与所有节点互相广播同步信 息 由于使用广播同步信息,集群超过1000台机器 后对eureka集群压力很大 健康检查模式/方式 支持服务端/客户端/关闭检查模式,检查方式有 tcp、http、sql。支持自己构建健康检查器 客户端向服务端发送http心跳 负载均衡 支持 支持 手动上下线服务方式 通过控制台页面和API 通过调用API 跨中心同步 支持 不支持 k8s集成 支持0 码力 | 27 页 | 1.03 MB | 1 年前3 张波-虎牙直播在微服务改造中的实践级生效,新扩容服务主动拉取全量 配置,流量接入时长缩短3分钟+ 配置名字服务 配置IP方式 服务端下发文件更新配置,更新配 置生效时间长,由于需要预先知道 负责均衡集群的机器信息,扩缩容 需要等元信息同步以后才能接入流 量,扩容流量接入时间长 负载均衡节点对接名字服务 虎牙负载均衡部署的机器一台机器上可能存在数百的配置,每次节点生效需要重新 reload配置,且节点新增或删除需人工上系统操作配置,配置生效对服务会有中断 微服务架构中基于DNS的服务注册与发现 背景 公司内部注册中心比较多,常见的有zookeeper、 ectd、consul、eureka等。服务注册通常有三种: 自注册、第三方注册、注册中心主动同步,异构微 服务相互调用困难;公共DNS不稳定,解析结果生 效慢,解析失败率高;DNS无法提供内网环境的就 近接入能力,内部服务调用无法实现就近访问。 目标 DNS解析成功率 100% 公共DNS分钟级生效 好,新加入节点无需与所有节点互相广播同步信 息 由于使用广播同步信息,集群超过1000台机器 后对eureka集群压力很大 健康检查模式/方式 支持服务端/客户端/关闭检查模式,检查方式有 tcp、http、sql。支持自己构建健康检查器 客户端向服务端发送http心跳 负载均衡 支持 支持 手动上下线服务方式 通过控制台页面和API 通过调用API 跨中心同步 支持 不支持 k8s集成 支持0 码力 | 27 页 | 1.03 MB | 1 年前3
 ServiceComb java SDK详解Producer 透明RPC JAX-RS SpringMVC 以契约为核心,贯穿始终 • 开发模式(业务代码)、治理、传输三方解耦,互不感知 • 以高性能的Reactive为基础,同时兼容传统的同步开发模式,且支持传统的Servlet传输 LoadBalance …… QPS Trace …… QPS 架构 Common Swagger Generator Invocation endpoints endpoints endpoints Endpoint RESTful Highway All ...... 微服务调用-consumer 透明RPC: 同步、异步声明,可以分开进行,也可以在同一个接口中声明 interface Schema { String hello(String name); } interface Schema { C hello") CompletableFuture ServiceComb java SDK详解Producer 透明RPC JAX-RS SpringMVC 以契约为核心,贯穿始终 • 开发模式(业务代码)、治理、传输三方解耦,互不感知 • 以高性能的Reactive为基础,同时兼容传统的同步开发模式,且支持传统的Servlet传输 LoadBalance …… QPS Trace …… QPS 架构 Common Swagger Generator Invocation endpoints endpoints endpoints Endpoint RESTful Highway All ...... 微服务调用-consumer 透明RPC: 同步、异步声明,可以分开进行,也可以在同一个接口中声明 interface Schema { String hello(String name); } interface Schema { C hello") CompletableFuture- helloReactive(String name); } RestTemplate AsyncRestTemplate 微服务调用-同步consumer Consumer Eventloop connection Queue/Buffer consumer thread synchronize invoke Handlers 0 码力 | 21 页 | 1.15 MB | 1 年前3
 Java Chassis通信处理详解 - 通信优化实践RPC还是REST,传输方式决定编程模型 2. 丌同开发人员熟悉丌同的编程模型 3. RPC、REST的治理如何迚行 4. REST性能低 5. Reactive还是同步 ServiceComb的同步 仅仅是指编程模型上的同步,跟网络通信无关 因为所有场景下网络操作都是异步的 •Producer •Consumer 整体线程模型 Producer Producer  丌同于消费者,生产者主要的工作就是等待消费者 的请求,在处理之后,返回应答 在这一端我们更加关注:“如何高效地接收和处理 数据”这件事情  同步模式下,业务逻辑不IO逻辑分离,且根据 “隔离仓”原则,为了保证整个系统更加稳定和高 效地运行,业务逻辑本身也需要在丌同的隔离的区 域内迚行。而这些区域,就是线程池。 所以构建生产者,就需要对线程池迚行精细的管理。0 码力 | 17 页 | 2.22 MB | 1 年前3 Java Chassis通信处理详解 - 通信优化实践RPC还是REST,传输方式决定编程模型 2. 丌同开发人员熟悉丌同的编程模型 3. RPC、REST的治理如何迚行 4. REST性能低 5. Reactive还是同步 ServiceComb的同步 仅仅是指编程模型上的同步,跟网络通信无关 因为所有场景下网络操作都是异步的 •Producer •Consumer 整体线程模型 Producer Producer  丌同于消费者,生产者主要的工作就是等待消费者 的请求,在处理之后,返回应答 在这一端我们更加关注:“如何高效地接收和处理 数据”这件事情  同步模式下,业务逻辑不IO逻辑分离,且根据 “隔离仓”原则,为了保证整个系统更加稳定和高 效地运行,业务逻辑本身也需要在丌同的隔离的区 域内迚行。而这些区域,就是线程池。 所以构建生产者,就需要对线程池迚行精细的管理。0 码力 | 17 页 | 2.22 MB | 1 年前3
 反应式微服务框架ServiceComb设计思想&mdash等待一个互斥信号或监视器(例如同步的代码块) n 执行一个长时间数据库操作并等待其结果 n 执行一个复杂的计算,占用了可感知的时长 n 在循环语句中长时间逗留 10000TPS=0.1ms处理一个请求 如果利⽤多核? ServiceComb 采⽤Vert.x的背景 3 Vert.x vs webflux 同步 Reactive ServiceComb同步线程模型 ServiceComb嵌套同步线程模型0 码力 | 33 页 | 5.68 MB | 1 年前3 反应式微服务框架ServiceComb设计思想&mdash等待一个互斥信号或监视器(例如同步的代码块) n 执行一个长时间数据库操作并等待其结果 n 执行一个复杂的计算,占用了可感知的时长 n 在循环语句中长时间逗留 10000TPS=0.1ms处理一个请求 如果利⽤多核? ServiceComb 采⽤Vert.x的背景 3 Vert.x vs webflux 同步 Reactive ServiceComb同步线程模型 ServiceComb嵌套同步线程模型0 码力 | 33 页 | 5.68 MB | 1 年前3
 微服务环境下的系统治理与容错微服务是大型系统的唯一选择。 解耦合 独立开发部署 架构、组织、流程 微服务架构定义“三步法” 微服务拆分方法 微服务拆分-指导原则 拆服务-单体重构的节奏 服务分解的四大障碍 1、网络延迟 2、同步通信降低了可用性 3、跨服务的数据一致性 4、上帝类 微服务的忠告 n 第一,要记住微服务不是解决所有问题的万能 “银弹”。 n 第二,编写整洁的代码和使用自动化测试至关重要,因为这是现代软件开发的基础。 还必须记住:实现微服务架构并不是你的目标。你的目标是加速大型复杂应用程序的开发。 --Chris Richardson 容错 故障和问题 线上故障“画像“ 系统稳定性指标 可监控设计 同步调用下-无线程池隔离 同步调用下-线程池隔离实现方法 快速失败-超时 快速失败-时间窗口 快速失败-超时重试次数 区分部署和上线 常规系统保障流程 没有不出问题的系统 什么是混沌工程 混沌工程 故障注入0 码力 | 45 页 | 16.09 MB | 1 年前3 微服务环境下的系统治理与容错微服务是大型系统的唯一选择。 解耦合 独立开发部署 架构、组织、流程 微服务架构定义“三步法” 微服务拆分方法 微服务拆分-指导原则 拆服务-单体重构的节奏 服务分解的四大障碍 1、网络延迟 2、同步通信降低了可用性 3、跨服务的数据一致性 4、上帝类 微服务的忠告 n 第一,要记住微服务不是解决所有问题的万能 “银弹”。 n 第二,编写整洁的代码和使用自动化测试至关重要,因为这是现代软件开发的基础。 还必须记住:实现微服务架构并不是你的目标。你的目标是加速大型复杂应用程序的开发。 --Chris Richardson 容错 故障和问题 线上故障“画像“ 系统稳定性指标 可监控设计 同步调用下-无线程池隔离 同步调用下-线程池隔离实现方法 快速失败-超时 快速失败-时间窗口 快速失败-超时重试次数 区分部署和上线 常规系统保障流程 没有不出问题的系统 什么是混沌工程 混沌工程 故障注入0 码力 | 45 页 | 16.09 MB | 1 年前3
 微服务架构及ServiceComb实践不同的业务,涉及的不同的服务间通信有不同的要求 1. 关注事务性要求(ACID) 2. 关注对性能的要求 举例:商品维护和下订单是2个微服务,下订单系统对性能有较高要求,所以可以考虑把商品的价格从商品维护微服务同步到订单系统,该同步动作 对性能没有要求,对事务性有要求。 常见的服务间通信模式:同(异)步通信,API组合,基于MQ的异步通信 事务性: saga, 事务性消息发布(一次仅一次),分布式事务等 很易用的 Login House- order Realestate User- Center Customer-db Order-db Login-db Redis Redis Gateway Saga同步qualification 1. 每个微服务对应自己数据层 2. 拆分经验:看业务,不看技术 3. 利用:saga, 事务性消息发布,最终一致性,同(异)步调用组合等微服务模式 [社区网站] http://servicecomb0 码力 | 14 页 | 2.04 MB | 1 年前3 微服务架构及ServiceComb实践不同的业务,涉及的不同的服务间通信有不同的要求 1. 关注事务性要求(ACID) 2. 关注对性能的要求 举例:商品维护和下订单是2个微服务,下订单系统对性能有较高要求,所以可以考虑把商品的价格从商品维护微服务同步到订单系统,该同步动作 对性能没有要求,对事务性有要求。 常见的服务间通信模式:同(异)步通信,API组合,基于MQ的异步通信 事务性: saga, 事务性消息发布(一次仅一次),分布式事务等 很易用的 Login House- order Realestate User- Center Customer-db Order-db Login-db Redis Redis Gateway Saga同步qualification 1. 每个微服务对应自己数据层 2. 拆分经验:看业务,不看技术 3. 利用:saga, 事务性消息发布,最终一致性,同(异)步调用组合等微服务模式 [社区网站] http://servicecomb0 码力 | 14 页 | 2.04 MB | 1 年前3
 使用微服务架构快速开发万级TPS高可用电商系统不同的业务,涉及的不同的服务间通信有不同的要求 1. 关注事务性要求(ACID) 2. 关注对性能的要求 举例:客户维护和订单是2个微服务,订单系统对性能有较高要求,所以可以考虑把购房资格信息从客户维护微服务同步到订单系统,改同步动作 对性能没有要求,对事务性有要求。 常见的服务间通信模式:同(异)步通信,API组合,基于MQ的异步通信 事务性: saga, 事务性消息发布(一次仅一次),分布式事务等 很易用的 Login House- order Realestate User- Center Customer-db Order-db Login-db Redis Redis Gateway Saga同步qualification 1. 每个微服务对应自己数据层 2. 拆分经验:看业务,不看技术 3. 利用:saga, 事务性消息发布,最终一致性,同(异)步调用组合等微服务模式 [社区网站] http://servicecomb0 码力 | 15 页 | 1.46 MB | 1 年前3 使用微服务架构快速开发万级TPS高可用电商系统不同的业务,涉及的不同的服务间通信有不同的要求 1. 关注事务性要求(ACID) 2. 关注对性能的要求 举例:客户维护和订单是2个微服务,订单系统对性能有较高要求,所以可以考虑把购房资格信息从客户维护微服务同步到订单系统,改同步动作 对性能没有要求,对事务性有要求。 常见的服务间通信模式:同(异)步通信,API组合,基于MQ的异步通信 事务性: saga, 事务性消息发布(一次仅一次),分布式事务等 很易用的 Login House- order Realestate User- Center Customer-db Order-db Login-db Redis Redis Gateway Saga同步qualification 1. 每个微服务对应自己数据层 2. 拆分经验:看业务,不看技术 3. 利用:saga, 事务性消息发布,最终一致性,同(异)步调用组合等微服务模式 [社区网站] http://servicecomb0 码力 | 15 页 | 1.46 MB | 1 年前3
 ServiceComb雄关漫道POJO…) 服务契约 (OpenAPI) 服务发现 熔断 负载均衡 配置 跟踪 … 运行模型 围绕服务契约进行开发以及运维 异步化支持 • 基于Vertx提供的异步内核 • 保持高性能的同时支持同步调用方式 • 将通信线程与业务处理线程分离 • 操作级别线程池控制,支持隔离仓 • 支持多种异步编程接口 • CompletableFuture • RxJava • Reactive Stream 服务中心 多数据中心支持 契约测试 微服务管理控制 开源配置中心 对接多监控系统 Service Mesh 多语言微服务支持 监控管理对接 微服务事务协调器 服务端高可用 管理控制台 同步异步事件支持 如何加入到ServiceComb社区 • 线上 • 关注ServiceComb微信小助手, 加入微信群与大家进行交流 • 官网 http://servicecomb.incubator0 码力 | 20 页 | 4.00 MB | 1 年前3 ServiceComb雄关漫道POJO…) 服务契约 (OpenAPI) 服务发现 熔断 负载均衡 配置 跟踪 … 运行模型 围绕服务契约进行开发以及运维 异步化支持 • 基于Vertx提供的异步内核 • 保持高性能的同时支持同步调用方式 • 将通信线程与业务处理线程分离 • 操作级别线程池控制,支持隔离仓 • 支持多种异步编程接口 • CompletableFuture • RxJava • Reactive Stream 服务中心 多数据中心支持 契约测试 微服务管理控制 开源配置中心 对接多监控系统 Service Mesh 多语言微服务支持 监控管理对接 微服务事务协调器 服务端高可用 管理控制台 同步异步事件支持 如何加入到ServiceComb社区 • 线上 • 关注ServiceComb微信小助手, 加入微信群与大家进行交流 • 官网 http://servicecomb.incubator0 码力 | 20 页 | 4.00 MB | 1 年前3
 微服务的设计原则与⽣态系统 - 王磊集中配置管理理 配置信息的管理理 50 • 与服务在同⼀一个包中 • 使⽤用隔离的配置⽂文件 • 使⽤用环境变量量管理理 配置信息管理理的挑战 51 • 动态更更新配置信息 • 多实例例间的同步 • 配置信息的版本管理理 容错(Resilient) 52 • 降级 - 关闭⾮非核⼼心业务,保证核⼼心业务可⽤用 • 限流 - 超过处理理能⼒力力,采⽤用适当策略略丢弃 • 熔断 - 避免某个服务不不可⽤用导致的故障蔓延 基础设施 业务层 - 聚合服务 - 基础服务 接⼊入层 华为微服务开发框架 服务契约 (OpenAPI) 通信模型 (序列列化、传输协 议) 编程模型 (同步、异步、 Reactive…) 服务发现 熔断 负载均衡 配置 跟踪 … 运⾏行行模型 编程模型 - 使⽤用OpenAPI的⽅方式定义契约0 码力 | 62 页 | 6.65 MB | 1 年前3 微服务的设计原则与⽣态系统 - 王磊集中配置管理理 配置信息的管理理 50 • 与服务在同⼀一个包中 • 使⽤用隔离的配置⽂文件 • 使⽤用环境变量量管理理 配置信息管理理的挑战 51 • 动态更更新配置信息 • 多实例例间的同步 • 配置信息的版本管理理 容错(Resilient) 52 • 降级 - 关闭⾮非核⼼心业务,保证核⼼心业务可⽤用 • 限流 - 超过处理理能⼒力力,采⽤用适当策略略丢弃 • 熔断 - 避免某个服务不不可⽤用导致的故障蔓延 基础设施 业务层 - 聚合服务 - 基础服务 接⼊入层 华为微服务开发框架 服务契约 (OpenAPI) 通信模型 (序列列化、传输协 议) 编程模型 (同步、异步、 Reactive…) 服务发现 熔断 负载均衡 配置 跟踪 … 运⾏行行模型 编程模型 - 使⽤用OpenAPI的⽅方式定义契约0 码力 | 62 页 | 6.65 MB | 1 年前3
共 19 条
- 1
- 2













