张波-虎牙直播在微服务改造中的实践
能 力 异 常 摘 除 能 力 dmx dns-f app nacos M S write read DNS-F在数据库场景的落地 背景 在数据库服务切换时效率低,依赖 业务方修改配置,时效不确定,通 常需要10分钟以上; 目标 数据库切换秒级生效; 技术特点-DNS-F M S S S M1.mysql S1.mysql S2.mysql S3.mysql if 负载均衡变更需要更新配置发布后 才能生效,节点扩缩容,屏蔽操作 需要人工参与,流量接入接出时间 长 目标 流量接入接出时长低于30秒 负载均衡配置下发无状态改造 虎牙负载均衡部署的机器数百,配置下发的可靠性保障,一致性保障要求特别严格, 如果出现配置下发不及时,或下发配置失败,极大可能出现故障,同时负载均衡服 务弹性能力的要求较高,在业务高峰如果不能快速扩容,容易出现全网故障 传统配置下发方式 负载均衡配置固话在配置文件中, 负载均衡配置固话在配置文件中, 节点操作需要人工上系统操作增减 节点 配置中心监听方式 客户端主动监听配置更新,配置秒 级生效,新扩容服务主动拉取全量 配置,流量接入时长缩短3分钟+ 配置名字服务 配置IP方式 服务端下发文件更新配置,更新配 置生效时间长,由于需要预先知道 负责均衡集群的机器信息,扩缩容 需要等元信息同步以后才能接入流 量,扩容流量接入时间长 负载均衡节点对接名字服务0 码力 | 27 页 | 1.03 MB | 1 年前3微服务创新新品发布
使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 分布式系统配置中心 服务中心异构通信 多语言运行环境 微服务鉴权 微服务契约工具 Apache ServiceComb 面对用户痛点持续创新 3 github.com/apache?q=servicecomb gossip 协议 6 github.com/apache?q=servicecomb servicecomb.apache.org 实现云原生的分布式系统配置中心,使能运维人员通过易于理解的数据和入口,管理复杂的分布式系统配置。 https://github.com/apache/servicecomb-kie Timeout(service=serviceB, schema=user -在这样的数据格式设计下可生成多角度的配置视图,提升易用性,人类可读性 假如说我们要定义A到B以及到某个API的超时时间 -学习成本高,运维人员要学习这个只在团队内部生效的key规则 -所有的key集中在一种类型的视图中管理,管理成本高。 -不断增长的规则定义,越来越复杂,人类不可读。 -Key设计无法扩展变更,没法轻易变更数据结构 分布式系统配置中心 7 github.com/apache0 码力 | 12 页 | 2.96 MB | 1 年前3微服务的设计原则与⽣态系统 - 王磊
IaaS 微 服 务 开 发 框 架 ⼯工 程 实 践 与 规 范 持 续 交 付 流 ⽔水 线 端 到 端 的 ⼯工 具 链 注册发现 监控 调⽤用链 路路由 授权认证 ⽇日志聚合 容错 集中配置 基础设施 业务层 - 聚合服务 - 基础服务 接⼊入层 • 流量量限制 • 调⽤用统计 • 安全认证 • 提供统⼀一接⼝口,封装内部变化 • 协议转换 API⽹网关 IaaS 微 服 务 开 发 框 架 ⼯工 程 实 践 与 规 范 持 续 交 付 流 ⽔水 线 端 到 端 的 ⼯工 具 链 注册发现 监控 调⽤用链 路路由 授权认证 ⽇日志聚合 熔断 集中配置 基础设施 接⼊入层 业务层 - 聚合服务 - 基础服务 • ⾯面向对象设计(名词/动词) • 可重⽤用的逻辑 • 资源密集型部分 • 领域驱动设计 • 数据访问⽅方式 授权认证 ⽇日志聚合 容错 集中配置 基础设施 接⼊入层 业务层 - 聚合服务 - 基础服务 注册发现 为什什么要注册发现 • 服务重启/升级后的IP地址变化 • ⽔水平伸缩后服务的实例例数量量变化 • 同⼀一个结点运⾏行行多个服务(端⼝口不不同) 集中配置管理理 配置信息的管理理 50 • 与服务在同⼀一个包中 • 使⽤用隔离的配置⽂文件 • 使⽤用环境变量量管理理0 码力 | 62 页 | 6.65 MB | 1 年前3Apache ServiceComb 微服务创新项目解读
方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 多语言运行环境 服务中心异构通信 微服务鉴权 分布式系统配置中心 微服务契约工具 Apache ServiceComb [Website] http://servicecomb.apache.org [Github ] https://github 开箱即用:提供了默认的Authentication Server、Edge Service、Resource Server实现,简化用户开发难度 • 开发简单:提供配置文件和Annotation两种方式配置权限,支持权限配置和代码逻辑分离,也支持在使用Annotation声明式 的权限配置,相辅相成。 • 第三方认证支持:采用Open ID协议,对接Github等三方认证系统。 • 安全高效:混合Token模式和Sess http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 实现云原生的分布式系统配置中心,使能运维人员通过易于理解的数据和入口,管理复杂的分布式系统配置 • 项目地址:https://github.com/apache/servicecomb-kie Timeout(service=serviceB, schema=user0 码力 | 13 页 | 1.24 MB | 1 年前3ServiceComb在华为消费者云的亿级用户微服务实践
Thrift ServiceComb Java语言: Dubbo Motan LB 内置LB: 客户端负载均 衡 外置LB: Nginx、 Ribbon SLB 注册中心 配置服务: Zookeeper etcd 缓存方案: Redis 数据库方案: DB + MQ 服务治理 服务治理: 超时、流控、 降级等 运维KPI: ELK Zabbix 有返回响应,客户端业务线程就会一直阻塞(wait),傻等期 间,无法处理其它业务消息。 2、纠结的超时时间:服务的超时时间配置是个比较纠结的事 情,如果超时时间配置过大,如果响应慢,会导致线程被长时 间挂住;如果配置过小,则会导致超时增多,成功率降低。 3、雪崩效应:假如超时时间配置较大(例如3S),服务端响 应的平均时延达到了超时时间阈值,会导致业务线程长时间处 于wait状态,工作效率降低,业务堆积,发生级联的雪崩效应。 隔离仓-2 配置隔离仓: 通过配置线程池隔离仓,实现快 慢接口、读写接口、核心和非核 心接口、管理和业务接口的调度 隔离,提升微服务可靠性 实践-轻量化 Website: http://servicecomb.incubator.apache.org/ Gitter: https://gitter.im/ServiceCombUsers/Lobby 业务按需配置Service0 码力 | 15 页 | 1.15 MB | 1 年前3使用微服务架构快速开发万级TPS高可用电商系统
apache.org [Github ] https://github.com/apache?q=servicecomb 微服务的其他组件 • 配置中心 a) 集中配置 b) 动态配置 c) 配置历史保留 d) 配置回滚 社区召集! e) 灰度发布配置 社区召集! • 认证鉴权 a) 认证 b) 鉴权 • Toolkit a) 契约 b) 脚手架 https://github.com/apache https://github.com/apache?q=servicecomb 步骤2 优化 先关注数据层的优化 1. 锁资格 - (锁库存-下订单) CP MySQL-MGR 高带宽 NvmeSSD-持久化配置 索引-加 锁 update-where 2. 库存缓存 AP Codis 3. 收藏数据 AP Codis 用户发请 求查库存 里列表 读缓存的 库存的列 表返回 用户对有库存 的房子发起下 微服务层的优化 1. SeviceComb优异的异步通讯模型,REST over Vertx。 2. 透明RPC模式+CompletableFuture。把异步继续进行。 3. 低超时+重试策略配置。“ 高可用”的定义?A跟a 的区别 à 客户端无异常。 4. Zuul VS edge-service(完胜)。 100并发 vs 20000 并发。 5. 生产环境需从最外层开始设置限流策略,并设置降级机制。0 码力 | 15 页 | 1.46 MB | 1 年前3ServiceComb java SDK详解
根据url选择合适的版本组 • AZ亲和性 • 根据传输通道分组 • 根据实际调用统计,隔离暂时不可用的调用目标 • 开发人员通过SPI扩展过滤功能 2.以过滤得到的Endpoint集合作为输入,根据配置的策 略进行LoadBalance: • 轮询、响应时间权重、随机 • 基于Netflix ribbon,开发人员可以根据需要自 定义IRule的实现 instances VersionRule .....}/pa th 则可以配置为 servicecomb: http: dispatcher: edge: default: enabled: true prefix: rest withVersion: true prefixSegmentCount: 1 如果内部微服务URL规则为: /{v1/v2/......}/path 则可以配置为 servicecomb: http: default: enabled: true prefix: rest withVersion: true prefixSegmentCount: 2 如果内部微服务URL规则为: /path 则可以配置为 servicecomb: http: dispatcher: edge: default: enabled: true prefix: rest withVersion: true prefixSegmentCount:0 码力 | 21 页 | 1.15 MB | 1 年前3微服务架构及ServiceComb实践
apache.org [Github ] https://github.com/apache?q=servicecomb 微服务的其他组件 • 配置中心 a) 集中配置 b) 动态配置 c) 配置历史保留 d) 配置回滚 社区召集! e) 灰度发布配置 社区召集! • 认证鉴权 a) 认证 b) 鉴权 • Toolkit a) 契约 b) 脚手架 • 分布式日志 https://github https://github.com/apache?q=servicecomb 步骤2 优化 先关注数据层的优化 1. 锁资格 - (锁库存-下订单) CP MySQL-MGR 高带宽 NvmeSSD-持久化配置 索引-加 锁 update-where 2. 库存缓存 AP Codis 3. 收藏数据 AP Codis 用户发请 求查库存 里列表 读缓存的 库存的列 表返回 用户对有库存 的房子发起下 MySQL-MGR 微服务层的优化 1. SeviceComb优异的异步通讯模型,REST over Vertx。 2. 透明RPC模式+CompletableFuture。把异步继续进行。 3. 低超时+重试策略配置。“ 高可用”的定义?A跟a 的区别 客户端无异常。 4. Zuul VS edge-service(更优)。 5. 生产环境需从最外层开始设置限流策略,并设置降级机制。 [社区网站] http://servicecomb0 码力 | 14 页 | 2.04 MB | 1 年前3ServiceComb雄关漫道
限流降级 • 运维相关问题 • 动态配置管理 • 系统监控 • 路由管理 微服务的雄关漫道 • 服务框架 • Service Mesh ServiceComb开源微服务解决方案 ServiceComb微服务解决方案 Java编程 (POJO/Spring MVC/JAX-RS) Golang 编程 限流 负载均衡 分布式追踪 动态配置 服务注册 服务度量 通信协议 (Rest&RPC) Prometheus Dubbo ServiceMesh K8S 对接行业解决方案 ServiceComb项目介绍 • Java Chassis • 高性能的微服务框架,提供服务注册发现以及动态配置管理,以及限流降级,容错熔 断等服务治理功能 • Service Center • 基于Etcd高性能,高可用服务注册中心 • Saga • 微服务事务最终一致性问题解决方案 • 提供一个 Java Chassis的架构图 通信模型 (序列化、 传输协议) 编程模型 (Spring MVC JAXRS, POJO…) 服务契约 (OpenAPI) 服务发现 熔断 负载均衡 配置 跟踪 … 运行模型 围绕服务契约进行开发以及运维 异步化支持 • 基于Vertx提供的异步内核 • 保持高性能的同时支持同步调用方式 • 将通信线程与业务处理线程分离 • 操作级别线程池控制,支持隔离仓0 码力 | 20 页 | 4.00 MB | 1 年前3Service Mesh在华为公 有云的实践
与微服务部署在⼀一个Pod • 占⽤用资源很⾼高 Mesher • Service Mesh的⼀一种实现 • 基于⾃自研的Go语⾔言微服务框架(即将开源)开发 • 使⽤用CSE注册中⼼心与配置中⼼心 • 以Sidecar的⽅方式部署在微服务所运⾏行的环境中,也可以 PerHost模式运⾏行 • ⽀支持多种部署⽅方式 • 占⽤用资源⼩小(闲置10多M,并发运⾏行时30多M) • 简介 ServiceD Mesher ServiceA Mesher ServiceB Control Plane 可⼈人⼯工介⼊入,为所有运⾏行的Mesher 提供配置下发,不会碰服务请求 • 注册中⼼心 • 下发配置 • 对接监控服务 • 调度引擎 Mesher Mesher Mesher Mesher Service Center Governance UX LB RouteRule Mesh快速构建微服务 • ⽣生态与扩展 • Service Mesh在华为内部的技术演进 部署 • 本地或虚机部署: 样例 • kubernetes部署 • ServiceStage部署 最⼩小化配置项 • HTTP_PROXY • SERVICE_NAME • PROVIDER_ADDR • CSE_REGISTRY_ADDR 部署复杂性提升,如何消弭? • Infrastructure0 码力 | 52 页 | 4.37 MB | 1 年前3
共 32 条
- 1
- 2
- 3
- 4