SOFAMOSN持续演进路径及实践分享继续读取数据技术案例 – HTTP/2.0优化 官方HTTP/2.0实现问题: 1. syscall read较多,效率低下 2. 每个stream分配单独的goroutine处理, 调度开销高 3. 临时对象多,GC占比高 4. 基本实现了RFC中MUST部分,部分功 能需求上不匹配,如GRPC trailer实现技术案例 – HTTP/2.0优化 优化思路:适配MOSN框架,复用官方实现核心结构体和解析流程 MOSN<-> Service p Client模拟方式:通过蚂蚁内部压测平台建立10w条SOFARPC链接 p 压测内容: 1K 请求/响应持续演进实践总结 ü 架构上,从一开始就遵循分层设计,模块解耦,统一编程模型接口,保证足够的架 构扩展性。 ü 性能上,针对IO、协议、内存、协程进行持续优化。相比最初版本,SOFARPC 协 议上对 0.1.0 版本 QPS 提升了 50%,内存使用减少了 40%;HTTP/20 码力 | 29 页 | 7.03 MB | 6 月前3
大规模微服务架构下的Service Mesh探索之路C++编写,和蚂蚁的技术栈差异大 • 蚂蚁有大量的扩展和定制化需求 • 我们非常认可envoy在数据平面上的表现开源方案选择之第二代Service Mesh Istio • 第一选择,重点关注对象 • 奈何迟迟不能发布生产可用版本 • 性能和稳定性远远不能满足蚂蚁的 要求 • 但我们非常认可Istio的理念和方向 Conduit • 只支持k8s,而蚂蚁尚未普及k8s • 数据平面由Rust编写,过于小众,难于 也是使用Golang编写 • 全新实现(原有类库是基于Java) 老成持重的稳健思路:以proxy为切入口,第 一时间获取跨语言和技术栈下沉的红利,立足 之后再缓缓图之。 这个产品思路唯一的麻烦在于编程语言的选择国内公司的选择之二:开源方案定制 腾讯:Tencent Service Mesh • 数据平面选择Envoy:成熟产品,符合 腾讯语言体系,内部广泛使用 • 控制平面据传“挣扎了一下”,最终还0 码力 | 37 页 | 7.99 MB | 6 月前3
蚂蚁金服Service Mesh渐进式迁移方案客户端应该尽可能的轻薄通用: 实现简单,方便跨语言,减少升级可能 最简单,最通用,支持最广 泛的寻址方式方式是什么? 基于服务 发现的寻 址方式ü DNS寻址 • 支持度最好,使用最普遍 • 所有编程语言/平台都支持的 ü 产品的长期方向 • SOFAMesh和SOFAMosn中已经基于x-protocol实现了DNS通用寻址方式 • 为了兼容RPC应用和k8s(微服务)的服务注册模型,需要为每个RPC接口提供DNS支持 htmlCoreDNS 的记录更新CoreDNS 的记录更新CoreDNS 的记录更新CoreDNS 的Plugins https://coredns.io/pluginsCoreDNS 的性能 序号 对象 并发 QPS 总数 命中率/超时数 1 同机房 10 43899 2001674 (100%)|0 2 同机房 50 44369 2001674 (100%)|0 3 同机房 100 408150 码力 | 40 页 | 11.13 MB | 6 月前3
Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展Mesh 主要为7层 SDN对Service Mesh发展的启发: Ø 北向接口 • 面向业务和运维 • 具有较高的抽象层次,比较容易提取统一的控制面标准? • 主要面向layer 7及以上? • SMI能否统一控制面标准?如何避免成为最小公分母,扩展支持其它协议? Ø 南向接口 • 面向流量和路由配置 • xDS v2将统一数据面标准? • xDS接口包含有较多实现相关内容:Listener0 码力 | 27 页 | 11.99 MB | 6 月前3
金融级云原生 PaaS 探索与实践机房 生命周期 • 运维效率 大规模下基础设施稳定性 • 业务 Mesh 化 精细化流量控制 基础组件升级 • 业务可复制 业务敏捷 SaaS 面向站点级别输出7/20 PaaS 能力 • 面向多租户多环境; • 基础资源管控; • 应用发布运维体系; • 业务实时监控,日志收集; • 机房级和地域级容灾能力; 业务背景业务背景 CAFÉ API Server0 码力 | 20 页 | 1.71 MB | 6 月前3
蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘ØGolang 性能,成本评估符合蚂蚁实际需求2 构架SOFAMesh 1SOFAMosn 2SOFAMosn内数据流 3NET/IO 4 Ø屏蔽IO处理细节 Ø定义网络链接生命周期,事件机制 Ø定义可编程的网络模型,核心方法,监控指标 Ø定义可扩展的插件机制PROTOCOL 5 Ø定义编解码核心数据结构 üMesh处理三段式:Headers + Data + Trailers Ø定义协议Codec核心接口 送数据 ü解码:对IO数据进行解码并通过扩展机制通知订阅方 •定义扩展机制通知解码事件STREAMING 6 Ø定义Stream模型 ü 向上确保协议行为一致性 ü 为网络协议请求/响应提供可编程的抽象载体 ü 考虑PING-PONG,PIPELINE,分帧STREAM三种典型流程特征 Ø定义Stream生命周期,核心事件 Ø定义Stream层编/解码核心接口 ü 核心数据结构复用Protocol层 Writer Pool send encode Q u e u e C模块划分 11要点总结 12 Ø模块化,分层解耦 Ø统一的编程模型接口 Ø可扩展的事件驱动模型 Ø可扩展的路由/后端管理机制 Ø更好的吞吐量3 能力核心能力 1 网络处理 •网络编程接口 •链接管理 •事件机制 •Metrics 收集 •TCP 代理 •TLS 支持 •TProxy 支持 •平滑 reload0 码力 | 44 页 | 4.51 MB | 6 月前3
Service Mesh的延伸 — 论道Database Mesh之论道Database Mesh 分享人:张亮 日期:2018年07月25日Service Mesh风头正劲Service Mesh产品多样化Service Mesh的优势 云原生 零入侵 可观察性 面向运维服务化之后,数据库怎么办? 服务 • 无状态 • 根据规则路由 • 业务方处理事务 数据库 • 有状态 • 根据SQL路由 • 数据库自动处理事务数据库的进化趋势 • SQL0 码力 | 35 页 | 4.56 MB | 6 月前3
Service Mesh结合容器云平台的思考和实践分生成。其中init方法为pilot-agent二进制的命令行配置大 量的flag与flag默认值,而proxy命令处理流程的前半部分负责将这些flag组装成为envoy的配置ProxyConfig对象。下面分析几个相对重 要的配置。 role pilot-agent的role类型为model包下的Proxy,决定了pilot-agent的“角色”,role包括以下属性: 1.Type pilo envoy二进制所在文件系统路径:evony.Run通过proxy.config.BinaryPath变量得知envoy二进制所在的文件 系统位置,proxy就是envoy对象,config就是pilot-agent的main方法在一开始初始化的proxyConfig对象。里面 的BinaryPath在pilot-agent的init方法中被初始化,初始值来自pilot/pkg/model/context.go的 De t还要负责envoy进程的监控与管理工作,包括: 1. 创建envoy对象,结构体包含proxyConfig(前面步骤中为envoy生成的配置信息),role.serviceNode(似乎 是agent唯一标识符),loglevel和pilotsan(service account name)。 2. 创建agent对象,包含前面创建的envoy结构体,一个epochs的map,3个channel:configCh0 码力 | 28 页 | 3.09 MB | 6 月前3
蚂蚁金服网络代理演进之路级(QUIC,MQTT,国密), 云原生 再启程 03前世 F5 BigIP Netscaler自研四层网络代理 2011 2014 2018 未来 Ø 全面使用DPDK技术重构 Ø EBPF,XDP Ø 可编程交换芯片(P4语言) Ø 四层负载均衡-IPVS Ø NAT网关蚂蚁七层网络代理 Google Spanner?蚂蚁七层网络接入代理 Spanner蚂蚁七层网络接入代理 AGNA (Ant0 码力 | 46 页 | 19.93 MB | 6 月前3
Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?紧凑的二进制格式,可以接近原生的性能运行,并为诸如C / C ++等语言提供一个编译目标,以便它们可以 在Web上运行。它也被设计为可以与JavaScript共存,允许两者一起工作。 WebAssembly不是一门编程语言,而是一份字节码标准。 WebAssembly字节码是一种抹平了不同CPU架构的机器码, WebAssembly字节码不能直接在任何一种CPU架构上运行, 但由于非常接近机器码,可以非常快的被翻译为对应架构0 码力 | 43 页 | 2.90 MB | 6 月前3
共 15 条
- 1
- 2













