SOFAMesh的通用协议扩展SOFA MESH 的通用协议扩展 Service Mesh Meetup #3 深圳站 邵俊雄(熊啸) 2018.08.25AGENDA • SOFA MESH 介绍 • SERVICE MESH 落地的问题 • SOFA MESH 的通用落地方案 • DNS 服务寻址方案 • X-PROTOCOL 通用协议 • 问答SOFA MESH • 从 ISTIO 克隆并保持同步更新 • 使用 使用 SOFA-MOSN 代替 ENVOY 作为数据平面 • 打包 • 安装 • 部署 • 测试 • 支持主流的微服务框架 • SOFA • HSF • DUBBO • SPRING CLOUD • … • 控制平面创新的地方 • MESH OPERATOR • RPC SERVICE CONTROLLER • …SERVICE MESH 落地中的问题常见的 MESH 落地方案 在非 KUBERNETES 资源 • 使用 Controller Pattern 通过 CRD 扩展新的能力 • …MESH 落地碰到的问题 • 客户端服务发现与负载均衡无法与 ISTIO 一起工作 • ENVOY 不支持微服务使用的通信协议 • RPC 服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型0 码力 | 28 页 | 4.73 MB | 6 月前3
蚂蚁金服网络代理演进之路2010年前部署商用设备 前世 01 2010 开始网络代理白盒 化,定制业务逻辑,软 硬件一体解决方案 自研 02 2015 年无线通道协议,安 全升级, 连接收编 All in 无线 03 PC时代 移动时代 万物互联云原生时代 2018 年协议,安全持续升 级(QUIC,MQTT,国密), 云原生 再启程 03前世 F5 BigIP Netscaler自研四层网络代理 2011 • 首次全流量支撑双十一大促 2013 • 支持蚂蚁LDC架构,三地五中心容灾架构 • 全面上线SSL加速卡,提供软硬件一体加速方案 2015 • All in 无线,通信通道全面升级(MMTP,MTLS协议) 2016 • 安全防护能力提升,WAF,流量镜像 2018至 今 • 通信协议,架构,安全再次升级(物联终端接入,QUIC协议,国密,可信计算, 海外加速,云原生)金融级三地五中心容灾架构(LDC) 海外加速,云原生)金融级三地五中心容灾架构(LDC) 单机房 LDC 同城双活 LDC 异地多活 LDC 弹性伸缩混部 LDC DB Region 1 DB1 Region 1 Region 1 DB2 Region 1 Region 1 DB1 DB2 Region 2 DB3 Region 1 Region 1 DB1 DB2 Region 2 Elastic Region DB30 码力 | 46 页 | 19.93 MB | 6 月前3
Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展相似的解决方案:数据面+控制面+应用 • 不同的协议层次:SDN 2-4层,Service Mesh 主要为7层 SDN对Service Mesh发展的启发: Ø 北向接口 • 面向业务和运维 • 具有较高的抽象层次,比较容易提取统一的控制面标准? • 主要面向layer 7及以上? • SMI能否统一控制面标准?如何避免成为最小公分母,扩展支持其它协议? Ø 南向接口 • 面向流量和路由配置 面向流量和路由配置 • xDS v2将统一数据面标准? • xDS接口包含有较多实现相关内容:Listener, Filter, 能否可以成为一个通用的接口协议? 是否会出现Envoy之外的大量数据面实现? • 建议:对xDS接口进行改进,去掉实现相关内容 Ø Service Mesh的发展 • 控制面对数据面软硬件的统一控制能力? • 通过控制面API接入各种丰富的应用场景 - 下一个热点?总体架构-高层视图 Metrics 收集产品化增强-支持多网络平面 电信系统一般会有多个网络平面的,主要原因包括:避免不同功能的网络之间的 相互影响; 网络设计冗余,增强系统网络的健壮性; 为不同的网络提供不同的 SLA ;通过网络隔离提高安全性;通过叠加多个网络增加系统带宽 上图中的Kubernets集群使用了Knitter网络插件,部署了四个网络平面产品化增强-支持多网络平面 Istio1.0中不支持多网络平面,当服务地0 码力 | 27 页 | 11.99 MB | 6 月前3
云原生开放智能网络代理 MOSNZooKeeper 多协议接入 TLS,国密 WAF,DDos2/10 MOSN 核心能力沉淀 精细化路由 安全防护 多协议 可运维 可扩展 • 多版本发布 • 压测引流 • 服务分组 • 加密链路 • 国密算法 • 服务鉴权 • TCP、Http、SOFA • 透明劫持 • 平滑升级 • 可观测性 • 网络包过滤器 • 协议包过滤器 • 协议扩展 • 可观测性扩展 安全审计 社区 更多的协议及服务框架支持 Dubbo、SpringCloud、 RocketMQ、gRPC、HTTP3、 MQTT、QUIC、TLS1.3 等 多协议 支持模块化 自适应限流 多协议深度扩展能力 多进程 WAF WebAssembly 兼容用户态协议栈 Lua 支持 核心和开放能力 适配 Istio,兼容 UDAP 协议 Zookeeper,Etcd Zookeeper,Etcd Open Tracing, Jaeger Prometheus, StatsD 生态融合 支持 K8s Ingress,Edge Proxy、Mesh Sidecar, Api Gateway 等多种代理 形态 多场景10/10 开源所幸,云之爆发 我们认为,未来会更多地属于那些告别大教堂、拥抱集市的人们。《大教堂与集市》感谢聆听 欢迎关注,获取最新分布式架构内容0 码力 | 12 页 | 1.39 MB | 6 月前3
蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘üMesh处理三段式:Headers + Data + Trailers Ø定义协议Codec核心接口 ü编码:对请求数据进行编码并根据控制指令发送数据 ü解码:对IO数据进行解码并通过扩展机制通知订阅方 •定义扩展机制通知解码事件STREAMING 6 Ø定义Stream模型 ü 向上确保协议行为一致性 ü 为网络协议请求/响应提供可编程的抽象载体 ü 考虑PING-PONG,PIPELINE,分帧STREAM三种典型流程特征 Ø定义Stream层编/解码核心接口 ü 核心数据结构复用Protocol层 Ø定义可扩展的插件机制 Ø对于满足请求Stream池化的需求 Ø需处理上层传入的状态事件PROXY 7 Ø基于Stream抽象提供多协议转发能力 Ø执行Stream扩展Filters Ø提供可扩展的路由寻址能力 Ø提供可扩展的后端管理,负载均衡,健康检查能力 Ø维护上/下游核心指标转发流程 8 IO Read Codec •TCP 代理 •TLS 支持 •TProxy 支持 •平滑 reload •平滑版本升级 多协议 •SOFA RPC •HTTP 1.x (待优化) •HTTP 2 (待优化) •Dubbo (研发中) •HSF (研发中) •On TLS 核心路由 •支持 virtual host 路由 •支持 headers/url/prefix 路由 •支持基于 host metadata0 码力 | 44 页 | 4.51 MB | 6 月前3
SOFAMOSN持续演进路径及实践分享Meetup #5 广州站Agenda Ø 背景 & 概览 Ø 持续演进路径 & 技术案例 Ø 实践案例 Ø 规划 & 展望 Ø QA背景 & 概览数据平面概览 SOFAMOSN • C实现,支持多语言扩展 • 基于Nginx扩展 • 开发不活跃 • 老牌代理系统,业界广 泛使用,服务各类场景 • C++实现 • CNCF第三个毕业项目, ISTIO原生数据平面 • 开发活跃,最新版为1 HTTP/2.0支持 Ø 进程平滑升级 Ø SOFAMesh集成,支持 xDS on ADS Ø X-Protocol协议扩展机制, 以及Dubbo支持 Ø 支持network/stream filter 扩展 Ø 支持WRR负载均衡 Ø 支持subset复杂匹配路由 Ø 无损平滑迁移 Ø ProtocolEngine协议扩展 机制 Ø 支持Router模式 Ø GRPC支持 Ø 协议自动识别 协议自动识别 Ø 链式路由扩展 Ø 完善流量管理策略,包括 Retry、DirectResponse、 HTTP Header add/delete、 流控、故障注入等 Ø 支持必要的admin接口性能 0.1.0 0.2.0 0.3.0 0.4.0 Ø 内存复用框架 Ø Slab style buffer Ø Raw-Epoll模式 Ø 读合并 Ø 协程池化 Ø 调度均衡 Ø0 码力 | 29 页 | 7.03 MB | 6 月前3
Service Mesh 在『路口』的产品思考与实践SDK 协议编解码 服务发现 负载均衡 熔断限流 服务路由 …… 混合在一个进程内, 应用既有业务逻辑, 也有各种功能, 每次升级都要重新发布应用 升级成本高 版本碎片化严重 中间件演进困难6/39 微服务治理与业务逻辑解耦 Part 1: 为什么需要Service Mesh? Service 业务逻辑 SDK 协议编解码 服务发现 负载均衡 熔断限流 服务路由 …… Service 业务逻辑 轻量级 SDK 协议编解码 Sidecar (MOSN) + 服务发现 负载均衡 熔断限流 服务路由 …… - 专注业务实现 - 无需感知Mesh - 专注服务间通讯和相 关能力 - 与业务逻辑无关 将SDK客户端 的功能剥离 混合在一个进程内, 拆解为独立进程, 以 Sidecar 的模式运行 将服务治理能力下沉到基础设施,实现独立演进,透明升级7/39 异构系统统一治理 Part 1: 为什么需要Service Mesh? 多语言、多协议 图片来源:https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh 流量控制、监控8/39 金融级网络安全0 码力 | 40 页 | 15.86 MB | 6 月前3
陌陌Service Mesh架构实践陌陌中间件架构师1/24 讲师简介 高飞航,陌陌中间件架构师 2011年 毕业于东北大学 加入淘宝网 交易平台团队 负责交易流程业务研发 2013年 加入陌陌 基础平台组 负责多项中间件产品研发、多机房架构建设 在微服务领域具备丰富的经验 当前关注Service Mesh、云原生等技术方向2/24 /01 /02 /03 背景 问题 实践 微服务体系演进历程 架构痛点与解决思路 Service 微服务体系的其他产品也均为自研方案6/24 MOA 1.0微服务体系整体架构 注册中心 • Redis作为底层存储 • 跨语言地址发现服务Lookup • 中心化存活检测 多语言支持 • Java、PHP、Python、Go、NodeJs • Redis传输协议 / 复用Redis客户端 • 服务发布Proxy / 并行调用Proxy 服务治理 • 服务治理平台、配置中心 • 监控、日志、分布式跟踪 • 异步调用、压测7/24 技术体系内不引入Go语言 最成熟的服务端语言为Java 使用Java开发 数据平面Agent14/24 整体架构 数据平面 • 现有协议的流量转发 • Agent平滑升级机制 控制平面 • 轻量的Pilot Proxy • 向Istio的标准协议靠拢 重点目标 长期规划15/24 数据平面实践细节 • 部署方式 • 升级方式 • 容灾方式 • 性能问题 • 资源问题0 码力 | 25 页 | 1.25 MB | 6 月前3
七牛容器云ServiceMesh实践Gimbal生态组件Contour特点 • 基于Envoy • 协议转换 • 对象翻译 • IngressRouterContour的优劣 • 优势 • 兼容Istio生态,融入Service Mesh生态 • 南北向流量使用Envoy • 兼容Kubernetes标准Restful接口 • 统一的Kubernetes管理接口 • Gimbal生态 • 多集群入口流量整合管理 • 劣势 • 缺少大规模落地案例 功能/非功能仍需加强Contour & Istio • 南北向流量 • API版本共存(Istio & Kubernetes Ingress) • 东西向流量 • Istio支持全量功能 • Contour支持Tracing能力 • 数据面共存 • 共用边车组件Envoy七牛现有Service Mesh体系 • Istio产品化 • 东西流量产品化 • 南北流量产品化 • TLS管理优化 涉及K8S集群约20+集群 • 功能迭代 • 先南北,后东西 • 先原生,后二开 • 先管控面,后数据面落地场景—Spock测试平台 • 历史问题 • 分布式系统性能测试问题 定位难 • 多版本并发测试 • 故障注入较困难(代码侵 入性强) • 测试环境不稳定,后端Pod 频繁重启 • 解决方案 • Contour产品化 • Istio的灰度发布和流量管理 • Istio的Tracing产品化落地场景—云存储系统0 码力 | 15 页 | 3.86 MB | 6 月前3
Service Mesh的实践分享over HTTP JSON over HTTP多语言服务端接入 • Registry Agent • sidecar • 注册代理 • 健康检查 • 服务端受限于Proxy支持的协 议(目前只支持HTTP 1.1) Local Proxy Web Server Service Registry API Gateway 健康检查 服务注册 Registry agent Daemonset根据宿主机的配置调整Proxy的 资源以应对客户端增多的情况。容量超标 则临时转移到remote proxy 承接临时流量和非主要流量, 基本无动态扩容需求。上云之 后(目前物理机)可以支持动 态扩容Sidecar(in Pod) vs. Daemonset + remote proxy Sidecar(in Pod) Daemonset 对容器的影响 影响大。Pod中增加sidecar容器,加大整个Pod的资源需 • 传统基于日志收集的tracing方 案足够成熟 • 内部实现一套可插拔的鉴权框 架也能接受混合部署 vs. 绑定K8s • 历史原因导致长期都会物理机 和容器并存,内部需求必须要 同时支持物理机和云 • 绑定K8s能够享受K8s的红利, 但也限制了使用范围 +服务治理程度更接地气 • 不停的迭代、落地、反馈,打 造一系列的实用的治理功能 • 规则路由、标签路由、邻近机房0 码力 | 30 页 | 4.80 MB | 6 月前3
共 30 条
- 1
- 2
- 3













