蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘 奕杉Agenda Ø背景 Ø构架 Ø能力 Ø性能 ØRoadMap背景为什么蚂蚁需要ServiceMesh Ø拥抱微服务,云原生 • SOFA 5规划落地 • 兼容K8S的智能调度体系 Ø运维体系的有力支撑 • LDC • 弹性伸缩 • 蓝绿/容灾/.. Ø金融级网络安全 • 金融级鉴权体系 • 云原生zero trust网络安全趋势 2SOFAMosn内数据流 3NET/IO 4 Ø屏蔽IO处理细节 Ø定义网络链接生命周期,事件机制 Ø定义可编程的网络模型,核心方法,监控指标 Ø定义可扩展的插件机制PROTOCOL 5 Ø定义编解码核心数据结构 üMesh处理三段式:Headers + Data + Trailers Ø定义协议Codec核心接口 ü编码:对请求数据进行编码并根据控制指令发送数据 ü解码:对IO数据进行解码并通过扩展机制通知订阅方 为网络协议请求/响应提供可编程的抽象载体 ü 考虑PING-PONG,PIPELINE,分帧STREAM三种典型流程特征 Ø定义Stream生命周期,核心事件 Ø定义Stream层编/解码核心接口 ü 核心数据结构复用Protocol层 Ø定义可扩展的插件机制 Ø对于满足请求Stream池化的需求 Ø需处理上层传入的状态事件PROXY 7 Ø基于Stream抽象提供多协议转发能力 Ø执行Stream扩展Filters0 码力 | 44 页 | 4.51 MB | 6 月前3
Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?• 读取配置 -> 连接k8s/Galley • Adapter的运行时资源开销 • 不受Adapter增减/更新/升级影响 • 保持Proxy代码简单 • 保持Proxy代码简单 • 数据平面可替换原则 Kubernete s API Server Adapters ConfigurationsOut-of-process Adapter 7/39 Istio的新回答:架构继续优先,性能继续放一边 灵活的适配器模型,使其以下操作变得简 单: • 运维添加、使用和删除适配器 • 开发人员创建新的适配器(超过20个适配器)Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Mixer v1 架构的缺点 • 管理开销 • 管理Mixer是许多客户不想负担的 • 进程外适配器强制运维管理适配器,增加此负担 • 性能 • 即使使用缓存,在数据路径中同步调用Mixer也会增加端到端延迟 的延迟和SPOF(单点故障)特性,导致直接在Envoy中实现 (Envoy SDS) • 复杂性 • Mixer使用一组称为模板的核心抽象,来描述传递给适配器的数据。 这些包括“metrics”,“logentry”,“tracepan”等。这些抽 象与后端想要消费的数据不匹配,导致运维需要编写一些手动配置, 以便在规范的 Istio 样式和后端特定的样式之间进行映射。原本期望 这种映射可以在适配器中实现很大程度上的自动化,但是最终还是0 码力 | 43 页 | 2.90 MB | 6 月前3
Service Mesh的实践分享基本服务治理功能 App OSP Server Service Registry Service Config Center 服务发现 服务注册 服务元数据下发 OSP client 服务路由 网络传输 服务元数据上报缺点 • 语言单一 • 升级困难 • 复杂代码嵌入对客户端进程影响大服务化体系2.0 - Service Mesh雏形 • 物理机、sidecar • Local 契约化治理,服务接口变更diff并 通知上游 • 环境无关,物理机、云、测试机 器、本机都能跑实践中踩过的坑 我是作者名称ZooKeeper的强耦合 • 初始设计没有抽象服务注册发现和服务配 置的接口,直接操作ZK并且依赖了ZK的特 性和原语 • ZK弊端显现 • 跨机房多活问题 • 性能问题 • 宠物对待 • API不友好问题 • 不能unwatch • 需要花费很大力气进行迁移和替换PHP 无法动态根据系统指标调整阈值 • 目标 • 用户无需拍脑袋设值,服务治理中心根据 历史指标进行推荐,对不合理的设置进行 建议,如 • 根据应用的历史延迟时间推荐超时设置 • 根据应用的历史流量数据推荐限流设置 • 根据动态指标自动调整配置 • 如单个实例内指标异常(超时率、cpu异常等) 动态调整限流值或直接降级 Proxy Server Intelligent center 机器指标0 码力 | 30 页 | 4.80 MB | 6 月前3
蚂蚁金服网络代理演进之路减少握手延迟 • 代价:握手前发送的数据不能 保证防重放攻击,因此要求应 用程序自己保证防重放攻击 Small Ticket • 自定义Session Ticket编码格式 • 160 byte -> 76 byte • Session Ticket扩展 用于会话复用,加速握手过程 • Cached-info扩展 缓存证书等服务端信息,避免 再次握手时重复传输数据 • ECDHE-keyshare扩展 多硬件卡Engine • Mobile,iot设备等多终端支持 • OpenSSL Committer无线移动战役 操作响应慢 操作无响应 Push没消息 Push消息慢 海外消息慢 收发图片慢 建连时长 建连成功率 链路稳定性 链路一致性 RPC错误率 Push实时性 海外RTT 数据效率 快 速 稳 定 高 效 移动客户痛点 性能指标 线下支付 大促 国际支付咻一咻与敬业福咻一咻的挑战 统一通道:主长连接 + 短连接 § 统一协议:MTLS+MMTP § 统一调度:MobileDC 最优调度 网络探测 连接建立 传输+保持 通道复用 复合建连 握手优化 短连补偿 智能心跳 数据压缩 质量模型 自动重试 云端补偿 柔性建连 假连淘汰 动态超时 § 终端策略覆盖移动网络难点 § 优化对业务透明 § ROI考虑 好网更快 弱网更好 协议优化 支付宝网络接入层架构示意0 码力 | 46 页 | 19.93 MB | 6 月前3
蚂蚁金服双十一 Service Mesh 超大规模落地揭秘gRPC Pilot/Gallery/Citadel/Mixer App A MOSN App B MOSN HTTP SOFARPC Dubbo RPC WebService 数据面 控制面 社区产品 蚂蚁产品6 二、为什么我们要 Service Mesh 为什么要 Service Mesh为什么要 Service Mesh-现状 5.客户端中间件版本的统一 9% 动态配置客户端 故障注入客户端 Service Mesh 解耦了业务开发与基础团队之前的耦合 应用代码 业务应用开发 基础设施开发 Mesh 化10 三、方案落地 方案落地11 最终选型:自研数据面+轻量 SDK,我们给出的答案是 MOSN。 方案落地-选型 开源/自研:全部迁移到 envoy?不现实,自有协议+历史负担。 SDK/透明劫持:运维和可监控性不好,性能不高,风险不太可控。12 正常运行中19 我们的方案-升级策略-无感升级-MOSN MOSN New MOSN 通知平滑升级 迁移监听套接字 解析Mosn配置 启动控制面服务 通知启动完成 关闭控制面服务 关闭数据面服务 迁移存量长连接 怎么做到的无损?20 四、分时调度案例 分时调度案例21 分时调度-背景 资源域A 资源域B 资源域A 资源域B X时刻 Y时刻 业务诉求 资源限制 分时调度220 码力 | 26 页 | 2.71 MB | 6 月前3
深入 Kubernetes 的无人区-蚂蚁金服双十一的调度系统CNI Device Plugin runc nanovisor 日志服务 云盘 本地多盘 弹性网卡 网络安全组 GPU 安全可信 数据库服务 OB serverless 平台 kata SOFAMesh 资源分时复用 神龙裸金属 VPC 云存储 应用服务器 数据库服务器 国产化服务器7/19 二、双十一 Kubernetes 实践 Part 2:8/19 资源分时调度 Part 2:双十一 • CRD 必须 Namespaced scope,以控制影响范围 • MutatingWebhook + 资源 Update 操作会给运行时环境带来不可控破坏,尽量避免使用这种组合 • 任何 controllers 都应该使用 informers,并且对写操作配置合理限流 • DaemonSet 非常高阶,尽量不要采用这类设计,如果必需请在 Kubernetes 专家的辅导下使用;15/190 码力 | 19 页 | 2.18 MB | 6 月前3
SOFAMOSN持续演进路径及实践分享Ø 持续演进路径 & 技术案例 Ø 实践案例 Ø 规划 & 展望 Ø QA背景 & 概览数据平面概览 SOFAMOSN • C实现,支持多语言扩展 • 基于Nginx扩展 • 开发不活跃 • 老牌代理系统,业界广 泛使用,服务各类场景 • C++实现 • CNCF第三个毕业项目, ISTIO原生数据平面 • 开发活跃,最新版为1.9.0 • Google, Lyft主导,业界 众多公司使用中,重点搭 Service Mesh数据平面 • 开发活跃,最新版为 18.9.1 • Golang实现 • 新生项目,初期旨在搭建 RPC亲和,高度可扩展性 的Golang转发系统 • 开发活跃,最新版为0.4.0 • 蚂蚁+UC主导,重点搭载 SOFAMesh使用,目标服 务通用场景,金融场景SOFAMOSNSOFAMOSN内部模块设计SOFAMOSN数据流SOFAMOSN数据流持续演进路径 & buffer Ø Raw-Epoll模式 Ø 读合并 Ø 协程池化 Ø 调度均衡 Ø SOFARPC深度优化 Ø TLS官方库IO优化 Ø HTTP1.1/HTTP2.0 IO优化 Ø 日志操作异步化&多次合 并 Ø 基于RCU的高性能配置更 新安全 & 可观察性 0.1.0 0.2.0 0.3.0 0.4.0 Ø mTLS支持 Ø 支持inspector探测 Ø TLS扩展支持,支持自定义0 码力 | 29 页 | 7.03 MB | 6 月前3
金融级云原生 PaaS 探索与实践王成昌(晙曦)蚂蚁金服技术专家2/20 一、业务背景 二、多集群管控 三、发布运维体系 目 录 contents 目录3/20 一、业务背景 业务背景4/20 业务背景 业务架构 演进 • 容量 应用|数据库|机房 • 容灾 机房|地域5/20 业务背景 业务架构 单元化 • 高可用 • 一致性 • 可扩展 • 高性能6/20 业务背景 业务诉求 • 运维成本 突发流量应用 跨集群管理 单元化能力 容器镜像管理 批次发布 原生资源管理 Pod伸缩管理 集群伸缩管理 变更管控 配额管理 运维原子操作 精细化调度 接入层流程调拨 应用层流量调拨 跨集群状态 分发/汇聚 数据层流量调拨 压测/灰度 流量管理 单元化 元数据管理 弹性流量管理 跨集群发布策略 多集群管理 跨集群网络 跨集群镜像管理 蓝绿发布 灰度分组发布 中间件变配 (DRM/Scheduler/Message) 联邦核心能力 • 跨集群资源同步 Template,Override,Placement 模型; 状态回流; 扩展 CRD; • 跨集群发现12/20 联邦架构 • 关系型存储; 数据量 容灾 • 基于部署单元分发 多集群管控13/20 三、发布运维体系 发布运维体系14/20 应用管理&交付 • 基于统一管控背景下的 Dockerfile 管理和生成; • 基于组件关联的0 码力 | 20 页 | 1.71 MB | 6 月前3
Service Mesh 在『路口』的产品思考与实践Service Mesh 微服务 互联互通,平滑迁移,灵活演进20/39 Part 3: 蚂蚁金服的产品实践 大规模场景下的服务发现 • Pilot 的问题 • 集群容量无法支撑海量数据 • 全量推送性能差 • 沿用 SOFA Registry • 支持千万级的服务实例信息 • 秒级推送 SOFARegistry:https://github.com/so 28/39 Part 3: 蚂蚁金服的产品实践 虚拟机支持 • 云原生架构下,sidecar 借助于 k8s 的 webhook/operator 机制可以方便地实现注入、升级 等运维操作 • 然而大量系统还没有跑在 k8s 上,所以我们通过 agent 的模式来管理 sidecar 进程,从而可 以使 Service Mesh 能够帮助老架构下的应用完成服务化改造,并支持新架构和老架构下服务 APP Sidecar xDS/UDPA xDS/UDPA MCP Proxy 其他注册中心 MCP 支持 MCP 的注册中心 MCP 1. 整合传统注册中心,支持海量数据 2. 加强控制平面的存储能力 3. 融合传统注册中心的分发能力 Nacos sync 其他注册中心 MCP • 协议标准化 • 能力差异化 36/39Part 3:0 码力 | 40 页 | 15.86 MB | 6 月前3
阿里巴巴超大规模神龙裸金属 Kubernetes 集群运维实践(walle, NPD) + 外部系统 (IDC、aliyun) • SLI、SLO、SLA • 钉钉、邮件、电话报警、ChatOps 自助诊断 • 节点故障自愈 (10) • 决策中心执行修复操作 • 集中统一风控 • 日常1人运维数十万节点 统一风控 监控 决策 自愈神龙运维事件 • 接收事件 (doc) • 响应事件 不带本地盘 SystemFailure.Reboot 带本地盘 SystemFailure.Redeploy 不带本地盘 RebootInstance (doc) 带本地盘 RedeployInstance (doc) 本盘数据不能 迁移运维实践 - 宕机率分析 • 宕机关联度分析 • 宕机趋势 • 机房、单元、分组 • 机型、硬件特征 • 内核版本、hotfix 一致率 • 宕机根因分析诊断 • 硬件故障、运维事件 • vmcore0 码力 | 21 页 | 7.81 MB | 6 月前3
共 31 条
- 1
- 2
- 3
- 4













