蚂蚁金服网络代理演进之路
Linkerd网络的挑战网络的挑战 高效接入 访问加速 容量 稳定性 高可用 灵活弹性 安全合规 防攻击蚂蚁金服网络接入十年变迁 2010年前部署商用设备 前世 01 2010 开始网络代理白盒 化,定制业务逻辑,软 硬件一体解决方案 自研 02 2015 年无线通道协议,安 全升级, 连接收编 All in 无线 03 PC时代 移动时代 万物互联云原生时代 2018 年协议,安全持续升 短连接 § 统一协议:MTLS+MMTP § 统一调度:MobileDC 最优调度 网络探测 连接建立 传输+保持 通道复用 复合建连 握手优化 短连补偿 智能心跳 数据压缩 质量模型 自动重试 云端补偿 柔性建连 假连淘汰 动态超时 § 终端策略覆盖移动网络难点 § 优化对业务透明 § ROI考虑 好网更快 弱网更好 协议优化 支付宝网络接入层架构示意 § Service 业务逻辑 SDK 协议编解码 服务发现 负载均衡 熔断限流 服务路由 …… Service 业务逻辑 轻量级SDK 协议编解码 Sidecar (MOSN) 服务发现 负载均衡 熔断限流 服务路由 …… 将SDK客户端 的功能剥离 Sidecar专注服务间通讯 混合在一个进程内, 应用既有业务逻辑, 也有各种功能 业务进程专注于业务逻辑Service0 码力 | 46 页 | 19.93 MB | 5 月前3Service Mesh 在『路口』的产品思考与实践
微服务治理与业务逻辑解耦 Part 1: 为什么需要Service Mesh? Service 业务逻辑 SDK 协议编解码 服务发现 负载均衡 熔断限流 服务路由 …… 混合在一个进程内, 应用既有业务逻辑, 也有各种功能, 每次升级都要重新发布应用 升级成本高 版本碎片化严重 中间件演进困难6/39 微服务治理与业务逻辑解耦 Part Service 业务逻辑 SDK 协议编解码 服务发现 负载均衡 熔断限流 服务路由 …… Service 业务逻辑 轻量级 SDK 协议编解码 Sidecar (MOSN) + 服务发现 负载均衡 熔断限流 服务路由 …… - 专注业务实现 - 无需感知Mesh - 专注服务间通讯和相 关能力 - 与业务逻辑无关 将SDK客户端 将SDK客户端 的功能剥离 混合在一个进程内, 应用既有业务逻辑, 也有各种功能, 每次升级都要重新发布应用 业务进程专注于业务逻辑 SDK 中的大部分功能, 拆解为独立进程, 以 Sidecar 的模式运行 将服务治理能力下沉到基础设施,实现独立演进,透明升级7/39 异构系统统一治理 Part 1: 为什么需要Service Mesh? 多语言、多协议0 码力 | 40 页 | 15.86 MB | 5 月前3Service Mesh 在蚂蚁金服生产级安全实践
背景介绍 通过应用Pod 中增加一个安全 Sidecar,以API接口的形式为APP及其他Sidecar 提供基础的身 份颁发、身份验证功能 解耦应用的业务逻辑与认证授权逻辑,减少开发量; 提供密码学安全的认证授权逻辑,提高安全性; 全网统一的认证授权方式,去凭证,减少攻击面; 为每个应用建立唯一的全局应用身份标识,提供服务调用全链路溯源能力,及可问责能 力(account 部分中获取 SPIFFE ID。 将 SPIFFE ID 内容解释为几个关键属性 (例如租户 ID、应用名等),并返回给应用 B。 应用 B 根据安全Sidecar返回的可信属性,进行权限校验逻辑。使用可信身份服务构建敏感数据下发通道使用可信身份服务构建敏感数据下发通道 密钥更新通道 安全Sidecar 的认证能力中依赖密钥等敏感信 息,在参考社区SDS方案的基础上,实现敏感 信息的管理及安全下发通道。0 码力 | 19 页 | 808.60 KB | 5 月前3蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘
Ø定义可编程的网络模型,核心方法,监控指标 Ø定义可扩展的插件机制PROTOCOL 5 Ø定义编解码核心数据结构 üMesh处理三段式:Headers + Data + Trailers Ø定义协议Codec核心接口 ü编码:对请求数据进行编码并根据控制指令发送数据 ü解码:对IO数据进行解码并通过扩展机制通知订阅方 •定义扩展机制通知解码事件STREAMING 6 Ø定义Stream模型 ü 向上确保协议行为一致性 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 Pool send write worker worker Read / Codec Read / Codec Read / Codec Write Write Write write send线程模型 0.2.0 9 Client Listene r Read / Codec Read / Codec Read accept Stream Event Handler Pool Server0 码力 | 44 页 | 4.51 MB | 5 月前3微博Service Mesh实践
Meetup · BeiJing 趋势 �6 微博Service Mesh实践 - WeiboMesh 微服务 1 容器器化 2 DevOps 3 云原⽣生 4 服务治理理与业务逻辑解耦,可持续交付跨语⾔言服务化⾯面临的问题 • 改造成本 • 服务治理理Service Mesh Meetup · BeiJing 改造成本 �8 微博Service Mesh实践 - WeiboMesh WeiboMesh • 服务交互 • 服务发现 • 服务路路由 • 服务治理理 • 跨语⾔言序列列化 • 批量量请求 • 资源服务化 • 兜底逻辑 Mesh Light Client SM 功能 功能 强化 Go 并发 适配 不不同 语⾔言Service Mesh Meetup · BeiJing Weibo Mesh 数据⾯面 Mesh的收益 �34 微博Service Mesh实践 - WeiboMesh 1-跨语⾔言服务化 3-可靠的Transport 5-Http、Web⾃自动转RPC 2-服务治理理与业务逻辑解耦 6-适合⾮非云,混合云等,适配Registry⽀支持云原⽣生 4-节省资源Service Mesh Meetup · BeiJing Weibo Mesh在业务应⽤用中的效果 �35 微博Service0 码力 | 43 页 | 1007.85 KB | 5 月前3Service Mesh 微服务架构设计
低耦合的服务设计方法论:DDD战略建模4步搞定微服务的划分保持代码高内聚的方法论:DDD战术建模Service Mesh将会是微服务设计的更好方式Service Mesh的核心价值 实现 业务逻辑 和 非业务逻辑 的分离 Ø 为下沉到基础设施提供可能 Ø 帮助应用轻量化,专注业务 Ø 实现应用的云原生化1 漫谈服务架构的演进史 2 微服务架构设计的现状 3 Service Mesh微服务设计0 码力 | 36 页 | 26.53 MB | 5 月前3严选 ServiceMesh 实践
相关配置下发功能版本后,Envoy 在一定压力访问或 有客户端主动断开请求时,会进入一段存在问题的断言(assert)逻辑,导致 envoy crash, 此时请求方体现为 502 异常 • 社区目前给出的优化建议是在 envoy 编译选项使用 -opt(默认为 -dbg) • 社区已在新版本清理这段问题断言逻辑:https://github.com/envoyproxy/envoy/issues/9083 •0 码力 | 25 页 | 2.07 MB | 5 月前3SOFAMesh的通用协议扩展
服务使用的接口,方法,参数语义无法匹配 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 -> 1720 码力 | 28 页 | 4.73 MB | 5 月前3SOFAMOSN持续演进路径及实践分享
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 | 5 月前3Service Mesh结合容器云平台的思考和实践
…云平台微服务演进之Service Mesh云平台微服务演进之Service Mesh Pilot Envoy • 服务发现 • Envoy生命周期管理 • Envoy配置下发 • 服务模型 • 配置模型 • 负载均衡 • 智能路由(灰度、蓝绿) • 流量管理(超时、重试、熔断) • 故障处理 • 故障注入 • … Mixer • 前提条件检查:安全认证,黑白名单, ACL检查0 码力 | 28 页 | 3.09 MB | 5 月前3
共 18 条
- 1
- 2