蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘trust网络安全趋势 Ø异构语言体系融合 • SOFA/NodeJS/C++/Python/.. • 业务低成本融入服务,运维体系为什么要自研Golang版本ServiceMesh 2 Ø跨团队协作需要考虑技术栈落地成本 ü 参与团队分别使用C,Golang,Java等多种技术栈 Ø基于蚂蚁SOFA体系的Mesh化思考 ü 无法保证上下游应用同时升级到Mesh模式 ü 基于RPC内容的流量调度 基于RPC内容的流量调度 ü 升级窗口有限,方案必须简单高效 Ø运维体系,容器化建设等方面适配 ü 蚂蚁运维架构建立在流量调度的基础上 ü 容器管理平台更替快速进行中 ØGolang 性能,成本评估符合蚂蚁实际需求2 构架SOFAMesh 1SOFAMosn 2SOFAMosn内数据流 3NET/IO 4 Ø屏蔽IO处理细节 Ø定义网络链接生命周期,事件机制 Ø定义可编程的网络模型,核心方法,监控指标 Ø定义可扩展的插件机制PROTOCOL 内存使用率提升,arena 区内存申请频率低,大小更小 üMheap 申请系统内存减少约60%内存 3 ØSLAB-style buffer pool ü减少内存 copy ü压测场景下内存复用率90% ØGolang 内存模型亲和 üP中 mcache 缓存小于 32K 的小内存块,最大 2M ü小内存分配顺序 Pmcache -> mcentral -> mheap -> arena ü大于 32K 的大内存分配顺序0 码力 | 44 页 | 4.51 MB | 6 月前3
大规模微服务架构下的Service Mesh探索之路公司和产品在社区知名度和影响力有限国内公司的选择之一:自研 华为:CES Mesher • 使用Golang编写 • 由go chassis演进而来 • 走的是已有类库->加proxy->再加 控制平面的路线 • 部分对接Istio • 细节暂时不清楚,即将开源 新浪微博:Motan Mesh • 也是使用Golang编写 • 全新实现(原有类库是基于Java) 老成持重的稳健思路:以proxy为切入口,第 没有提供和侵入式框架互通的解决方案Sofa Mesh:istio的增强扩展版 Pilot Auth Mixer Envoy Pilot Auth Mixer Golang Sidecar Istio现有架构 Sofa Mesh架构 1. 用Golang开发 Sidecar,替代Envoy 2. Mixer被部分合 并进入Sidecar 3. Pilot/Auth 做扩展和增强 Control plane plane Control plane Data plane Data plane Mixer架构设计 Architect2Golang版Sidecar Pilot Auth Golang Sidecar Mixer XDS API Mixer Service HTTP/1.1 HTTP/2 Sofa RPC ü 参照Envoy的设计 ü 实现XDS API ü 兼容Istio0 码力 | 37 页 | 7.99 MB | 6 月前3
SOFAMOSN持续演进路径及实践分享载ISTIO使用,服务各类 场景 • Rust实现 • CNCF项目,最早的 Service Mesh数据平面 • 开发活跃,最新版为 18.9.1 • Golang实现 • 新生项目,初期旨在搭建 RPC亲和,高度可扩展性 的Golang转发系统 • 开发活跃,最新版为0.4.0 • 蚂蚁+UC主导,重点搭载 SOFAMesh使用,目标服 务通用场景,金融场景SOFAMOSNSOFAMO – 长连接网关RawEpoll模式 经典Golang netpoll模型 ² 问题:协程数量与链接数量成正比,大 量链接场景下,协程数量过多 u Stack内存开销 u Read buffer开销 u Runtime调度开销 参考阅读:million-websockets-and-go Netpoll implmented in Golang runtime conn goroutine RawEpoll模式:使用epoll感知到可读事件之后,再从协程池中为其分配协程进行处理。 大幅减少goroutine实例数量,从而降低内存、调度开销 Netpoll implmented in Golang runtime conn.read conn …… 调度切换/就绪通知 3.请求处理过程中,协程调度 与经典netpoll模式一致 Raw Epoll goroutine pool0 码力 | 29 页 | 7.03 MB | 6 月前3
Service Mesh Meetup #3 深圳站参考资料:https://github.com/developer-learning/night-reading- go/blob/master/articles/sonarqube-for-golang/2018-07-22-sonarqube-for- golang.mdDrone 和 Jenkins 联调测试方法 本地即可测试 drone 上是否可以调用成功: >docker run --rm \ -e JENKINS_URL=0 码力 | 45 页 | 18.62 MB | 6 月前3
微博Service Mesh实践Meetup · BeiJing 业务部⻔门调⽤用链 微博Service Mesh实践 - WeiboMesh �5 RPC A WEB A 平台体系 RPC B WEB B Golang 服务 PHP 服务 OR服务 …… RestFul API 业务部⻔门 Motan ➢ 业务部⻔门语⾔言种类繁多 ➢ 微服务体系建设不不完善/重复 ➢ ⽹网络抖动,dns不不稳定 服务治理理Service Mesh Meetup · BeiJing 改造成本 �8 微博Service Mesh实践 - WeiboMesh Server(php/java/..) golang/php/java Registry grpc/yar/motan ➢ 语⾔言特性 ➢ 历史积累 ➢ 业务侵⼊入较⼤大,client太重 ➢ 性能 ➢ 扩展性差 ➢ 推⼴广困难0 码力 | 43 页 | 1007.85 KB | 6 月前3
蚂蚁金服网络代理演进之路https://github.com/sofastack/sofa-mosn Written in go SOFAMosn是一个云原生安全网络代理 为什么自研golang版本? 跨团队合作需要考虑技术栈落地成本 Golang性能,成本符合蚂蚁实际需求 近十年的网络代理研发,运维经验SOFAMosn模块与能力划分SOFAMosn协程模型 ü 一条TCP连接对应一个Read协程,执行收包,协议解析0 码力 | 46 页 | 19.93 MB | 6 月前3
阿里巴巴核心应用洛地 Service Mesh 的挑战与机过增加成本调用及部署成本,高于所获得 的收益,价值难以兑现。 2. 针对服务化架构并未带来新的突破,将已有功能换个 地方重复造轮子。阿里巴巴曾属于第二种原因有……重复运维,多语言支持困境 NodeJS Java C++ Golang 运维系统云原生时代快速赋能 Biz APP Non Ali Biz框架思维转向平面思维 Service Mesh Biz Non Ali Biz将中间件能力下层到基础层 业务 (Java/Go/C++0 码力 | 22 页 | 6.61 MB | 6 月前3
蚂蚁金服 API Gateway Mesh 思考与实践mobile openapi mgs15/21 可灰度 可回滚 可监控 蚂蚁金服「三板斧」 API Gateway Mesh 落地挑战 风险 运维 性能 功能 上线不是一件容易的事 Golang 历史债清理 sian->protobuf ead->goroutine sigma 已知的风险都不是风险16/21 M O S N A P P Gateway LB Spanner0 码力 | 22 页 | 1.72 MB | 6 月前3
Service Mesh 在『路口』的产品思考与实践3: 蚂蚁金服的产品实践 发展历程 全面大规模落地 2017年底开始调研并探 索 Service Mesh 技术, 并确定为未来发展方向 技术预研 01 2018年初开始用Golang 开发 Sidecar SOFAMosn, 年中开源基于 Istio 的 SOFAMesh 技术探索 02 2018年开始内部落地,第一 批场景是替代 Java 语言之外 的其他语言的客户端0 码力 | 40 页 | 15.86 MB | 6 月前3
共 9 条
- 1













