微服务环境下的系统治理与容错
微服务环境下的系统治理与容错 王新栋 • 《架构修炼之道》作者,《决战618:探秘京东技术取胜之道》联合作者; • 对分布式、微服务系统有多年实战经验,所设计和研发的系统经历了多次百亿流量的验证; • 热爱分享,维护技术公众号 [程序架道],对高并发、高可用系统有持续不懈的追求; 个人微信号 技术公众号 • 微服务架构 • 容错 • 总结 • 治理 微服务架构 架构 架构 研发团队必须从公司长远利益出发与其他部门抗争 -- Robert C. Martin 多种架构思想的本质 分层架构思维到六边形架构思维 业务领域代码 基础设施代码 再看六边形架构 治理 微服务到底需要多“微” 微 微服务的“微”暗示了服务的大小,但实际上微服务架构对构成的服务实例并没有大小方面的要求。 微服务的微 微服务的两个“谬论” n 服务之间是强隔离的。 n 微服务是大型系统的唯一选择。0 码力 | 45 页 | 16.09 MB | 1 年前3ServiceComb 的前世今生
无法做到永远在线,大版本升级时,要停机中断服务 微服务化的应用构建和发布 产品发布计划 产品发布计划 产品发布计划 产品发布计划 开发 部署到生成 环境 部署到生成 环境 开发 开发 部署到生成 环境 部署到生成 环境 部署到生成 环境 开发 开发 bugs 旧版本持续运行 Speed & Safety 面临的问题 • 企业应用和互联网应用的不同? 文档生成器:生成HTML与符合 华为规范文档 Mock生成器:生成Mock工具, 用于测试微服务 现有代码提取 OpenAPI工具 与RPC的IDL互 转工具 protobuf3 多语言多框架代 码生成器 多语言Protobuf3对象 编码库 Java 微服务编程框架 Go 框架 其他 框架 Spring MVC JAX-RS POJO Martini 微服务部署平台(PaaS) 微服务开发 微服务基础治理 微服务高级治理 服 务 发 现 服 务 配 置 服 务 路 由 多 通 信 访 问 调 用 链 跟 踪 多 事 务 管 理 多 运 行 时 管 理 ServiceMesh 容 错 & 熔 断 限 流 降 级 服 务 隔 离 容 量 预 测0 码力 | 16 页 | 1.45 MB | 1 年前3张波-虎牙直播在微服务改造中的实践
、 ectd、consul、eureka等。服务注册通常有三种: 自注册、第三方注册、注册中心主动同步,异构微 服务相互调用困难;公共DNS不稳定,解析结果生 效慢,解析失败率高;DNS无法提供内网环境的就 近接入能力,内部服务调用无法实现就近访问。 目标 DNS解析成功率 100% 公共DNS分钟级生效 内部DNS秒级生效 基于IP+CMDB实现就近访问能力 11 dns当前现状 1、 客户端向服务端发送http心跳 负载均衡 支持 支持 手动上下线服务方式 通过控制台页面和API 通过调用API 跨中心同步 支持 不支持 k8s集成 支持 不支持 分组 Nacos可用根据业务和环境进行分组管理 不支持 权重 Nacos默认提供权重设置功能,调整承载流量压 力 不支持 厂商 阿里巴巴 Netflix 服务注册发现对比 配置中心对比 对比项目/配置中心 apollo nacos 开源时间 2016.5 2018.6 配置实时推送 支持(HTTP长轮询1s内) 支持(HTTP长轮询1s内) 版本管理 自动管理 自动管理 配置回滚 支持 支持 权限管理 支持 待支持 多集群多环境 支持 支持 监听查询 支持 支持 多语言 Go,C++,Python,Java,.net,OpenAPI Python,Java,Nodejs,OpenAPI 分布式高可用最小集群数量0 码力 | 27 页 | 1.03 MB | 1 年前32-4-禚娴静-微服务你玩得起吗
行在其独⽴立的进程 中,服务与服务间采⽤用轻量级的通信机制互相沟通(通常是基于HTTP协议的 RESTful API)。每个服务都围绕着具体业务进⾏行构建,并且能够被独⽴立的部署到 ⽣生产环境、类⽣生产环境等。另外,应当尽量避免统⼀一的、集中式的服务管理机 制,对具体的⼀一个服务⽽而⾔言,应根据业务上下⽂文,选择合适的语⾔言、⼯工具对其进 ⾏行构建。 为什么要采⽤用微服务架构? - Rebecca Rebecca Parsons 让系统尽可能快的响应变化! 初衷 • 服务足够小 • 独立运行 • 轻量级通信机制 • 独立的部署 • 去中心化 • 要多小? • 怎么部署? • 出错怎么办? • 如何保证一致性 玩得起微服务的条件 持续改进的⾃自组织⽂文 快速响 Tall enough 服 务 ⾃自 演 进 2009年 你是我们⻅见过最棒的团队! 更多服务更快⼀一点? 服务越来越多,周期越来越短 60 * 6 services 8 * 4 services 1 环境⼿手⼯工维护,频频出错 2014年问题倍出 部署成功率很低,部署时经常 有⼀一堆环境修改需求,运维⼈人 员出错机会增加,运维效率极 低。 2 缺乏有效监控 ⽆无法快速有效定位问题,⽆无法 快速有效知晓服务运⾏行状态, 服务资源浪费。0 码力 | 51 页 | 8.18 MB | 1 年前3微服务的设计原则与⽣态系统 - 王磊
• 每个服务运⾏行行在其独⽴立的进程中,服务间采⽤用轻量量级的通信机制协作(通常是基于RESTful API) • 每个服务都围绕着具体业务进⾏行行构建,并且能够被独⽴立的部署到⽣生产环境、类⽣生产环境等 Microservices – the new architectural style. Martin Fowler,Mar 2014 ...... Micro (u)Services Architecture Conference 2017.4 https://www.continuousdelivery.com/ • 缩短交付周期 • 降低发布⻛风险 • 质量量内嵌 组织协同 环境管理理 数据管理理 松耦合架构 反馈验证 持续集成/部署 内建质量量 微服务架构是松耦合架构机制的⼀一种实现 为什什么基于DevOps? ● Communication ● Automation 同⼀一个结点运⾏行行多个服务(端⼝口不不同) 集中配置管理理 配置信息的管理理 50 • 与服务在同⼀一个包中 • 使⽤用隔离的配置⽂文件 • 使⽤用环境变量量管理理 配置信息管理理的挑战 51 • 动态更更新配置信息 • 多实例例间的同步 • 配置信息的版本管理理 容错(Resilient) 52 • 降级 - 关闭⾮非核⼼心业务,保证核⼼心业务可⽤用 • 限流 - 超过处理理能⼒力力,采⽤用适当策略略丢弃0 码力 | 62 页 | 6.65 MB | 1 年前3微服务创新新品发布
了多种不同 语言进行开 发部署 使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 分布式系统配置中心 服务中心异构通信 多语言运行环境 微服务鉴权 微服务契约工具 Apache mb-service-center/tree/master/syncer Syncer是一个多服务中心的同步工具,专为大型微服务架构设计,实现不同的微服务技术栈实现的微服务业务可以进行数 据通信,未来可支持跨云的数据通信支持。 •对应用程序透明。同步工具启停,不应该对应用程序的原有流程产生影响。 •为多服务中心提供对等网络。他们之间是松耦合的,成员可以自由加入与退出。 •对异构服务中心提供支持。0 码力 | 12 页 | 2.96 MB | 1 年前3Service Mesh在华为公 有云的实践
基于⾃自研的Go语⾔言微服务框架(即将开源)开发 • 使⽤用CSE注册中⼼心与配置中⼼心 • 以Sidecar的⽅方式部署在微服务所运⾏行的环境中,也可以 PerHost模式运⾏行 • ⽀支持多种部署⽅方式 • 占⽤用资源⼩小(闲置10多M,并发运⾏行时30多M) • 简介 • 实现⼀一个Service Mesh • 使⽤用Service Mesh快速构建微服务 • ⽣生态与扩展 • 与PaaS平台结合 Local selector Tracing Order Mesher Http Server 可定制 固定组件 Transport Transport Source Resolver 多协议⽀支持 • 任意协议请求都被抽象为Invocation模型进⾏行处理,最终再转换为协议请 求转发 Http Request Grpc Request Thrift Request Transfer0 码力 | 52 页 | 4.37 MB | 1 年前3Apache ServiceComb 微服务创新项目解读
务领域的微 服务中使用 了多种不同 语言进行开 发部署 使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 多语言运行环境 服务中心异构通信 微服务鉴权 分布式系统配置中心 微服务契约工具 q=servicecomb Syncer是一个多服务中心的同步工具,对应用程序透明。专为大型微服务架构设计,实现不同的微服务技术栈实现的微服 务业务可以进行数据通信,未来可支持跨云的数据通信支持 • 项目地址:https://github.com/apache/servicecomb-service-center/tree/master/syncer Syncer - 融合异构、多服务中心的同步工具 gossip0 码力 | 13 页 | 1.24 MB | 1 年前3ServiceComb在Service Mesh的 探索与思考
Cache Service Instances: 10.24.0.23:8080 10.24.0.24:8080 … Istio Apollo Huawei Confidential 10 多协议支持 - 使用Invocation抽象 - 协议可快速接入到mesher中,并享受同样的治理能力 Http Request Grpc Request Transfer Invocation Handler Chain Consumer service Huawei Confidential Adaptor 11 ServiceComb Service Center架构演进 - 支持多注册中心 - 拥抱混合云架构 - 同时支持客户端自注册与平台注册 - 打通k8s与虚机等基础设施,可实现VM向容器平滑迁移 Service Center k8s adaptor etcdadaptor Injector create KubeAPI server Deploy call Huawei Confidential 15 部署-商业版方案 背后发生了什么? • 为应用容器设置环境变量http_proxy • 为mesher设置CSE地址(注册中心,配 置中心) • 为mesher对接APM 日志收集 • 为mesher对接APM metrics收集 • 为mesher0 码力 | 21 页 | 8.48 MB | 1 年前3Apache ServiceComb 开源微服务社区
务领域的微 服务中使用 了多种不同 语言进行开 发部署 使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 多语言运行环境 服务中心异构通信 微服务鉴权 分布式系统配置中心 微服务契约工具 标准与规范 应用全微服务化,接口标准由财政厅统一管控, ISV只需聚焦微服务交付,降低依赖性 统一业务模型和数据集成标准,系统无缝对接, 财政数据统一呈现,业务全盘管控 基于先进研发理念,标准化研发环境和工具, 开发效率高,财政需求上线快 解除ISV绑定 降低业务监管难度 新需求上线快 案例:助力S省财政厅数字化转型 综控端 无人机管理系统 (单体架构) 地面站 无人机 地面站0 码力 | 15 页 | 2.86 MB | 1 年前3
共 30 条
- 1
- 2
- 3