SOFAMOSN持续演进路径及实践分享
技术案例能力 0.1.0 0.2.0 0.3.0 0.4.0 Ø TCP代理/7层通用代理 Ø 简单匹配路由 Ø 集群管理 & 基本负载均衡(RR、 RANDOM) Ø SofaRpc及HTTP/1.1、 HTTP/2.0支持 Ø 进程平滑升级 Ø SOFAMesh集成,支持 xDS on ADS Ø X-Protocol协议扩展机制, 以及Dubbo支持 Ø 支持network/stream Retry、DirectResponse、 HTTP Header add/delete、 流控、故障注入等 Ø 支持必要的admin接口性能 0.1.0 0.2.0 0.3.0 0.4.0 Ø 内存复用框架 Ø Slab style buffer Ø Raw-Epoll模式 Ø 读合并 Ø 协程池化 Ø 调度均衡 Ø SOFARPC深度优化 Ø TLS官方库IO优化 Ø HTTP1.1/HTTP2.0 IO优化 断开链接 继续读取数据技术案例 – HTTP/2.0优化 官方HTTP/2.0实现问题: 1. syscall read较多,效率低下 2. 每个stream分配单独的goroutine处理, 调度开销高 3. 临时对象多,GC占比高 4. 基本实现了RFC中MUST部分,部分功 能需求上不匹配,如GRPC trailer实现技术案例 – HTTP/2.0优化 优化思路:适配MOSN框架,复用官方实现核心结构体和解析流程0 码力 | 29 页 | 7.03 MB | 5 月前3大规模微服务架构下的Service Mesh探索之路
Pilot Auth Golang Sidecar Mixer XDS API Mixer Service HTTP/1.1 HTTP/2 Sofa RPC ü 参照Envoy的设计 ü 实现XDS API ü 兼容Istio ü 支持HTTP/1.1和HTTP/2 ü 扩展Sofa/Dubbo/HSF Dubbo RPC HSF RPC最大的改变:合并部分Mixer功能 Mesh技术感兴趣的国内 厂商/企业/技术媒体,开展不同层面上的交流与合作。开源准备中,七月,github见! Sofa Mesh on the way!Service Mesher社区网站开通! http://www.servicemesher.comService Mesher技术社区 微信公众号 微信交流群 加入方式:请添加净超为好友,注明 servicemesherTHANKS0 码力 | 37 页 | 7.99 MB | 5 月前3Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?
rocess Adapter 7/39 Istio的新回答:架构继续优先,性能继续放一边 Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Istio 1.1 – 1.2 Mixer 1.1 - 1.2Istio Control Plan 为什么Istio选择Out-of-Process Adapter? Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? checkers ● Transport sockets ● Retry policy ● Resource monitors ● Stats sink 扩展方式: ● C++ ● Lua(目前仅限于HTTP Traffic) ● Go extensions (beta, for Cilium)Envoy最新的扩展方式:Web Assembly Part 2:ServiceMesh灵魂拷问二:性能有了,架构怎么办? WebAssembly字节码不能直接在任何一种CPU架构上运行, 但由于非常接近机器码,可以非常快的被翻译为对应架构 的机器码,因此WebAssembly运行速度和机器码接近。(类 比Java bytecode) (摘录自http://blog.enixjin.net/webassembly-introduction/)使用Web Assembly扩展Envoy的好处 Part 2:ServiceMesh灵魂拷问二:性能有了,架构怎么办?0 码力 | 43 页 | 2.90 MB | 5 月前3Service Mesh的实践分享
Center Remote Proxy Cluster API Gateway 备用链路 服务发现 服务注册 配置下发 服务路由 网络传输 OSP client多语言客户端接入 • HTTP & TCP • Local & Remote • 根据接入对象的不同,制定 不同的接入策略,达到 • 接入简单 • 保证性能 • 节省资源 Java App Local Proxy OSP Thrift over TCP Thrift over TCP JSON over HTTP JSON over HTTP多语言服务端接入 • Registry Agent • sidecar • 注册代理 • 健康检查 • 服务端受限于Proxy支持的协 议(目前只支持HTTP 1.1) Local Proxy Web Server Service Registry API Gateway 健康检查 服务注册 Registry agent 服务发现 HTTP/JSON HTTP/JSON容器化 • Proxy Daemonset • 每台宿主机一台Proxy • Proxy地址文件 • Mount到所有pod • 客户端容器监听文件,根据地 址文件找Proxy • 切换地址到remote proxy,轻 易实现优雅退出和滚动升级0 码力 | 30 页 | 4.80 MB | 5 月前3蚂蚁金服网络代理演进之路
Spanner LVS(四层负载) DNS 网络控制面 LDC1 Spanner Spanner APP APP APP APP Keycenter HTTP1 TLS1.2 MMTP Mtls MQTT HTTP2 TLS1.3 QUIC 国密 硬件加速 安全合规 Spanner LVS(四层负载) DNS LDC2 Spanner Spanner APP APP Zstd通信协议&架构持续升级 多终端&协议接入 架构升级 云原生生态融合 § MQTT协议的IOT设备接入 § 就近就优海外接入,智能调度 § 蚂蚁全球加速节点,全协议支持 § 支持UDPA § QUIC/HTTP3 § 接入层容器化,混部 § 支持QUIC协议的LB建设 § Web Assembly模块扩展东西流量的服务发现与路由 F5(ipvs) APP APP APP APP 配置中心 APP 流量控制蚂蚁金服率先大规模落地SOFAMesh UDPA 安全 统一数据 平面API 存量连接无损迁移 提升5倍发布效率 TLS双向加密 支持国密算法 WAF 流量镜像 多协议 SOFARPC Dubbo HTTP1.1/2 平滑升级 性能 单跳CPU增加5%消耗 0.2ms RT 蚂蚁金服100+应用,10w+容器已经mesh化,部分业务链路通过下沉, RT降低了7%,平稳支撑了618大促。SOFAMosn0 码力 | 46 页 | 19.93 MB | 5 月前3蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘
•事件机制 •Metrics 收集 •TCP 代理 •TLS 支持 •TProxy 支持 •平滑 reload •平滑版本升级 多协议 •SOFA RPC •HTTP 1.x (待优化) •HTTP 2 (待优化) •Dubbo (研发中) •HSF (研发中) •On TLS 核心路由 •支持 virtual host 路由 •支持 headers/url/prefix metadata 的 subset 路 由 •支持重试 后端管理 •基础负载均衡算法 •主动健康检查 •Subset 负载策略Highlights 2 ØX-Protocol: 支持 RPC on HTTP2的通用方案(完善中) Ø支持平滑升级中协议无关存量链接迁移 Ø支持指定 / 更新 Downstream / Upstream 协议配置 ØSOFARPC 支持 Upstream 反向请求Istio集成 8 指标\软件 SOFAMosn Envoy QPS峰值 103500 104000 RT(avg) 16.23ms 15.88ms MEM 31m 18m CPU 100% 100%HTTP/1.1 + 1K字符串 9 指标\软件 SOFAMosn Envoy QPS峰值 29670 38800 RT(avg) 5.715ms 5.068ms RT(P99) 16ms 7ms RT(P98)0 码力 | 44 页 | 4.51 MB | 5 月前3服务增强器社区介绍
好未来 殷龙飞 北控三兴 赵化冰 中兴通讯ServiceMesher 社区成立以来组织了一系列翻译活动,如: • Envoy 官方文档 • Knative 入门 • Istio 官方文档 1.1 版本和 1.4 版本 社区官网投稿情况: • 翻译文章:147 篇 • 原创文章:122 篇 /03 社区活动2019年 10 月31 日 正式开始 istio 1.5 官网文档的翻译。0 码力 | 7 页 | 20.77 MB | 5 月前3进击的 Traefik | 云原生边缘路由器探秘
核心概念 3 Traefik With Docker 4 Traefik With KubernetesTraefik 是什么? • 云原生的边缘路由器 • 让部署微服务更加便捷而诞生的现 代 HTTP 反向代理、负载均衡工具 • 它支持多种后台 (Docker, Swarm, Kubernetes, M arathon, Mesos, Consul, Etcd, Z ookeeper, BoltDB ports: - "80:80" # HTTP 端口 - "8080:8080" # Web UI 端口(需要开启 --api.insecure) volumes: - /var/run/docker.sock:/var/run/docker.sock whoami: image: containous/whoami labels: - "traefik.http.routers.whoami https://mycompany.org/jenkins -> http://jenkins:8080/jenkins jenkins: image: jenkins/jenkins:lts environment: - JENKINS_OPTS=--prefix=/jenkins labels: # 因为50000也暴露了,所以声明下端口 - "traefik.http.services.jenkins.LoadBalancer0 码力 | 35 页 | 8.58 MB | 5 月前3微博Service Mesh实践
全⾯面/灵活可扩展 服务治理理Service Mesh Meetup · BeiJing 跨语⾔言服务化⽅方式对⽐比 �11 微博Service Mesh实践 - WeiboMesh Http代理理 RPC模块 Agent代理理 研发成本 低 ⾼高 中 维护成本 低 ⾼高 中 使⽤用成本 低 低 中 治理理功能 中 ⾼高 ⾼高 扩展能⼒力力 低 中 ⾼高Service Mesh �23 微博Service Mesh实践 - WeiboMesh WM ⽬目标机器器 WM 请求机器器 client server motan2/simple provider http/cgi/… motan2/simple pointerService Mesh Meetup · BeiJing Weibo Mesh 控制⾯面 �24 微博Service Mesh实践 handler Registry cgi cgi HTTP http filter register discoverService Mesh Meetup · BeiJing 反向代理理特点 �33 微博Service Mesh实践 - WeiboMesh ➢ 提供HTTP/cgi provider,可扩展 ➢ HTTP框架⾃自动转RPC,业务⽆无需开发新RPC框架 ➢ 不不影响原有服务的提供0 码力 | 43 页 | 1007.85 KB | 5 月前3Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展
rvice Mesh是下一代的SDN吗? Network Layer Look at Solution Layer 7+ Message Body Service Mesh Layer 7 HTTP Header Service Mesh Layer 4 TCP Port SDN/Service Mesh? Layer 3 IP Address/Protocol SDN Layer 2 成本 Ø Istio不理解TCP上的应用层协议,其对TCP Service的缺省处理会影响应用层逻 辑 -例子:Envoy的LB算法不能处理应用后端集群的Sharding Ø Istio中和HTTP Service 端口冲突会的TCP Service请求会被Envoy直接丢弃 - 要求对应用进行改造,避免端口冲突 建议 Ø 将TCP纳入Service Mesh管控还不成熟,成本远大于收益 TCP流量 通过IP段或者端口范围区分HTTP和其他TCP流量 - 需要对应用进行改造 l 方案二:在Envoy中 bypass TCP 流量 -不需要对应用进行改造,但Envoy要具备区分TCP和 HTTP流量的能力,需对Envoy进行改造 改造方案: Ø Envoy侧:通过一个自定义的envoy listener filter区分HTTP 和非HTTP的TCP流量 Ø Pilot侧:修0 码力 | 27 页 | 11.99 MB | 5 月前3
共 24 条
- 1
- 2
- 3