 蚂蚁金服网络代理演进之路蚂蚁金服100+应用,10w+容器已经mesh化,部分业务链路通过下沉, RT降低了7%,平稳支撑了618大促。SOFAMosn https://github.com/sofastack/sofa-mosn Written in go SOFAMosn是一个云原生安全网络代理 为什么自研golang版本? 跨团队合作需要考虑技术栈落地成本 Golang性能,成本符合蚂蚁实际需求 近十年的网络代理研发,运维经验SOFAMos ü 一个请求对应一个worker协程,执行业务处理,proxy和Write逻辑SOFAMosn能力扩展 ü 协议扩展 MOSN 通过使用同一的编解码引擎以及编/解码器核心接口,提供协议的 plugin 机制,包括支持 • SofaRPC • HTTP1.x,/HTTP2.0 • Dubbo ü NetworkFilter 扩展 MOSN 通过提供 network filter 注册机制以及统一的 socket较TCP socket 提升8%性能TLS性能 ü go在RSA上没有太多优化,go-boring(CGO)的能力是 go的1倍。 ü p256在go上有汇编优化,ECDSA优于go-boring ü 在AES-GCM对称加密上,go的能力是go-boring的20倍 ü 在SHA,MD等HASH算法也有对应的汇编优化 ü 对Go-GMSSL汇编优化HTTP性能数据 指标 SOFAMosn0 码力 | 46 页 | 19.93 MB | 6 月前3 蚂蚁金服网络代理演进之路蚂蚁金服100+应用,10w+容器已经mesh化,部分业务链路通过下沉, RT降低了7%,平稳支撑了618大促。SOFAMosn https://github.com/sofastack/sofa-mosn Written in go SOFAMosn是一个云原生安全网络代理 为什么自研golang版本? 跨团队合作需要考虑技术栈落地成本 Golang性能,成本符合蚂蚁实际需求 近十年的网络代理研发,运维经验SOFAMos ü 一个请求对应一个worker协程,执行业务处理,proxy和Write逻辑SOFAMosn能力扩展 ü 协议扩展 MOSN 通过使用同一的编解码引擎以及编/解码器核心接口,提供协议的 plugin 机制,包括支持 • SofaRPC • HTTP1.x,/HTTP2.0 • Dubbo ü NetworkFilter 扩展 MOSN 通过提供 network filter 注册机制以及统一的 socket较TCP socket 提升8%性能TLS性能 ü go在RSA上没有太多优化,go-boring(CGO)的能力是 go的1倍。 ü p256在go上有汇编优化,ECDSA优于go-boring ü 在AES-GCM对称加密上,go的能力是go-boring的20倍 ü 在SHA,MD等HASH算法也有对应的汇编优化 ü 对Go-GMSSL汇编优化HTTP性能数据 指标 SOFAMosn0 码力 | 46 页 | 19.93 MB | 6 月前3
 SOFAMesh的通用协议扩展DUBBO Response SOFA MESH OUTBOUND X-PROTOCOL Config INBOUND X-PROTOCOL Config Dubbo Plugin Dubbo Plugin分层扩展接口 解包是对 SIDECAR 代理性能影响最大的因素 多路复用是基本能力,其他能力需要在多路复用能 力上构建 协议装换能力允许使用 HTTP2 作为 SOFA-MOSN0 码力 | 28 页 | 4.73 MB | 6 月前3 SOFAMesh的通用协议扩展DUBBO Response SOFA MESH OUTBOUND X-PROTOCOL Config INBOUND X-PROTOCOL Config Dubbo Plugin Dubbo Plugin分层扩展接口 解包是对 SIDECAR 代理性能影响最大的因素 多路复用是基本能力,其他能力需要在多路复用能 力上构建 协议装换能力允许使用 HTTP2 作为 SOFA-MOSN0 码力 | 28 页 | 4.73 MB | 6 月前3
 深入 Kubernetes 的无人区-蚂蚁金服双十一的调度系统Server 极速交付 分时复用 弹性容量 资源画像 规模化调度 高可用容灾 可视化 服务 Cluster Control Panel 在线应用 计算型混部任务 CSI CNI Device Plugin runc nanovisor 日志服务 云盘 本地多盘 弹性网卡 网络安全组 GPU 安全可信 数据库服务 OB serverless 平台 kata SOFAMesh 资源分时复用0 码力 | 19 页 | 2.18 MB | 6 月前3 深入 Kubernetes 的无人区-蚂蚁金服双十一的调度系统Server 极速交付 分时复用 弹性容量 资源画像 规模化调度 高可用容灾 可视化 服务 Cluster Control Panel 在线应用 计算型混部任务 CSI CNI Device Plugin runc nanovisor 日志服务 云盘 本地多盘 弹性网卡 网络安全组 GPU 安全可信 数据库服务 OB serverless 平台 kata SOFAMesh 资源分时复用0 码力 | 19 页 | 2.18 MB | 6 月前3
 Service Mesh的实践分享服务调用 应用指标 上报 触发告警 Proxy App Smart agent Proxy App Smart agent Alarm center Analysis plugin全链路服务综合治理 • 现状 • 链路上某些节点的配置不合理,很难被预 先发现 • 如整条调用链入口要求的超时是500ms,然而 中间某个服务的超时时间是5s。超时时间的严 重差异容易造成资源浪费(上游超时返回了下0 码力 | 30 页 | 4.80 MB | 6 月前3 Service Mesh的实践分享服务调用 应用指标 上报 触发告警 Proxy App Smart agent Proxy App Smart agent Alarm center Analysis plugin全链路服务综合治理 • 现状 • 链路上某些节点的配置不合理,很难被预 先发现 • 如整条调用链入口要求的超时是500ms,然而 中间某个服务的超时时间是5s。超时时间的严 重差异容易造成资源浪费(上游超时返回了下0 码力 | 30 页 | 4.80 MB | 6 月前3
 蚂蚁金服Service Mesh渐进式迁移方案ions/blob/master/A-Deep-Dive-into-CoreDNS-2018.pdf https://godoc.org/github.com/coredns/coredns/plugin https://coredns.io/2017/03/01/how-to-add-plugins-to-coredns/CoreDNS 的记录更新 ��� ��� �.8�.8����0 码力 | 40 页 | 11.13 MB | 6 月前3 蚂蚁金服Service Mesh渐进式迁移方案ions/blob/master/A-Deep-Dive-into-CoreDNS-2018.pdf https://godoc.org/github.com/coredns/coredns/plugin https://coredns.io/2017/03/01/how-to-add-plugins-to-coredns/CoreDNS 的记录更新 ��� ��� �.8�.8����0 码力 | 40 页 | 11.13 MB | 6 月前3
 阿里巴巴核心应用洛地 Service Mesh 的挑战与机过Service Mesh Biz Non Ali Biz将中间件能力下层到基础层 业务 (Java/Go/C++ 等) Serverless 业务 (Java/Go/C++ 等) 业务 (Java/Go/C++, etc) Serverless 业务 (Java/Go/C++, etc) 网格化的基础组件 (基于插件) 网格化的基础组件 (基于插件) Service0 码力 | 22 页 | 6.61 MB | 6 月前3 阿里巴巴核心应用洛地 Service Mesh 的挑战与机过Service Mesh Biz Non Ali Biz将中间件能力下层到基础层 业务 (Java/Go/C++ 等) Serverless 业务 (Java/Go/C++ 等) 业务 (Java/Go/C++, etc) Serverless 业务 (Java/Go/C++, etc) 网格化的基础组件 (基于插件) 网格化的基础组件 (基于插件) Service0 码力 | 22 页 | 6.61 MB | 6 月前3
 Service Mesh Meetup #3 深圳站Service Mesh Meetup #3 深圳站关于我 • JEX 技术VP • 前小恩爱技术总监 • Gopher,开源爱好者 • Go 夜读发起人 • https://github.com/developer-learning/night-reading-go • https://github.com/developer-learning/learning-kubernetes大纲 • 技术架构的演进 不是一种新角色; DevOps 是一种文化:一切自动化,工具化,规范化;选择哪个 CI/CD 工具?Docker stats 查看 Docker 服务所占用的CPU和内存开销DroneDrone • 一款使用 Go 开发,基于容器技术的 CI/CD 系统,能够单独部署,支持几乎所有的 Git 平台(Github,Gitlab,Bitbucket,Gogs,Gitea 等)。 • 它的特点: • 一个 execAPI 支持我是作者名称.drone.yml代码质量检测 SonarQube 参考资料:https://github.com/developer-learning/night-reading- go/blob/master/articles/sonarqube-for-golang/2018-07-22-sonarqube-for- golang.mdDrone 和 Jenkins 联调测试方法0 码力 | 45 页 | 18.62 MB | 6 月前3 Service Mesh Meetup #3 深圳站Service Mesh Meetup #3 深圳站关于我 • JEX 技术VP • 前小恩爱技术总监 • Gopher,开源爱好者 • Go 夜读发起人 • https://github.com/developer-learning/night-reading-go • https://github.com/developer-learning/learning-kubernetes大纲 • 技术架构的演进 不是一种新角色; DevOps 是一种文化:一切自动化,工具化,规范化;选择哪个 CI/CD 工具?Docker stats 查看 Docker 服务所占用的CPU和内存开销DroneDrone • 一款使用 Go 开发,基于容器技术的 CI/CD 系统,能够单独部署,支持几乎所有的 Git 平台(Github,Gitlab,Bitbucket,Gogs,Gitea 等)。 • 它的特点: • 一个 execAPI 支持我是作者名称.drone.yml代码质量检测 SonarQube 参考资料:https://github.com/developer-learning/night-reading- go/blob/master/articles/sonarqube-for-golang/2018-07-22-sonarqube-for- golang.mdDrone 和 Jenkins 联调测试方法0 码力 | 45 页 | 18.62 MB | 6 月前3
 Service Mesh结合容器云平台的思考和实践定了pilot-agent的“角色”,role包括以下属性: 1.Type pilot-agent有三种运行模式。根据role.Type变量定义,类型为model.Proxy,定义在context.go文件中,允许的3个取值范围为: i. "sidecar" 默认值,可以在启动pilot-agent,调用proxy命令时覆盖。Sidecar type is used for sidecar proxies nt的main方法在一开始初始化的proxyConfig对象。里面 的BinaryPath在pilot-agent的init方法中被初始化,初始值来自pilot/pkg/model/context.go的 DefaultProxyConfig函数,值是/usr/local/bin/envoy。 2. envoy的启动参数形式为下面的startupArgs,包含一个-c指定的配置文件,还有一些命令行参数。除了下面 如果用户制定了customConfigFile,那么就用customConfigFile。 3.如果用户customConfigFile和templateFile都没指定,则调用pilot/pkg包下的bootstrap_config.go中的 WriteBootstrap自动生成一个配置文件,默认将生成的配置文件放在/etc/istio/proxy/envoy-rev%d.json, 这里的%d会用epoch序列号代替。WriteBootstrap在envoy0 码力 | 28 页 | 3.09 MB | 6 月前3 Service Mesh结合容器云平台的思考和实践定了pilot-agent的“角色”,role包括以下属性: 1.Type pilot-agent有三种运行模式。根据role.Type变量定义,类型为model.Proxy,定义在context.go文件中,允许的3个取值范围为: i. "sidecar" 默认值,可以在启动pilot-agent,调用proxy命令时覆盖。Sidecar type is used for sidecar proxies nt的main方法在一开始初始化的proxyConfig对象。里面 的BinaryPath在pilot-agent的init方法中被初始化,初始值来自pilot/pkg/model/context.go的 DefaultProxyConfig函数,值是/usr/local/bin/envoy。 2. envoy的启动参数形式为下面的startupArgs,包含一个-c指定的配置文件,还有一些命令行参数。除了下面 如果用户制定了customConfigFile,那么就用customConfigFile。 3.如果用户customConfigFile和templateFile都没指定,则调用pilot/pkg包下的bootstrap_config.go中的 WriteBootstrap自动生成一个配置文件,默认将生成的配置文件放在/etc/istio/proxy/envoy-rev%d.json, 这里的%d会用epoch序列号代替。WriteBootstrap在envoy0 码力 | 28 页 | 3.09 MB | 6 月前3
 陌陌Service Mesh架构实践微服务体系的其他产品也均为自研方案6/24 MOA 1.0微服务体系整体架构 注册中心 • Redis作为底层存储 • 跨语言地址发现服务Lookup • 中心化存活检测 多语言支持 • Java、PHP、Python、Go、NodeJs • Redis传输协议 / 复用Redis客户端 • 服务发布Proxy / 并行调用Proxy 服务治理 • 服务治理平台、配置中心 • 监控、日志、分布式跟踪 • 异步调用、压测7/24 现阶段的关键需求 技术储备与原则类因素 自研数据平面与 控制平面方案 使存量服务接入Mesh 方案 对接大量内部系统 关键收益均由数据平面产生 非完善的控制平面功能 技术体系内不引入Go语言 最成熟的服务端语言为Java 使用Java开发 数据平面Agent14/24 整体架构 数据平面 • 现有协议的流量转发 • Agent平滑升级机制 控制平面 • 轻量的Pilot0 码力 | 25 页 | 1.25 MB | 6 月前3 陌陌Service Mesh架构实践微服务体系的其他产品也均为自研方案6/24 MOA 1.0微服务体系整体架构 注册中心 • Redis作为底层存储 • 跨语言地址发现服务Lookup • 中心化存活检测 多语言支持 • Java、PHP、Python、Go、NodeJs • Redis传输协议 / 复用Redis客户端 • 服务发布Proxy / 并行调用Proxy 服务治理 • 服务治理平台、配置中心 • 监控、日志、分布式跟踪 • 异步调用、压测7/24 现阶段的关键需求 技术储备与原则类因素 自研数据平面与 控制平面方案 使存量服务接入Mesh 方案 对接大量内部系统 关键收益均由数据平面产生 非完善的控制平面功能 技术体系内不引入Go语言 最成熟的服务端语言为Java 使用Java开发 数据平面Agent14/24 整体架构 数据平面 • 现有协议的流量转发 • Agent平滑升级机制 控制平面 • 轻量的Pilot0 码力 | 25 页 | 1.25 MB | 6 月前3
 微博Service Mesh实践• 服务治理理 • 跨语⾔言序列列化 • 批量量请求 • 资源服务化 • 兜底逻辑 Mesh Light Client SM 功能 功能 强化 Go 并发 适配 不不同 语⾔言Service Mesh Meetup · BeiJing Weibo Mesh 数据⾯面 �17 微博Service Mesh实践 - WeiboMesh ➢ Weibo Mesh开源项⽬目地址 �42 微博Service Mesh实践 - WeiboMesh WeiboMesh:https://github.com/weibocom/motan-go JAVA:https://github.com/weibocom/motan OR:https://github.com/weibocom/motan-openresty PHP:https://github0 码力 | 43 页 | 1007.85 KB | 6 月前3 微博Service Mesh实践• 服务治理理 • 跨语⾔言序列列化 • 批量量请求 • 资源服务化 • 兜底逻辑 Mesh Light Client SM 功能 功能 强化 Go 并发 适配 不不同 语⾔言Service Mesh Meetup · BeiJing Weibo Mesh 数据⾯面 �17 微博Service Mesh实践 - WeiboMesh ➢ Weibo Mesh开源项⽬目地址 �42 微博Service Mesh实践 - WeiboMesh WeiboMesh:https://github.com/weibocom/motan-go JAVA:https://github.com/weibocom/motan OR:https://github.com/weibocom/motan-openresty PHP:https://github0 码力 | 43 页 | 1007.85 KB | 6 月前3
共 17 条
- 1
- 2













