蚂蚁金服Service Mesh渐进式迁移方案蚂蚁金服 中间件 龙轼 @UC 基础研发部1 Service Mesh演进路线 1 2 实现平滑迁移的关键 3 DNS寻址方案的演进 4 5 总结 DNS寻址方案的后续规划ü 对未来长期目标的认可 • Service Mesh(带控制平面,如Istio) • Kubernetes • 微服务 ü 现实中有很多挑战 • 还有很多应用没有实现微服务化 • 还有很多应用没有运行在kubernetes之上 最重要的:平滑迁移 • 微服务 + Service Mesh + Kubernetes 是目标 • 但是如何从现有体系向目标迈进,必须给出可行的实践指导 ü Roadmap • 预计2019年初 蚂蚁金服主站落地:目标与现状 百川归海蚂蚁金服主站落地方案的实施原则 Target 长期 目标 Step By Step 分步 进行 Resiliency 操作 弹性 符合远期规划 而且是终极形态的Service Mesh(意味着更偏离目标) ü 好处是第一步(非k8s上向Sidecar模式演进)非常自然 • 容易落地 • 快速达成短期目标 ü 缺点是再往后走 • 由于没有k8s的底层支持,就不得不做大量工作 • 尤其istio的非k8s支持,工作量很大 • 而这些投入,在最终迁移到k8s时,又被废弃 ü 结论: • 不符合蚂蚁的远期规划(k8s是我们的既定目标) • 会造成投资浪费(k8s铺开在即)0 码力 | 40 页 | 11.13 MB | 6 月前3
微博Service Mesh实践· BeiJing Cluster 模块 �18 微博Service Mesh实践 - WeiboMesh WM/ Client request Server WM/ Server ⽬目标机器器 请求机器器 Client Cluster High Available Load Balance Filter Chain Transport Endpoint Filter ➢Roundrobin ➢Random ➢…Service Mesh Meetup · BeiJing Endpoint �20 微博Service Mesh实践 - WeiboMesh ⽬目标机器器 请求机器器 Keep Alive Weibo Mesh Endpoint filter call serialize channelsService Mesh Meetup · BeiJing ontent(${size} byte)Service Mesh Meetup · BeiJing 协议投递过程 �23 微博Service Mesh实践 - WeiboMesh WM ⽬目标机器器 WM 请求机器器 client server motan2/simple provider http/cgi/… motan2/simple pointerService Mesh0 码力 | 43 页 | 1007.85 KB | 6 月前3
Service Mesh的实践分享实时上下游限流治理 • 智能路由 • 开源智能参数治理 • 现状 • 依赖用户手工配置参数(超时时间、限流) • 服务实例的差异导致配置相当复杂,容易 配置不合理 • 无法动态根据系统指标调整阈值 • 目标 • 用户无需拍脑袋设值,服务治理中心根据 历史指标进行推荐,对不合理的设置进行 建议,如 • 根据应用的历史延迟时间推荐超时设置 • 根据应用的历史流量数据推荐限流设置 • 根据动态指标自动调整配置 配置治理参数智能故障分析&告警 • 现状 • 告警信息分散,需要人工进行更多的数 据收集和整合才能定位问题,效率低下 • 告警信息偏原始,缺乏对告警信息进行 进一步推导得到具体的措施 • 目标 • 基于内部的智能根因分析大框架,通过 智能中心整合机器内、集群间、调用链 上的指标,对信息进行整合和推导,得 出具备操作性的建议 Proxy App Intelligent Framework 如整条调用链入口要求的超时是500ms,然而 中间某个服务的超时时间是5s。超时时间的严 重差异容易造成资源浪费(上游超时返回了下 游还继续往下调)和数据不一致风险(上游以 为写失败了下游却写成功了) • 目标 • 实时上下游超时治理 • 通过传递剩余超时时间,让下游可以判断是否 继续一些重量级操作 • 实时上下游限流治理 • 下游资源异常(DB调用超时、redis超时等)动 态调整上游限流值或直接降级0 码力 | 30 页 | 4.80 MB | 6 月前3
Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?Mozilla官方定义: WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有 紧凑的二进制格式,可以接近原生的性能运行,并为诸如C / C ++等语言提供一个编译目标,以便它们可以 在Web上运行。它也被设计为可以与JavaScript共存,允许两者一起工作。 WebAssembly不是一门编程语言,而是一份字节码标准。 WebAssembly字节码是一种抹平了不同CPU架构的机器码, V8(https://v8.dev/) ● Null Sandbox (use the API, compile directly into Envoy)支持Web Assembly扩展的Mixer v2:终极目标形态 Part 2:ServiceMesh灵魂拷问二:性能有了,架构怎么办? Envoy Infrastructure Backend Infrastructure Backend Infrastructure Kubernetes 上运行服务网格的规 范。它定义了由各种供应商实现的通用标准。这 使得最终用户的标准化和服务网格供应商的创新 可以两全其美。SMI 实现了灵活性和互操作 性。” “SMI API的目标是提供一组通用的,可移植的 Service Mesh API,Kubernetes用户可以以 供应商无关的方式使用这些API。通过这种方式, 可以定义使用Service Mesh技术的应用程序, 而0 码力 | 43 页 | 2.90 MB | 6 月前3
SOFAMesh的通用协议扩展Adapter for DUBBO • 开发 DUBBO 服务的 XDS 配置下发 • 开发 DUBBO 服务的路由规则 XDS 适配 • 开发 DUBBO 协议支持(开箱即用模式下也可以省掉)DNS 寻址目标 • 允许应用把接口当做域名来访问远端服务 • 支持在 Kubernetes DNS 之上构建更结构化的域名体系 • 支持跨集群的服务寻址 • 支持单应用多服务的部署模型 bolt://com.yourcompany 框架中的接口定义 一个应用可能包含多个 RPC Service RPC Service 关联到一个 Kubernetes 服务 RPC Service 的域名就是其接口X-PROTOCOL 通用协议扩展目标 • Kubernetes Native,高性能,低侵入性的通用 Mesh 落地方案 • 支持新 RPC 框架和通信协议低成本接入 • 协议扩展对 Mesh 控制平面透明化 • 允许对协议多层次,插件化的扩展X-PROTOCOL0 码力 | 28 页 | 4.73 MB | 6 月前3
蚂蚁金服双十一 Service Mesh 超大规模落地揭秘SDK,我们给出的答案是 MOSN。 方案落地-选型 开源/自研:全部迁移到 envoy?不现实,自有协议+历史负担。 SDK/透明劫持:运维和可监控性不好,性能不高,风险不太可控。12 方案落地-目标架构 MOSN APP Pod MOSN APP Pod 服务发现 More Sidecar More Sidecar Pilot MQ Kubernetes Sidecar Operator0 码力 | 26 页 | 2.71 MB | 6 月前3
陌陌Service Mesh架构实践数据平面Agent14/24 整体架构 数据平面 • 现有协议的流量转发 • Agent平滑升级机制 控制平面 • 轻量的Pilot Proxy • 向Istio的标准协议靠拢 重点目标 长期规划15/24 数据平面实践细节 • 部署方式 • 升级方式 • 容灾方式 • 性能问题 • 资源问题 • 兼容问题 关键设计 关键问题16/24 数据平面部署方式 容器化运行方式0 码力 | 25 页 | 1.25 MB | 6 月前3
Service Mesh 高可用在企业级生产中的实践Microservices • 微服务 & 单体 • Spring Cloud & Service Mesh7/总页数 运行时支撑服务 • 服务注册中心 • 服务网关 • 配置中心 混合微服务的互联互通 目标 • 互联互通 • 平滑迁移 • 灵活演进 环境 • 虚拟机 • Kubernetes8/总页数 混合微服务的互联互通 百度智能云 CNAP 混合微服务架构图 • Spring Cloud0 码力 | 38 页 | 1.38 MB | 6 月前3
SOFAMOSN持续演进路径及实践分享1 • Golang实现 • 新生项目,初期旨在搭建 RPC亲和,高度可扩展性 的Golang转发系统 • 开发活跃,最新版为0.4.0 • 蚂蚁+UC主导,重点搭载 SOFAMesh使用,目标服 务通用场景,金融场景SOFAMOSNSOFAMOSN内部模块设计SOFAMOSN数据流SOFAMOSN数据流持续演进路径 & 技术案例能力 0.1.0 0.2.0 0.3.0 0.4.00 码力 | 29 页 | 7.03 MB | 6 月前3
大规模微服务架构下的Service Mesh探索之路Mixer CacheMixer Cache的隐患 a + b + c = 300 a * b * c = 1000000 笛卡尔乘积Mixer反省之二:隔离和抽象的层次 ü Mixer的设计目标: • 提供统一抽象(Adapter) • 隔离基础设施后端和Istio其他部分 • 容许运维对所有交互进行精细控制合并Check和Quota ü 我们的反思 • 认可这样的抽象和隔离,确实有必要从应用中剥离出来0 码力 | 37 页 | 7.99 MB | 6 月前3
共 11 条
- 1
- 2













