大规模微服务架构下的Service Mesh探索之路大规模微服务架构下的 Service Mesh探索之路 敖小剑6月初在深圳举行的GIAC全球互联网架构大会上,蚂蚁金服第一次对外 透露了开发中的Service Mesh产品——Sofa Mesh。 今天我们将展开更多细节,详细介绍蚂蚁金服Sofa Mesh的技术选型, 架构设计以及开源策略。 前言技术选型 Technical 1ü 性能要求 • 以蚂蚁金服的体量,性能不够好则难于接受 这个产品思路唯一的麻烦在于编程语言的选择国内公司的选择之二:开源方案定制 腾讯:Tencent Service Mesh • 数据平面选择Envoy:成熟产品,符合 腾讯语言体系,内部广泛使用 • 控制平面据传“挣扎了一下”,最终还 是选择Istio,进行定制和扩展,解耦k8s国内公司的选择之三:另辟蹊径 UCloud:Service Mesh • 非常有意思的轻量ServiceMesh实践 • 从Istio中剥离Pilot和Envoy 蚂蚁本身业务上的开放策略,要求技术也要开放,而且要在更丰富的场景下去磨炼 • 在此期间,我们趟坑无数,走了N多弯路,演进了N个版本,我们期望能过通过开源和 开放,让社区跑的更快,节省更多时间 • 我们认为金融领域下的分布式架构设计有独特的原则,作为实践者,我们期望能在标准 化上跟社区一起沉淀和共建,期望做些贡献,有些建树Sofa Mesh的开源态度 ü 开源的时机 • 产品完成甚至使用多年之后 ü 开源的内容0 码力 | 37 页 | 7.99 MB | 6 月前3
严选 ServiceMesh 实践APM 遥感数据:主要依靠中间件 APM APM 访问日志:主要依靠日志平台 日志平台 日志平台6/24 Service Mesh 为严选带来了哪些架构收益 • 历史包袱:现有的服务在不改造的情况下引入了服务治理能力 • 大大降低了中间件的研发投入和演进成本,也降低了业务和中间件的耦合成本 • 基础架构与业务架构可以独立演进 • 为多语言栈提供了服务治理能力7/24 持续演进的诉求 • 13版本中 connection loadbalancer 特性移植到 1.10.x 版本 • Envoy 优化后在低并发(<64)的情况下,容器网络 client sidecar 优于 VM 网络直连 • Envoy 优化后在高并发(>=64)的情况下 • 容器网络 client sidecar 接近 VM 网络直连 • 容器网络 client sidecar 远远优于 VM cNginx(256并发 容器化是微服务的最佳载体 • 容器化是 Service Mesh 高 效落地的基石 部署平台 • Sidecar 注入,业务无感知 • 加速云化 建设服务治理平台 • 无缝衔接 VM 集群和容器集 群的服务治理能力 • 最大化发挥 Service Mesh 的 优势 灰度引流 • 服务间调用灰度引流 • 外域调用灰度引流 • 平滑迁移是 Service Mesh 在混合云架构落地的关键17/240 码力 | 25 页 | 2.07 MB | 6 月前3
阿里巴巴超大规模神龙裸金属 Kubernetes 集群运维实践最大的电商平台之一,并池最佳化资源利用率 • 大规模混部、优先级差异化提升资源使用效率 • Alibaba Serverless Infrastructure (ASI) 的基石上云效率提升 物理机 (云下) 神龙裸金属 (云上) 交付周期 周 分钟级 弹性扩缩容 - 支持 性能 独占 独占 (优于普通ECS) 硬件故障率 硬盘1年故障率 2% 0.8%% (无本地盘) 硬件维修周期 [周, 月] 单机监控 ASI 平台 kubelet/Pouch CI/CD k8s extended Service Mesh 安全容器 运维管控 在离线混部 额度管控 监控体系 多租隔离 上层业务 集 团 业 务运维挑战 • 规模大 • 集群规模大 (数十个集群),节点数量多 (数十万节点) • 业务线多、应用数量多、应用类型复杂 (有状态、无状态、多语言) • 基础环境复杂 • 大规模 在线、离线0 码力 | 21 页 | 7.81 MB | 6 月前3
Service Mesh 在『路口』的产品思考与实践之后开始内部小范围试点 小规模落地 03 2019年上半年,作为蚂蚁金融级 云原生架构升级的主要内容之一, 逐渐铺开到蚂蚁主站的业务应用, 并平稳支撑了618大促 规模落地 04 2019年下半年,在蚂蚁主站的大促核心应用中全面铺 开,落地规模非常庞大,而且最终如『丝般顺滑』地 支撑了双十一大促。 数百个 数十万 应用 容器 <0.2ms 数千万 平均RT 峰值QPS 安全加固 基于 SDK 的传统微服务 基于 Sidecar 的 Service Mesh 微服务 互联互通,平滑迁移,灵活演进20/39 Part 3: 蚂蚁金服的产品实践 大规模场景下的服务发现 • Pilot 的问题 • 集群容量无法支撑海量数据 • 全量推送性能差 • 沿用 SOFA Registry • 支持千万级的服务实例信息 • 秒级推送 蚂蚁金服的产品实践 虚拟机支持 • 云原生架构下,sidecar 借助于 k8s 的 webhook/operator 机制可以方便地实现注入、升级 等运维操作 • 然而大量系统还没有跑在 k8s 上,所以我们通过 agent 的模式来管理 sidecar 进程,从而可 以使 Service Mesh 能够帮助老架构下的应用完成服务化改造,并支持新架构和老架构下服务 的统一管理。 VM 应用进程0 码力 | 40 页 | 15.86 MB | 6 月前3
Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展Registry优化 • 增加数据缓存,减少无谓的Consul Catalog API调用 • 将Polling改为Watch,大幅降低Consul服务数据变化后的同步时延 优化效果 • 200个服务的规模下,CPU占用率降低了一个数量级 • 服务数据变化同步时延从分钟级降低到秒级 • Consul调用导致的TIME_WAIT Sockets数量减少到个位级产品化增强-Ingress API Gateway business logic ... 提供七层网关能力, 但和服务网格是割裂 的 提供七层网关和网格 能力,但缺少API管 理能力 提供API管理能力, 缺少服务网格能力在DexMesh场景下Mesh和API Gateway的分工与协同 External request MSB API Gateway API Management Ingress Sidecar Service Discovery 3改进:提供了HTTP Inspector,并且可以支持按照协议对filterchain进行 Match 可在一个TCP请求没有对应的TCP服务,并且端口和HTTP服务没有冲突的情况下, TCP请求会被缺省发送到原始目的地。 遗留问题: 端口冲突的情况下,TCP请求将会被丢弃,导致客户端请求失败。 长期演进方案:通过自定义Envoy Filter扩展Service Mesh对应用层协议的处理能力产品化增强:异步通信的流量管理0 码力 | 27 页 | 11.99 MB | 6 月前3
Apache SkyWalking 在 Service Mesh 中的可观察性应用ShardingSphere 和 Apache SkyWalking 核心贡献者, Istio 贡献者。 1/28/01 /02 /03 SkyWalking 简介 遇到的挑战 应用方案 ServiceMesh 场景 下 SkyWalking 面 临的挑战 针对 Mesh 场景方案的演化 SkyWalking 历史和特 点 2/28SkyWalking 简介 /01 SkyWaling 的历史和特点 3/28Micro 抽象概念,用于汇集指标 Service 实例 进程,容器,Pod Instance 端点 URL,RPC,函数 Endpoint 观察维度 9/28遇到的挑战 /02 Service Mesh 场景下 SkyWalking 面临的挑战 ( Istio ) 10/28可观测性 11/28Istio 1.5 架构图 12/28挑战1:技术路线多变 基于 Log 成熟、但性能低 Mixer Service Endpoint 15/28挑战3:维度匹配-Telemetry2 Instance Service Endpoint 16/28应用方案 /03 针对 Mesh 场景下的方案演化 17/28技术路线全覆盖-Mixer 18/28技术路线全覆盖-Mixer 19/28技术路线全覆盖-Mixer 20/28技术路线全覆盖-Envoy AccessLogService0 码力 | 29 页 | 1.38 MB | 6 月前3
Service Mesh 在蚂蚁金服生产级安全实践生产级落地实践 分享内容基于 Secret Discovery Service Sidecar 的证书管理方案 Kubernetes Secret 证书管理流程 在 Kubernetes 场景下,证书是通过 secret 的方式来管理,使用时通过 secret mount 以 Volume 形式挂载。 存在以下三个问题: Secret 管理方式与现有密钥管理系统有冲突,需要密钥管理系统强依赖 生产级落地实践 开关切换 RPC 通信场景下,为保证平滑无损的TLS切换能力,需 要分别控制 Server (Provider) 和 Client (Consumer)端的 TLS 行为 对于Server 端利用Istio 的Policy CRD 实现 Namespace + Service 粒度的开关控制 对于Client 端理想情况下,希望是通过Istio 的 DestinationRule0 码力 | 19 页 | 808.60 KB | 6 月前3
Service Mesh的实践分享remote proxy Sidecar(in Pod) Daemonset 对容器的影响 影响大。Pod中增加sidecar容器,加大整个Pod的资源需 求,对K8s的调度形成压力,特别是在资源紧张的情况下; 而且还容器导致资源浪费(sidecar的使用率问题) 影响小。宿主机预留部分资源启动daemonset 即可 运维难度 难度大。Sidecar故障会影响同一个pod的业务容器,同 生共死 难 Thrift效率低比内置 的HTTP模块慢得多 • 性能消耗比JSON转Thrift还要大 • 最终废弃了PHP Thrift模块,直接使用 自带的c写的http模块 + +Daemonset共享模式下Proxy资源的竞争 • Proxy作为资源的一种,隔离性很重要 • 多个Pod共享一个Proxy • 不同Pod的流量特征差异很大 • 如何保证每个pod都有足够的Proxy资源,防止被某些Pod吃光? • 现状 • 链路上某些节点的配置不合理,很难被预 先发现 • 如整条调用链入口要求的超时是500ms,然而 中间某个服务的超时时间是5s。超时时间的严 重差异容易造成资源浪费(上游超时返回了下 游还继续往下调)和数据不一致风险(上游以 为写失败了下游却写成功了) • 目标 • 实时上下游超时治理 • 通过传递剩余超时时间,让下游可以判断是否 继续一些重量级操作 • 实时上下游限流治理0 码力 | 30 页 | 4.80 MB | 6 月前3
深入 Kubernetes 的无人区-蚂蚁金服双十一的调度系统一、蚂蚁金服的Kubernetes现状 Part 1:4/19 发展历程与落地规模 Part 1:蚂蚁金服的Kubernetes现状 平台研发 灰度验证 云化落地 规模化落地 2018年下半年开始投 入 Kubernetes 及其配 套系统研发 2019年初于生产环境 开始灰度验证,对部分 应用做平台迁移 2019年4月完成云化环境 适配,蚂蚁金服云上基础 设施全部采用 Kubernetes • 任何 controllers 都应该使用 informers,并且对写操作配置合理限流 • DaemonSet 非常高阶,尽量不要采用这类设计,如果必需请在 Kubernetes 专家的辅导下使用;15/19 弹性资源建站 Part 2:双十一 Kubernetes 实践16/19 三、展望未来,迎接挑战 Part 2:17/19 平台与多租户 Part 3:展望未来,迎接挑战0 码力 | 19 页 | 2.18 MB | 6 月前3
金融级云原生 PaaS 探索与实践业务背景 业务架构 单元化 • 高可用 • 一致性 • 可扩展 • 高性能6/20 业务背景 业务诉求 • 运维成本 突发流量应用 | 机房 生命周期 • 运维效率 大规模下基础设施稳定性 • 业务 Mesh 化 精细化流量控制 基础组件升级 • 业务可复制 业务敏捷 SaaS 面向站点级别输出7/20 PaaS 能力 • 面向多租户多环境; 跨集群发现12/20 联邦架构 • 关系型存储; 数据量 容灾 • 基于部署单元分发 多集群管控13/20 三、发布运维体系 发布运维体系14/20 应用管理&交付 • 基于统一管控背景下的 Dockerfile 管理和生成; • 基于组件关联的 FedAppInstance + revision 版本控制; • 快速构建能力 - binary2Image 能力; 发布运维体系15/200 码力 | 20 页 | 1.71 MB | 6 月前3
共 19 条
- 1
- 2













