蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘trust网络安全趋势 异构语言体系融合 • SOFA/NodeJS/C++/Python/.. • 业务低成本融入服务,运维体系 ## 为什么要自研Golang版本ServiceMesh ➢跨团队协作需要考虑技术栈落地成本 ✓ 参与团队分别使用C,Golang,Java等多种技术栈 ➢基于蚂蚁SOFA体系的Mesh化思考 ✓ 无法保证上下游应用同时升级到Mesh模式 ✓ 基于RPC内容的流量调度 基于RPC内容的流量调度 ✓ 升级窗口有限,方案必须简单高效 ➢运维体系,容器化建设等方面适配 ✓ 蚂蚁运维架构建立在流量调度的基础上 ✓ 容器管理平台更替快速进行中 ➢Golang 性能,成本评估符合蚂蚁实际需求 ## 构架 ## SOFAMesh  9715542feda4c42f4b6ce8/p27_2.jpg) ## 内存 SLAB-style buffer pool ✓ 减少内存 copy ✓ 压测场景下内存复用率90% ➢Golang 内存模型亲和 ✓P中 mcache 缓存小于 32K 的小内存块,最大 2M ✓小内存分配顺序 Pmcache -> mcentral -> mheap -> arena0 码力 | 44 页 | 4.51 MB | 1 年前3
蚂蚁金服网络代理演进之路## SOFAMasn https://github.com/sofastack/sofa-mosn Written in go SOFAMosn是一个云原生安全网络代理 ## 为什么自研golang版本?   跨团队合作需要考虑技术栈落地成本 Golang性能,成本符合蚂蚁实际需求 近十年的网络代理研发,运维经验 ## SOFAMosn模块与能力划分 Starter Server Proxy Stream Controller Cloud0 码力 | 46 页 | 19.93 MB | 1 年前3
大规模微服务架构下的Service Mesh探索之路[Image](/uploads/documents/6/9/f/6/69f6717919f13a639709d8c2d7dd5f55/p8_1.jpg) 华为:CES Mesher · 使用Golang编写 · 由 go chassis 演进而来 - 走的是已有类库->加proxy->再加控制平面的路线 ·部分对接Istio · 细节暂时不清楚,即将开源 ![Image] [Image](/uploads/documents/6/9/f/6/69f6717919f13a639709d8c2d7dd5f55/p8_3.jpg) 新浪微博:Motan Mesh ·也是使用Golang编写 ·全新实现(原有类库是基于Java) 老成持重的稳健思路:以proxy为切入口,第一时间获取跨语言和技术栈下沉的红利,立足之后再缓缓图之。 这个产品思路唯一的麻烦在于编程语言的选择 ## Mixer Auth Envoy Data plane Data plane Golang Sidecar Mixer 1. 用Golang开发Sidecar,替代Envoy 2. Mixer 被部分合并进入 Sidecar 架构设计 2 Architect ## Golang版Sidecar ✓ 参照Envoy的设计 ✓ 实现XDS API ✓ 兼容Istio0 码力 | 37 页 | 7.99 MB | 1 年前3
SOFAMOSN持续演进路径及实践分享载ISTIO使用,服务各类场景 • Rust实现 • CNCF项目,最早的Service Mesh数据平面 • 开发活跃,最新版为18.9.1 • Golang实现 新生项目,初期旨在搭建RPC亲和,高度可扩展性的Golang转发系统 • 开发活跃,最新版为0.4.0 - 蚂蚁+UC主导,重点搭载SOFAMesh使用,目标服务通用场景,金融场景 ## SOFAMOSN HTTP/1 HTTP/1.1 HTTP/2 SOFA RPC Dubbo RPC HSF RPC MOSN a sidecar implemented in Go golang XDS API Mixer Service Pilot ↓ Mixer Citadel Control Plane API ## SOFAMOSN内部模块设计  goroutine conn.read 调度切换/就绪通知 Netpoll implemented in Golang runtime0 码力 | 29 页 | 7.03 MB | 1 年前3
Service Mesh Meetup #3 深圳站setup: image: docker:git commands: - git clone xxx xxx build: image: golang:1.10.3 commands: - go get - go test ... - GOARCH=amd64 CGO_ENABLED=0 GOOS=linux go build build_image: 参考资料:https://github.com/developer-learning/night-reading-go/blob/master/articles/sonarqube-for-golang/2018-07-22-sonarqube-for-golang.md ## Drone 和 Jenkins 联调测试方法 本地即可测试 drone 上是否可以调用成功: >docker run --rm \ -e0 码力 | 45 页 | 18.62 MB | 1 年前3
微博Service Mesh实践[Image](/uploads/documents/3/f/9/1/3f919351e88389811ca804a10272f5d0/p4_1.jpg) ## 业务部门调用链 ## 业务部门 Golang 服务 PHP 服务 WEB A RPC A WEB B Motan RPC B 平台体系 OR服务 ## 4 ,7层调度 业务部门语言种类繁多 微服务体系建设不完善/重复 改造成本 • 服务治理 ## 改造成本 Server(php/java/...) Register Registry grpc/yar/motan Subscribe Notify golang/php/java 语言特性 > 历史积累 业务侵入较大,client太重 性能 扩展性差 推广困难 ## 服务治理 ## 相同的治理功能,不同语言的服务都要做一遍? 快速失败0 码力 | 43 页 | 1007.85 KB | 1 年前3
蚂蚁金服 API Gateway Mesh 思考与实践Router Cluster Based on MOSN Module 已知的风险都不是风险 sigma sian->protobuf ead->goroutine 风险 Golang 历史债清理 运维 性能 功能 上线不是一件容易的事 ## 可灰度 ## 可监控 可回滚 蚂蚁金服「三板斧 












