网易云Service Mesh的产品架构与实现
由于业务多,每一次扩容需要增加的配置比较杂。一些不起眼的小业务虽然不是扩容的主要目 的,也需要慎重考虑 容灾降级:核心业务与非核心业务耦合,在关键时候互相影响 微服务拆分微服务架构要点 微服务架构 要点 服务发 现 负载均 衡 集群容 错 高可用 配置管 理 调度和 部署 伸缩性 集中化 日志 集中式 监控 分布式 追踪163yun.comwww.163yun.com Dubbo产生背景www0 码力 | 35 页 | 6.33 MB | 5 月前3严选 ServiceMesh 实践
作为服务发现组件 • 数据面:cNginx • 控制面:Consul 管理后台5/24 服务治理能力 – 基于严选第一代ServiceMesh(cNginx) 类型 功能 能力提供方 服务调用方(Client) 服务提供方(Server) 服务注册与发现 注册发现:基于 Consul √ 调用控制 协议支持:HTTP 1.X/2.X,可扩展至 TCP √ 路由控制:提供简单的路由能力 √ 数据面:Envoy • 控制面:Pilot,Mixer,Citadel,Galley10/24 功能视角 - 服务治理能力 – 基于Istio+Envoy 类型 功能 能力提供方 服务调用方(Client) 服务提供方(Server) 服务注册与发现 注册发现:云外基于 Consul,云内基于 K8s 默认的 ETCD √ 调用控制 协议支持:HTTP 1.X/2.X,GRPC,WebSocket,Dubbo, 升级到加入 accesslog 相关配置下发功能版本后,Envoy 在一定压力访问或 有客户端主动断开请求时,会进入一段存在问题的断言(assert)逻辑,导致 envoy crash, 此时请求方体现为 502 异常 • 社区目前给出的优化建议是在 envoy 编译选项使用 -opt(默认为 -dbg) • 社区已在新版本清理这段问题断言逻辑:https://github.com/envo0 码力 | 25 页 | 2.07 MB | 5 月前3Service Mesh的延伸 — 论道Database Mesh
Mesh风头正劲Service Mesh产品多样化Service Mesh的优势 云原生 零入侵 可观察性 面向运维服务化之后,数据库怎么办? 服务 • 无状态 • 根据规则路由 • 业务方处理事务 数据库 • 有状态 • 根据SQL路由 • 数据库自动处理事务数据库的进化趋势 • SQL • ACID • 分布式 RDBMS • SQL • BASE ACID • 最终一致 最终一致 最终一致 隔离性 原生支持 不支持 不支持 Try接口支持 并发性能 严重衰退 无影响 无影响 略微衰退 适合场景 短事务 并发较低 事务最终成功 高并发 长事务 应用方控制并发 高并发 长事务 高并发分布式事务:柔性事务自动化 快照记录 • INSERT • 解析 • 记录 • UPDATE&DELETE • SELECT • 记录 SQL逆向0 码力 | 35 页 | 4.56 MB | 5 月前3Service Mesh 在『路口』的产品思考与实践
管控性和可观测性不好23/39 Part 3: 蚂蚁金服的产品实践 平滑迁移 初始状态24/39 Part 3: 蚂蚁金服的产品实践 平滑迁移 透明迁移调用方25/39 Part 3: 蚂蚁金服的产品实践 平滑迁移 透明迁移服务方26/39 Part 3: 蚂蚁金服的产品实践 平滑迁移 终态27/39 Part 3: 蚂蚁金服的产品实践 多协议支持 • 除了支持0 码力 | 40 页 | 15.86 MB | 5 月前3Service Mesh的实践分享
客户端容器监听文件,根据地 址文件找Proxy • 切换地址到remote proxy,轻 易实现优雅退出和滚动升级 • 增强隔离性 • Local Proxy被pod共享 • 自保护,对来源方限流和流量 转移 • 资源适配 • 根据宿主机的硬件配置定制不 同资源配置的Daemonset Local Proxy Pod 写入地址 监听变化 宿主机 Proxy address 务代码埋点 vs. Mixer • 性能考虑 • 调用链埋点的影响必须足够小 • 鉴权需要同步进行,调用Mixer代 价大 • Mixer的中央节点问题 • 传统基于日志收集的tracing方 案足够成熟 • 内部实现一套可插拔的鉴权框 架也能接受混合部署 vs. 绑定K8s • 历史原因导致长期都会物理机 和容器并存,内部需求必须要 同时支持物理机和云 • 绑定K8s能够享受K8s的红利,0 码力 | 30 页 | 4.80 MB | 5 月前3Service Mesh 在蚂蚁金服生产级安全实践
的灰度能力不能满足 蚂蚁金服生产落地的要求,需要具备单机灰度、回滚能力。 借鉴社区 SourceLabel 和 Sidecar CRD 的设计思路,创造性提出具备“正交”组合能力的ScopeConfig 方 案 ScopeConfig 方案是通过label selector 能力选择指定范围内(批量 or 单实例)的Pod 实例,同时关 联社区现有CRD,从而实现保留在兼容社区CRD设计方面的灵活性,又能实现任意CRD的更细粒度控0 码力 | 19 页 | 808.60 KB | 5 月前3SOFAMOSN持续演进路径及实践分享
署,LDC/弹性架构 ü 蚂蚁内部划分R/G/C三种 zone类型,每个Zone的能 力不保证对等 ü 适用于单次简单路由无法解 决的复杂架构场景(如非对 等路由,不确定当前zone 是否有该服务的提供方) Service A MOSN 深圳机房 上海机房 Service B MOSN Service B MOSN 1. A服务访问B服务,首 先请求同一个POD中的 sidecar MSON0 码力 | 29 页 | 7.03 MB | 5 月前3蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘
üMesh处理三段式:Headers + Data + Trailers Ø定义协议Codec核心接口 ü编码:对请求数据进行编码并根据控制指令发送数据 ü解码:对IO数据进行解码并通过扩展机制通知订阅方 •定义扩展机制通知解码事件STREAMING 6 Ø定义Stream模型 ü 向上确保协议行为一致性 ü 为网络协议请求/响应提供可编程的抽象载体 ü 考虑PING-PONG,PIPELINE,分帧STREAM三种典型流程特征0 码力 | 44 页 | 4.51 MB | 5 月前3
共 8 条
- 1