蚂蚁金服Service Mesh渐进式迁移方案步步为营,扩大战果 • 杜绝一刀切k8s和Service Mesh落地方案演进路线 部署在 非k8s上 不是Service Mesh形态 部署在K8s上 非SM 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在K8s上 Service Mesh (Istio模式) 部署在K8s上 Service Mesh (Sidecar模式) 部署在 非k8s上 Service Mesh 不现实 Istio的非k8s支 持投入产出比 太差 背景1:原生Istio无法支撑我们的规模 背景2:k8s(Sigma3.1)将加快普及 K8s普及在即, 不适合再大面积 铺开,快速会师ü 和路线1的核心差别 • 是先上k8s,还是先上Service Mesh • 而且是终极形态的Service Mesh(意味着更偏离目标) ü 好处是第一步(非k8s上向Sidecar模式演进)非常自然 缺点是再往后走 • 由于没有k8s的底层支持,就不得不做大量工作 • 尤其istio的非k8s支持,工作量很大 • 而这些投入,在最终迁移到k8s时,又被废弃 ü 结论: • 不符合蚂蚁的远期规划(k8s是我们的既定目标) • 会造成投资浪费(k8s铺开在即) 演进路线2分析 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在 非k8s上 Service Mesh0 码力 | 40 页 | 11.13 MB | 6 月前3
大规模微服务架构下的Service Mesh探索之路以蚂蚁金服的标准,稳定性的要求自然是很高 • 高可用方面的要求很非常高 ü 部署的要求 • 需要用于多种场合:主站,金融云,外部客户 • 需要满足多种部署环境:虚拟机/容器,公有云/私有云,k8s • 需要满足多种体系:Service Mesh,Sofa和社区主流开发框架 Service Mesh落地要面临的实际要求选择开源产品,还是选择自研? 起点:开源 起点:自研 全新打造;或依托现有SDK • 第一选择,重点关注对象 • 奈何迟迟不能发布生产可用版本 • 性能和稳定性远远不能满足蚂蚁的 要求 • 但我们非常认可Istio的理念和方向 Conduit • 只支持k8s,而蚂蚁尚未普及k8s • 数据平面由Rust编写,过于小众,难于 从社区借力。 • 同样存在技术栈问题 • 公司和产品在社区知名度和影响力有限国内公司的选择之一:自研 华为:CES Mesher • 控制平面据传“挣扎了一下”,最终还 是选择Istio,进行定制和扩展,解耦k8s国内公司的选择之三:另辟蹊径 UCloud:Service Mesh • 非常有意思的轻量ServiceMesh实践 • 从Istio中剥离Pilot和Envoy • 去掉Mixer和Auth • 定制Pilot,实现ETCD Adapter • 脱离k8s运行Sofa Mesh在技术选型时考虑 Envoy • 数据平面:Envoy最符合要求0 码力 | 37 页 | 7.99 MB | 6 月前3
Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展service mesh is a dedicated infrastructure layer for handling service-to-service communication. It’s responsible for the reliable delivery of requests through the complex topology of services that comprise Deployment K8s API Server 管控规则 灰度发布 网格增强组件 原生组件 APP: Traffic Management APP ...产品化增强-服务注册发现 出于历史原因,我们使用了Kubernetes来部署服务,但并未使用Kubernetes内置的 服务发现功能。 Process Service-A Service-B Service-C Coarse Coarse grained Service Application Process Process Service B Process (Service-E) Process (Service-F) Fine grained Service (Service-D) An example application: Combination of “fine Grained”0 码力 | 27 页 | 11.99 MB | 6 月前3
Service Mesh的实践分享vs. Daemonset + remote proxy Sidecar(in Pod) Daemonset 对容器的影响 影响大。Pod中增加sidecar容器,加大整个Pod的资源需 求,对K8s的调度形成压力,特别是在资源紧张的情况下; 而且还容器导致资源浪费(sidecar的使用率问题) 影响小。宿主机预留部分资源启动daemonset 即可 运维难度 难度大。Sidecar故障会影响同一个pod的业务容器,同 Mixer的中央节点问题 • 传统基于日志收集的tracing方 案足够成熟 • 内部实现一套可插拔的鉴权框 架也能接受混合部署 vs. 绑定K8s • 历史原因导致长期都会物理机 和容器并存,内部需求必须要 同时支持物理机和云 • 绑定K8s能够享受K8s的红利, 但也限制了使用范围 +服务治理程度更接地气 • 不停的迭代、落地、反馈,打 造一系列的实用的治理功能 • 规则路由、标签路由、邻近机房 吃光? • 根据来源Pod IP进行流量统计 • 超过流量阈值临时切换到remote proxy • 返回的消息带特殊header,SDK感知该header并进行切换 • 被切走的客户端每10s切换回来local proxy,若仍然超限会再被切走 • 默认单IP限流值是2w qps今年计划(Roadmap) 我是作者名称Roadmap • 智能参数治理 • 实时反馈 • 历史指标 •0 码力 | 30 页 | 4.80 MB | 6 月前3
SOFAMOSN持续演进路径及实践分享上海机房 Service B MOSN Service B MOSN 1. A服务访问B服务,首 先请求同一个POD中的 sidecar MSON RZone A Rzone B Gzone Service B MOSN 2. 尝试在本 Zone内访 问B服务 3. 若当前 Rzone内不 存在B服务, 尝试在本机 房内部查找 3. 若当前机 房内不存在 B服务,路 由到Gzone 机房UC落地 - XProtocol DNS方案规划 & 展望MOSNG 待开源MOSN-X eBPF 加速卡 DPDK MOSN SSL Offload User Protocol Stack K8S Ingress Microservice Frontend & Gateway MOSNG Serverless 高性能统一转发平面 下一代微服务体系 下一代网络接入系统 运维/流量调拨/监控/…0 码力 | 29 页 | 7.03 MB | 6 月前3
Service Mesh 在蚂蚁金服生产级安全实践SDS Benefits: The private key never leaves the node: It is only in the Citadel agent and sidecar’s memory. The secret volume mount is no longer needed: The reliance on the Kubernetes secrets is ID、应用名等),并返回给应用 B。 应用 B 根据安全Sidecar返回的可信属性,进行权限校验逻辑。使用可信身份服务构建敏感数据下发通道使用可信身份服务构建敏感数据下发通道 密钥更新通道 安全Sidecar 的认证能力中依赖密钥等敏感信 息,在参考社区SDS方案的基础上,实现敏感 信息的管理及安全下发通道。 用户将密钥等信息通过CRD方式提交至K8s, 通过K8s的RBAC方式控制访问权限0 码力 | 19 页 | 808.60 KB | 6 月前3
微博Service Mesh实践RegisterService Mesh Meetup · BeiJing 业务部⻔门调⽤用链 微博Service Mesh实践 - WeiboMesh �5 RPC A WEB A 平台体系 RPC B WEB B Golang 服务 PHP 服务 OR服务 …… RestFul API 业务部⻔门 Motan ➢ 业务部⻔门语⾔言种类繁多 ➢ 微服务体系建设不不完善/重复 ➢ ⽹网络抖动,dns不不稳定 A Service B Service C 微服务 Weibo MeshWeibo Mesh⽅方案介绍Service Mesh Meetup · BeiJing Weibo Mesh 总体架构 �15 微博Service Mesh实践 - WeiboMesh Weibo Mesh Service A Client Weibo Mesh Service B container - WeiboMesh Istio:Pilot适配云平台 WM:注册中⼼心 云 VS ⾮非云 WM Consul、ZK、Vintage WM Envoy Pilot Envoy K8s、Mesos、Eureka Register Register Envoy API AdapterService Mesh Meetup · BeiJing 和Istio在业务感知上的区别 �390 码力 | 43 页 | 1007.85 KB | 6 月前3
Service Mesh 微服务架构设计Java SE 7.0 2014年 Java SE 8.0 2017年 Java SE 9.0 2018年 Java SE 10 Java SE 11应用架构演进史 C/S (Client/Server) B/S (Browser/Server) MVC (Model View Controller) SOA (Service-Oriented Architecture) 注 Containers Middlewar e Runtime Data Application s FaaS Function Hardware Virtualizati on OS Containers Middlewar e Runtime Data Application s SaaS Function Hardware Virtualizati on OS Containers Middlewar e Runtime Data Application s PaaS Function Hardware Virtualizati on OS Containers Middlewar e Runtime Data Application s CaaS Function Hardware Virtualizati on OS0 码力 | 36 页 | 26.53 MB | 6 月前3
Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?Mixer的变动不影响Proxy • Proxy无需和Adapter耦合 • 读取配置 -> 连接k8s/Galley • Adapter的运行时资源开销 • 不受Adapter增减/更新/升级影响 • 保持Proxy代码简单 • 保持Proxy代码简单 • 数据平面可替换原则 Kubernete s API Server Adapters ConfigurationsOut-of-process Mixer V2 Architecture https://docs.google.com/document/d/1QKmtem5jU_2F3Lh5SqL p0IuPb80_70J7aJEYu4_gS-s/edit#heading=h.hvvcgepdykro Owner: mtail@google.com Work-Group: Policies and Telemetry Short self link: v1的优点不应该成为Mixer v2的缺点 优点: • 架构优雅,职责分明,边界清晰 • Mixer的变动不影响Proxy • Proxy无需和Adapter耦合 • 读取配置 -> 连接k8s/Galley • Adapter的运行时资源开销 • 不受Adapter增减/更新/升级影响 • 保持Proxy代码简单 • 保持Proxy代码简单 • 数据平面可替换原则 • 集中式服务:0 码力 | 43 页 | 2.90 MB | 6 月前3
蚂蚁金服 API Gateway Mesh 思考与实践的定义 /013/21 LB\Ingress API Gateway Sidecar App POD Sidecar App POD Traffic Control Plane K8S Cluster API Gateway in Service Mesh4/21 API Gateway Service Mesh vs 南北流量(内外) API Gateway vs Service … Filter Pipeline Extension JavaScript Lua GoPlugin ScriptFilter File Istio xds rest api k8s configmap config file mobile openapi mgs15/21 可灰度 可回滚 可监控 蚂蚁金服「三板斧」 API Gateway Mesh 落地挑战 风险 sian->protobuf ead->goroutine sigma 已知的风险都不是风险16/21 M O S N A P P Gateway LB Spanner x % x*(100-y) % x*y % 100-x % X:去中心的比例 Y:Mesh 化的比例 M O S N A P P A P P A P P LoadBalancer Spanner http response0 码力 | 22 页 | 1.72 MB | 6 月前3
共 28 条
- 1
- 2
- 3













