 蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘Ø屏蔽IO处理细节 Ø定义网络链接生命周期,事件机制 Ø定义可编程的网络模型,核心方法,监控指标 Ø定义可扩展的插件机制PROTOCOL 5 Ø定义编解码核心数据结构 üMesh处理三段式:Headers + Data + Trailers Ø定义协议Codec核心接口 ü编码:对请求数据进行编码并根据控制指令发送数据 ü解码:对IO数据进行解码并通过扩展机制通知订阅方 •定义扩展机制通知解码事件STREAMING •定义扩展机制通知解码事件STREAMING 6 Ø定义Stream模型 ü 向上确保协议行为一致性 ü 为网络协议请求/响应提供可编程的抽象载体 ü 考虑PING-PONG,PIPELINE,分帧STREAM三种典型流程特征 Ø定义Stream生命周期,核心事件 Ø定义Stream层编/解码核心接口 ü 核心数据结构复用Protocol层 Ø定义可扩展的插件机制 Ø对于满足请求Stream池化的需求 Ø需处理上层传入的状态事件PROXY bytes stream stream bytes Network Network Protocol Stream Proxy Proxy Protocol Stream Network Network线程模型 0.1.0 9 Client Listener Read / Codec Read / Codec Read / Codec accept Stream Event Handler Pool0 码力 | 44 页 | 4.51 MB | 6 月前3 蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘Ø屏蔽IO处理细节 Ø定义网络链接生命周期,事件机制 Ø定义可编程的网络模型,核心方法,监控指标 Ø定义可扩展的插件机制PROTOCOL 5 Ø定义编解码核心数据结构 üMesh处理三段式:Headers + Data + Trailers Ø定义协议Codec核心接口 ü编码:对请求数据进行编码并根据控制指令发送数据 ü解码:对IO数据进行解码并通过扩展机制通知订阅方 •定义扩展机制通知解码事件STREAMING •定义扩展机制通知解码事件STREAMING 6 Ø定义Stream模型 ü 向上确保协议行为一致性 ü 为网络协议请求/响应提供可编程的抽象载体 ü 考虑PING-PONG,PIPELINE,分帧STREAM三种典型流程特征 Ø定义Stream生命周期,核心事件 Ø定义Stream层编/解码核心接口 ü 核心数据结构复用Protocol层 Ø定义可扩展的插件机制 Ø对于满足请求Stream池化的需求 Ø需处理上层传入的状态事件PROXY bytes stream stream bytes Network Network Protocol Stream Proxy Proxy Protocol Stream Network Network线程模型 0.1.0 9 Client Listener Read / Codec Read / Codec Read / Codec accept Stream Event Handler Pool0 码力 | 44 页 | 4.51 MB | 6 月前3
 Service Mesh结合容器云平台的思考和实践…云平台微服务演进之Service Mesh云平台微服务演进之Service Mesh Pilot Envoy • 服务发现 • Envoy生命周期管理 • Envoy配置下发 • 服务模型 • 配置模型 • 负载均衡 • 智能路由(灰度、蓝绿) • 流量管理(超时、重试、熔断) • 故障处理 • 故障注入 • … Mixer • 前提条件检查:安全认证,黑白名单, ACL检查 ent的部署形式 pilot-agent在pilot/cmd包下面,是个单独 的二进制。 pilot-agent跟envoy打包在同一个docker镜 像里,镜像由Dockerfile.proxy定义, Makefile(include了tools/istio- docker.mk)把这个dockerfile build成了 ${HUB}/proxy:${TAG}镜像,也就是 Kubernetes里跟应用放在同一个pod下的 pilot-agent的role类型为model包下的Proxy,决定了pilot-agent的“角色”,role包括以下属性: 1.Type pilot-agent有三种运行模式。根据role.Type变量定义,类型为model.Proxy,定义在context.go文件中,允许的3个取值范围为: i. "sidecar" 默认值,可以在启动pilot-agent,调用proxy命令时覆盖。Sidecar type is used0 码力 | 28 页 | 3.09 MB | 6 月前3 Service Mesh结合容器云平台的思考和实践…云平台微服务演进之Service Mesh云平台微服务演进之Service Mesh Pilot Envoy • 服务发现 • Envoy生命周期管理 • Envoy配置下发 • 服务模型 • 配置模型 • 负载均衡 • 智能路由(灰度、蓝绿) • 流量管理(超时、重试、熔断) • 故障处理 • 故障注入 • … Mixer • 前提条件检查:安全认证,黑白名单, ACL检查 ent的部署形式 pilot-agent在pilot/cmd包下面,是个单独 的二进制。 pilot-agent跟envoy打包在同一个docker镜 像里,镜像由Dockerfile.proxy定义, Makefile(include了tools/istio- docker.mk)把这个dockerfile build成了 ${HUB}/proxy:${TAG}镜像,也就是 Kubernetes里跟应用放在同一个pod下的 pilot-agent的role类型为model包下的Proxy,决定了pilot-agent的“角色”,role包括以下属性: 1.Type pilot-agent有三种运行模式。根据role.Type变量定义,类型为model.Proxy,定义在context.go文件中,允许的3个取值范围为: i. "sidecar" 默认值,可以在启动pilot-agent,调用proxy命令时覆盖。Sidecar type is used0 码力 | 28 页 | 3.09 MB | 6 月前3
 SOFAMesh的通用协议扩展服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型 INBOUND OUTBOUNDSOFA 服务注册模型落地一个微服务框架需要的工作 • 部署 ZK 集群作为 RPC 框架的注册中心 • 开发 ZK Platform Adapter for DUBBO • 开发 DUBBO 协议支持(开箱即用模式下也可以省掉)DNS 寻址目标 • 允许应用把接口当做域名来访问远端服务 • 支持在 Kubernetes DNS 之上构建更结构化的域名体系 • 支持跨集群的服务寻址 • 支持单应用多服务的部署模型 bolt://com.yourcompany.youservice:12220POD 落地形态 Services, PODS & DNS CORE DNS com.svc.user -> 172 Service Endpoints Watch ADS Config Renew DNS Create Service Create RPC ServiceCRD 定义 RPC Service 对应一个微服务,对应 RPC 框架中的接口定义 一个应用可能包含多个 RPC Service RPC Service 关联到一个 Kubernetes 服务 RPC Service 的域名就是其接口X-PROTOCOL0 码力 | 28 页 | 4.73 MB | 6 月前3 SOFAMesh的通用协议扩展服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型 INBOUND OUTBOUNDSOFA 服务注册模型落地一个微服务框架需要的工作 • 部署 ZK 集群作为 RPC 框架的注册中心 • 开发 ZK Platform Adapter for DUBBO • 开发 DUBBO 协议支持(开箱即用模式下也可以省掉)DNS 寻址目标 • 允许应用把接口当做域名来访问远端服务 • 支持在 Kubernetes DNS 之上构建更结构化的域名体系 • 支持跨集群的服务寻址 • 支持单应用多服务的部署模型 bolt://com.yourcompany.youservice:12220POD 落地形态 Services, PODS & DNS CORE DNS com.svc.user -> 172 Service Endpoints Watch ADS Config Renew DNS Create Service Create RPC ServiceCRD 定义 RPC Service 对应一个微服务,对应 RPC 框架中的接口定义 一个应用可能包含多个 RPC Service RPC Service 关联到一个 Kubernetes 服务 RPC Service 的域名就是其接口X-PROTOCOL0 码力 | 28 页 | 4.73 MB | 6 月前3
 Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?1:ServiceMesh灵魂拷问一:要架构还是要性能? Mixer v1 架构的优点 • 集中式服务: • 提高基础设施后端的可用性 • 为前提条件检查结果提供集群级别的全局2级缓存 • 灵活的适配器模型,使其以下操作变得简 单: • 运维添加、使用和删除适配器 • 开发人员创建新的适配器(超过20个适配器)Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Mixer v1 保持Proxy代码简单 • 保持Proxy代码简单 • 数据平面可替换原则 • 集中式服务: • 提高基础设施后端的可用性 • 为前提条件检查结果提供集群级别的全局2级缓存 • 灵活的适配器模型,使其以下操作变得简 单: • 运维添加、使用和删除适配器 • 开发人员创建新的适配器(超过20个适配器)合并没问题,如何合并才是问题 Part 2:ServiceMesh灵魂拷问二:性能有 https://github.com/envoyproxy/envoy-wasm +Web Assembly介绍 Part 2:ServiceMesh灵魂拷问二:性能有了,架构怎么办? Mozilla官方定义: WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有 紧凑的二进制格式,可以接近原生的性能运行,并为诸如C / C ++等语言提供一个编译目标,以便它们可以0 码力 | 43 页 | 2.90 MB | 6 月前3 Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?1:ServiceMesh灵魂拷问一:要架构还是要性能? Mixer v1 架构的优点 • 集中式服务: • 提高基础设施后端的可用性 • 为前提条件检查结果提供集群级别的全局2级缓存 • 灵活的适配器模型,使其以下操作变得简 单: • 运维添加、使用和删除适配器 • 开发人员创建新的适配器(超过20个适配器)Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Mixer v1 保持Proxy代码简单 • 保持Proxy代码简单 • 数据平面可替换原则 • 集中式服务: • 提高基础设施后端的可用性 • 为前提条件检查结果提供集群级别的全局2级缓存 • 灵活的适配器模型,使其以下操作变得简 单: • 运维添加、使用和删除适配器 • 开发人员创建新的适配器(超过20个适配器)合并没问题,如何合并才是问题 Part 2:ServiceMesh灵魂拷问二:性能有 https://github.com/envoyproxy/envoy-wasm +Web Assembly介绍 Part 2:ServiceMesh灵魂拷问二:性能有了,架构怎么办? Mozilla官方定义: WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有 紧凑的二进制格式,可以接近原生的性能运行,并为诸如C / C ++等语言提供一个编译目标,以便它们可以0 码力 | 43 页 | 2.90 MB | 6 月前3
 SOFAMOSN持续演进路径及实践分享日志操作异步化&多次合 并 Ø 基于RCU的高性能配置更 新安全 & 可观察性 0.1.0 0.2.0 0.3.0 0.4.0 Ø mTLS支持 Ø 支持inspector探测 Ø TLS扩展支持,支持自定义 证书获取 Ø RBAC Ø Tracing框架,已支持 SOFA Tracer Ø Metrics扩展,已支持 prometheus Ø 支持Mixer filter Ø 平滑升级迁移支持metrics core) 8100 122ms 70M 393% New http2(4 core) 17200 57ms 40M 395%技术案例 – 长连接网关RawEpoll模式 经典Golang netpoll模型 ² 问题:协程数量与链接数量成正比,大 量链接场景下,协程数量过多 u Stack内存开销 u Read buffer开销 u Runtime调度开销 参考阅读:million-websockets-and-go Service p Client模拟方式:通过蚂蚁内部压测平台建立10w条SOFARPC链接 p 压测内容: 1K 请求/响应持续演进实践总结 ü 架构上,从一开始就遵循分层设计,模块解耦,统一编程模型接口,保证足够的架 构扩展性。 ü 性能上,针对IO、协议、内存、协程进行持续优化。相比最初版本,SOFARPC 协 议上对 0.1.0 版本 QPS 提升了 50%,内存使用减少了 40%;HTTP/20 码力 | 29 页 | 7.03 MB | 6 月前3 SOFAMOSN持续演进路径及实践分享日志操作异步化&多次合 并 Ø 基于RCU的高性能配置更 新安全 & 可观察性 0.1.0 0.2.0 0.3.0 0.4.0 Ø mTLS支持 Ø 支持inspector探测 Ø TLS扩展支持,支持自定义 证书获取 Ø RBAC Ø Tracing框架,已支持 SOFA Tracer Ø Metrics扩展,已支持 prometheus Ø 支持Mixer filter Ø 平滑升级迁移支持metrics core) 8100 122ms 70M 393% New http2(4 core) 17200 57ms 40M 395%技术案例 – 长连接网关RawEpoll模式 经典Golang netpoll模型 ² 问题:协程数量与链接数量成正比,大 量链接场景下,协程数量过多 u Stack内存开销 u Read buffer开销 u Runtime调度开销 参考阅读:million-websockets-and-go Service p Client模拟方式:通过蚂蚁内部压测平台建立10w条SOFARPC链接 p 压测内容: 1K 请求/响应持续演进实践总结 ü 架构上,从一开始就遵循分层设计,模块解耦,统一编程模型接口,保证足够的架 构扩展性。 ü 性能上,针对IO、协议、内存、协程进行持续优化。相比最初版本,SOFARPC 协 议上对 0.1.0 版本 QPS 提升了 50%,内存使用减少了 40%;HTTP/20 码力 | 29 页 | 7.03 MB | 6 月前3
 蚂蚁金服网络代理演进之路轻量级TLS库,小于50k;2) 优化的TLS协议 0-RTT • 减少握手延迟 • 代价:握手前发送的数据不能 保证防重放攻击,因此要求应 用程序自己保证防重放攻击 Small Ticket • 自定义Session Ticket编码格式 • 160 byte -> 76 byte • Session Ticket扩展 用于会话复用,加速握手过程 • Cached-info扩展 缓存证书等服务端信息,避免 短连接 § 统一协议:MTLS+MMTP § 统一调度:MobileDC 最优调度 网络探测 连接建立 传输+保持 通道复用 复合建连 握手优化 短连补偿 智能心跳 数据压缩 质量模型 自动重试 云端补偿 柔性建连 假连淘汰 动态超时 § 终端策略覆盖移动网络难点 § 优化对业务透明 § ROI考虑 好网更快 弱网更好 协议优化 支付宝网络接入层架构示意 § SOFAMosn是一个云原生安全网络代理 为什么自研golang版本? 跨团队合作需要考虑技术栈落地成本 Golang性能,成本符合蚂蚁实际需求 近十年的网络代理研发,运维经验SOFAMosn模块与能力划分SOFAMosn协程模型 ü 一条TCP连接对应一个Read协程,执行收包,协议解析 ü 一个请求对应一个worker协程,执行业务处理,proxy和Write逻辑SOFAMosn能力扩展 ü 协议扩展 MOSN0 码力 | 46 页 | 19.93 MB | 6 月前3 蚂蚁金服网络代理演进之路轻量级TLS库,小于50k;2) 优化的TLS协议 0-RTT • 减少握手延迟 • 代价:握手前发送的数据不能 保证防重放攻击,因此要求应 用程序自己保证防重放攻击 Small Ticket • 自定义Session Ticket编码格式 • 160 byte -> 76 byte • Session Ticket扩展 用于会话复用,加速握手过程 • Cached-info扩展 缓存证书等服务端信息,避免 短连接 § 统一协议:MTLS+MMTP § 统一调度:MobileDC 最优调度 网络探测 连接建立 传输+保持 通道复用 复合建连 握手优化 短连补偿 智能心跳 数据压缩 质量模型 自动重试 云端补偿 柔性建连 假连淘汰 动态超时 § 终端策略覆盖移动网络难点 § 优化对业务透明 § ROI考虑 好网更快 弱网更好 协议优化 支付宝网络接入层架构示意 § SOFAMosn是一个云原生安全网络代理 为什么自研golang版本? 跨团队合作需要考虑技术栈落地成本 Golang性能,成本符合蚂蚁实际需求 近十年的网络代理研发,运维经验SOFAMosn模块与能力划分SOFAMosn协程模型 ü 一条TCP连接对应一个Read协程,执行收包,协议解析 ü 一个请求对应一个worker协程,执行业务处理,proxy和Write逻辑SOFAMosn能力扩展 ü 协议扩展 MOSN0 码力 | 46 页 | 19.93 MB | 6 月前3
 阿里云容器服务大促备战45%最佳实践之容器化DevOps 杭州 容器集群 集群 伦敦 Serverless集群 自动安全扫描 镜像签名 全球自动分发 智能构建 上海 边缘集群 ECS ECI 应用定义 ACR 镜像服务 镜像快照两个数字背后的故事 19分23秒 36%观测与预测全链路监控+高性能如何应对 … 流量增长 3倍嗯,还有用户体验 https://marketersmedia Elasti c Search Tensor Flow Spark Flink Redis Zoo keeper云原生实时计算与人工智能@微博 2.4倍性能提升 百亿实时样本 万亿维度模型云原生基础设施 新生态 新算力 新基石 全球化部署 单集群万节点规模 云边端一体化 延时降低75% 混合云2.0架构 交付效率提升3倍 全链路安全架构 实时风险监测、告警、阻断0 码力 | 17 页 | 17.74 MB | 6 月前3 阿里云容器服务大促备战45%最佳实践之容器化DevOps 杭州 容器集群 集群 伦敦 Serverless集群 自动安全扫描 镜像签名 全球自动分发 智能构建 上海 边缘集群 ECS ECI 应用定义 ACR 镜像服务 镜像快照两个数字背后的故事 19分23秒 36%观测与预测全链路监控+高性能如何应对 … 流量增长 3倍嗯,还有用户体验 https://marketersmedia Elasti c Search Tensor Flow Spark Flink Redis Zoo keeper云原生实时计算与人工智能@微博 2.4倍性能提升 百亿实时样本 万亿维度模型云原生基础设施 新生态 新算力 新基石 全球化部署 单集群万节点规模 云边端一体化 延时降低75% 混合云2.0架构 交付效率提升3倍 全链路安全架构 实时风险监测、告警、阻断0 码力 | 17 页 | 17.74 MB | 6 月前3
 金融级云原生 PaaS 探索与实践体量(单集群内节点数 1w+,Pod 10w+),集群数量多; 多集群管控11/20 多集群管控 联邦核心能力 • 跨集群资源同步  Template,Override,Placement 模型;  状态回流;  扩展 CRD; • 跨集群发现12/20 联邦架构 • 关系型存储;  数据量  容灾 • 基于部署单元分发 多集群管控13/20 三、发布运维体系 发布运维体系14/20 1st Group 2nd Group InPlaceSet A CafeDeployment partition:1 …… Pod Upgrade 机房A – 单元A • 精准分组,自定义拓扑 • IP不变,无损升级 • 可适配多种工作负载 • InPlaceSet • ReplicaSet • StatefulSet 可灰度: • 应用发布进程可控,允许灰度、 分组和 Beta0 码力 | 20 页 | 1.71 MB | 6 月前3 金融级云原生 PaaS 探索与实践体量(单集群内节点数 1w+,Pod 10w+),集群数量多; 多集群管控11/20 多集群管控 联邦核心能力 • 跨集群资源同步  Template,Override,Placement 模型;  状态回流;  扩展 CRD; • 跨集群发现12/20 联邦架构 • 关系型存储;  数据量  容灾 • 基于部署单元分发 多集群管控13/20 三、发布运维体系 发布运维体系14/20 1st Group 2nd Group InPlaceSet A CafeDeployment partition:1 …… Pod Upgrade 机房A – 单元A • 精准分组,自定义拓扑 • IP不变,无损升级 • 可适配多种工作负载 • InPlaceSet • ReplicaSet • StatefulSet 可灰度: • 应用发布进程可控,允许灰度、 分组和 Beta0 码力 | 20 页 | 1.71 MB | 6 月前3
 蚂蚁金服Service Mesh渐进式迁移方案所有编程语言/平台都支持的 ü 产品的长期方向 • SOFAMesh和SOFAMosn中已经基于x-protocol实现了DNS通用寻址方式 • 为了兼容RPC应用和k8s(微服务)的服务注册模型,需要为每个RPC接口提供DNS支持 • 未来Serverless中的Function也计划提供DNS寻址支持 • 可能会有更广泛的使用场景 ü 演进思路 • 简化原有SDK (短期需求)0 码力 | 40 页 | 11.13 MB | 6 月前3 蚂蚁金服Service Mesh渐进式迁移方案所有编程语言/平台都支持的 ü 产品的长期方向 • SOFAMesh和SOFAMosn中已经基于x-protocol实现了DNS通用寻址方式 • 为了兼容RPC应用和k8s(微服务)的服务注册模型,需要为每个RPC接口提供DNS支持 • 未来Serverless中的Function也计划提供DNS寻址支持 • 可能会有更广泛的使用场景 ü 演进思路 • 简化原有SDK (短期需求)0 码力 | 40 页 | 11.13 MB | 6 月前3
 蚂蚁金服 API Gateway Mesh 思考与实践靳文祥(花名:贾岛) 蚂蚁金服 高级技术专家1/21 /01 /02 /03 API Gateway Mesh 的定义 蚂蚁金服 API Gateway Mesh 实践 云原生 API Gateway 的思考2/21 API Gateway Mesh 的定义 /013/21 LB\Ingress API Gateway Sidecar App POD Sidecar App0 码力 | 22 页 | 1.72 MB | 6 月前3 蚂蚁金服 API Gateway Mesh 思考与实践靳文祥(花名:贾岛) 蚂蚁金服 高级技术专家1/21 /01 /02 /03 API Gateway Mesh 的定义 蚂蚁金服 API Gateway Mesh 实践 云原生 API Gateway 的思考2/21 API Gateway Mesh 的定义 /013/21 LB\Ingress API Gateway Sidecar App POD Sidecar App0 码力 | 22 页 | 1.72 MB | 6 月前3
共 19 条
- 1
- 2













