Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?ServiceMesh发展趋势(续) 蚂蚁金服 敖小剑 棋到中盘路往何方Part 0:前言 5月底,我在Cloud Native Meetup上做了一个“ServiceMesh 发展趋势:云原生中流砥柱”的演讲,当时主要讲了三块内容: - Service Mesh产品动态 - Service Mesh发展趋势 - Service Mesh与云原生 今天的内容可以视为是上次演讲部分内容的深度展开,如社区 1:ServiceMesh灵魂拷问一:要架构还是要性能? Mixer v1 架构的优点 • 集中式服务: • 提高基础设施后端的可用性 • 为前提条件检查结果提供集群级别的全局2级缓存 • 灵活的适配器模型,使其以下操作变得简 单: • 运维添加、使用和删除适配器 • 开发人员创建新的适配器(超过20个适配器)Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Mixer v1 v1 架构的缺点 • 管理开销 • 管理Mixer是许多客户不想负担的 • 进程外适配器强制运维管理适配器,增加此负担 • 性能 • 即使使用缓存,在数据路径中同步调用Mixer也会增加端到端延迟 • 进程外适配器进一步增加了延迟 • 授权和认证功能是天然适合mixer pipeline的,但是由于mixer 设计 的延迟和SPOF(单点故障)特性,导致直接在Envoy中实现 (Envoy0 码力 | 43 页 | 2.90 MB | 6 月前3
蚂蚁金服Service Mesh渐进式迁移方案会师路线4 第一步:k8s 全面铺开 第三步:接入 (完善后的)Istio, 和社区方案统一 第二步:引入 Sidecar,对接 周边生态 特殊:已经在路 线4上演进的应用, 快速会师到路线11 Service Mesh演进路线 2 2 实现平滑迁移的关键 3 4 5 总结 DNS寻址方案的演进 DNS寻址方案的后续规划保证迁移前后服务间网络互通 Service A 都没有改造,直连 服务器端有改造,单跳 客户端有改造,单跳Service Mesh时代的客户端和寻址方式 服务发现 加密 负载均衡 请求路由 目标服务 的标识 序列化 链路追踪 故障注入 日志 监控 Metrics 熔断 限流 服务降级 前置条件检查 身份认证 密钥管理 访问控制 …… 下沉到 Service Mesh 轻量级客户端 传统 侵入式 客户端 客户端应该尽可能的轻薄通用: 为了兼容RPC应用和k8s(微服务)的服务注册模型,需要为每个RPC接口提供DNS支持 • 未来Serverless中的Function也计划提供DNS寻址支持 • 可能会有更广泛的使用场景 ü 演进思路 • 简化原有SDK (短期需求) • 同时引入域名和DNS,实现通用寻址 (长期目标) 引入DNS寻址方式(基于域名和DNS的Naming Service)Pod: 192.168.1.103 客户端通过域名来对服务进行访问0 码力 | 40 页 | 11.13 MB | 6 月前3
SOFAMesh的通用协议扩展…MESH 落地碰到的问题 • 客户端服务发现与负载均衡无法与 ISTIO 一起工作 • ENVOY 不支持微服务使用的通信协议 • RPC 服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型 INBOUND OUTBOUNDSOFA 服务注册模型落地一个微服务框架需要的工作 • 作为 DNS 来寻址服务 • 开发一个通用协议处理框架 • 避免为不同的微服务框架修改 PILOT 代码 • 通过插件的方式按需支持新的协议 • 对应用代码无侵入性 • 为微服务框架提供轻量化客户端落地一个微服务框架需要的工作 • 部署 ZK 集群作为 RPC 框架的注册中心 • 开发 ZK Platform Adapter for DUBBO • 开发 DUBBO 服务的 XDS 配置下发 • 协议支持(开箱即用模式下也可以省掉)DNS 寻址目标 • 允许应用把接口当做域名来访问远端服务 • 支持在 Kubernetes DNS 之上构建更结构化的域名体系 • 支持跨集群的服务寻址 • 支持单应用多服务的部署模型 bolt://com.yourcompany.youservice:12220POD 落地形态 Services, PODS & DNS CORE DNS com.svc.user -> 1720 码力 | 28 页 | 4.73 MB | 6 月前3
Service Mesh的实践分享基于Java语法的DSL • Zookeeper • 胖客户端 • 基本服务治理功能 App OSP Server Service Registry Service Config Center 服务发现 服务注册 服务元数据下发 OSP client 服务路由 网络传输 服务元数据上报缺点 • 语言单一 • 升级困难 • 复杂代码嵌入对客户端进程影响大服务化体系2.0 - Service Mesh雏形 Mesh雏形 • 物理机、sidecar • Local & Remote,主与备 • 轻量级客户端、本地调用 • Local Proxy负责服务治理与 远程通信 • Remote Proxy负责备份和非 主流流量 JavaApp Local Proxy OSP Server Service Registry Service Config Center Remote Proxy over TCP JSON over HTTP JSON over HTTP多语言服务端接入 • Registry Agent • sidecar • 注册代理 • 健康检查 • 服务端受限于Proxy支持的协 议(目前只支持HTTP 1.1) Local Proxy Web Server Service Registry API Gateway 健康检查 服务注册0 码力 | 30 页 | 4.80 MB | 6 月前3
Service Mesh Meetup #3 深圳站Reviewer 对 MR 进行 code review ,批准合并之后, feature/new_branch 会合并到 develop; • 5. 部署负责人将 develop 分支代码部署到测试环境,然后再通知 QA 测试;(脚本或者人工)有什么问题? • 效率低 • 没有代码检查; • 没有自动化测试(包括单元测试); • 沟通成本高 • 开发需要通知负责人、测试、产品等;(而且是每次构建/部署 者名称我是作者名称Talk is cheap, Show me the code!• 当使用一个客户端实例和多个后端实例进行部署时,所有的调用仅 路由到单个后端实例。当部署第二个客户端时,它可能被路由到另 一个后端实例。这不是所需的那种负载均衡,因为它不允许独立地 扩展客户端和服务器。当客户端实例比服务器实例少时,一些服务 器实例将处于空闲状态,所以 Kubernetes Service 不太适合 的微服务网络以及应用之间的交互。随着规模和复杂性的增长,服 务网格越来越难以理解和管理。 • 它的需求包括服务发现、负载均衡、故障恢复、指标收集和监控以 及通常更加复杂的运维需求,例如 A/B 测试、金丝雀发布、限流、 访问控制和端到端认证等。什么是 Istio • Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有 负载均衡、服务间认证、监控等功能,而不需要对服务的代码做任 何改动。 • 想要让服务支持 I0 码力 | 45 页 | 18.62 MB | 6 月前3
蚂蚁金服网络代理演进之路自定义Session Ticket编码格式 • 160 byte -> 76 byte • Session Ticket扩展 用于会话复用,加速握手过程 • Cached-info扩展 缓存证书等服务端信息,避免 再次握手时重复传输数据 • ECDHE-keyshare扩展 将TLS1.3草案中的1-RTT机制通 过扩展的方式提前应用 • ECC-signature扩展 使用高效ECDSA签名算法的同 短连接 § 统一协议:MTLS+MMTP § 统一调度:MobileDC 最优调度 网络探测 连接建立 传输+保持 通道复用 复合建连 握手优化 短连补偿 智能心跳 数据压缩 质量模型 自动重试 云端补偿 柔性建连 假连淘汰 动态超时 § 终端策略覆盖移动网络难点 § 优化对业务透明 § ROI考虑 好网更快 弱网更好 协议优化 支付宝网络接入层架构示意 § 负载均衡 熔断限流 服务路由 …… Service 业务逻辑 轻量级SDK 协议编解码 Sidecar (MOSN) 服务发现 负载均衡 熔断限流 服务路由 …… 将SDK客户端 的功能剥离 Sidecar专注服务间通讯 混合在一个进程内, 应用既有业务逻辑, 也有各种功能 业务进程专注于业务逻辑Service Mesh 为什么蚂蚁需要Service Mesh • 拥抱微服务,云原生0 码力 | 46 页 | 19.93 MB | 6 月前3
阿里云容器服务大促备战opportunities-to-2025-industry-analysis-key-players-regional- outlook-and-forecast-study/492024云边端一体化协同双十一直播的背后 50% 5倍在线与离线 异构计算能力 ECS, EBM, GPU, FPGA, ECI 高性能网络 VPC, ENI, RDMA, SLB, DNS Public Tensor Flow Spark Flink Redis Zoo keeper云原生实时计算与人工智能@微博 2.4倍性能提升 百亿实时样本 万亿维度模型云原生基础设施 新生态 新算力 新基石 全球化部署 单集群万节点规模 云边端一体化 延时降低75% 混合云2.0架构 交付效率提升3倍 全链路安全架构 实时风险监测、告警、阻断 极速弹性 分钟级1000节点伸缩 异构算力0 码力 | 17 页 | 17.74 MB | 6 月前3
Service Mesh 在『路口』的产品思考与实践- 专注服务间通讯和相 关能力 - 与业务逻辑无关 将SDK客户端 的功能剥离 混合在一个进程内, 应用既有业务逻辑, 也有各种功能, 每次升级都要重新发布应用 业务进程专注于业务逻辑 SDK 中的大部分功能, 拆解为独立进程, 以 Sidecar 的模式运行 将服务治理能力下沉到基础设施,实现独立演进,透明升级7/39 异构系统统一治理 Part Sidecar SOFAMosn, 年中开源基于 Istio 的 SOFAMesh 技术探索 02 2018年开始内部落地,第一 批场景是替代 Java 语言之外 的其他语言的客户端 SDK, 之后开始内部小范围试点 小规模落地 03 2019年上半年,作为蚂蚁金融级 云原生架构升级的主要内容之一, 逐渐铺开到蚂蚁主站的业务应用, 并平稳支撑了618大促 规模落地0 码力 | 40 页 | 15.86 MB | 6 月前3
Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展Layer 3 IP Address/Protocol SDN Layer 2 MAC/VLAN SDN Layer 1 Input Port SDN SDN : 主要关注1到4层 Service Mesh: 主要关注4到7层 类似的问题,不同的网络层次,通信网络的解决方案能为Service Mesh提 供哪些借鉴?通信网络的解决方案:SDN微服务应用层通信的解决方案-Service Mesh RequestConsul Registry遇到的坑: 1.0版本的Consul Registry只能算PoC(原型验证),远未达到产品要求 CPU占用率超高不下 (Pilot+Consul 占用冲高到 400%) • TIME_WAIT Sockets 太多导致FD耗光 Consul Registry优化 • 增加数据缓存,减少无谓的Consul Catalog API调用 • 将Pollin 后的同步时延 优化效果 • 200个服务的规模下,CPU占用率降低了一个数量级 • 服务数据变化同步时延从分钟级降低到秒级 • Consul调用导致的TIME_WAIT Sockets数量减少到个位级产品化增强-Ingress API Gateway K8S Ingress Load balancing SSL termination Virtual hosting Istio Gateway0 码力 | 27 页 | 11.99 MB | 6 月前3
严选 ServiceMesh 实践性能视角 – cNginx vs Envoy(优化后) • 优化方案 • 采用 sriov 容器网络 • Envoy:将1.13版本中 connection loadbalancer 特性移植到 1.10.x 版本 • Envoy 优化后在低并发(<64)的情况下,容器网络 client sidecar 优于 VM 网络直连 • Envoy 优化后在高并发(>=64)的情况下 • 容器网络 灰度发布机制:业务灰度+流量灰度 • 演练测试 • 业务回归验证20/24 一些坑 • Envoy 目前编译版本存在 Bug • 在 Istio pilot 升级到加入 accesslog 相关配置下发功能版本后,Envoy 在一定压力访问或 有客户端主动断开请求时,会进入一段存在问题的断言(assert)逻辑,导致 envoy crash, 此时请求方体现为 502 异常 • 社区目前给出的优化建议是在 /9083 • Mixer 性能陷阱 • 如打开 Mixer 的策略执行功能,每一次调用 Envoy 都会同步调用 Mixer 进行一次策略检查, 导致性能下降的非常迅速 • 社区也已经意识到并着手进行优化 • 作为 Mixer 策略执行的替代品, Istio 的 RBAC 也是可以满足一部分功能的,比如服务白名 单我们就是通过 RBAC 来实现21/24 规划与展望 /0422/240 码力 | 25 页 | 2.07 MB | 6 月前3
共 27 条
- 1
- 2
- 3













