Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?这些包括“metrics”,“logentry”,“tracepan”等。这些抽 象与后端想要消费的数据不匹配,导致运维需要编写一些手动配置, 以便在规范的 Istio 样式和后端特定的样式之间进行映射。原本期望 这种映射可以在适配器中实现很大程度上的自动化,但是最终还是 太复杂并需要手动配置。如果要性能,该怎么做? Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Proxy Mixer com/envoyproxy/envoy-wasm +Web Assembly介绍 Part 2:ServiceMesh灵魂拷问二:性能有了,架构怎么办? Mozilla官方定义: WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有 紧凑的二进制格式,可以接近原生的性能运行,并为诸如C / C ++等语言提供一个编译目标,以便它们可以 在Web上运行。它也被 duction/)使用Web Assembly扩展Envoy的好处 Part 2:ServiceMesh灵魂拷问二:性能有了,架构怎么办? • 避免修改Envoy • 避免网络远程调用(check & report) • 通过动态装载(重载)来避免重启envoy • 隔离性 • 实时A/B测试 (内容来自”Extending Envoy with WebAssembly”)Envoy支持Web0 码力 | 43 页 | 2.90 MB | 6 月前3
蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘标 Ø定义可扩展的插件机制PROTOCOL 5 Ø定义编解码核心数据结构 üMesh处理三段式:Headers + Data + Trailers Ø定义协议Codec核心接口 ü编码:对请求数据进行编码并根据控制指令发送数据 ü解码:对IO数据进行解码并通过扩展机制通知订阅方 •定义扩展机制通知解码事件STREAMING 6 Ø定义Stream模型 ü 向上确保协议行为一致性 ü 的小内存块,最大 2M ü小内存分配顺序 Pmcache -> mcentral -> mheap -> arena ü大于 32K 的大内存分配顺序 mheap -> arena ØGC 优化 ü避免入堆 ü减少内存 copy ü内存使用整体化,降低 scanobject 成本 ü使用 GC 亲和的数据结构 ü适度使用 sync.Pool ü…IO 4 Ø优化 ü尽可能多读,同时减少SetReadDeadline频繁调用,实现见 会造成写效率下降 Ø均衡 ü读写均衡是高吞吐量的保证 ü大量读/写会增加系统时间消耗, runtime 调度成本IO Bad Case 5调度均衡 6 Ø池化:避免 runtime.morestack 连续栈扩容性能损耗 Ø单核:避免G饥饿 Ø多核:避免P饥饿单核TCP转发 7 Ø环境 ü独占CPU容器 üCPU: Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz X0 码力 | 44 页 | 4.51 MB | 6 月前3
蚂蚁金服网络代理演进之路保证防重放攻击,因此要求应 用程序自己保证防重放攻击 Small Ticket • 自定义Session Ticket编码格式 • 160 byte -> 76 byte • Session Ticket扩展 用于会话复用,加速握手过程 • Cached-info扩展 缓存证书等服务端信息,避免 再次握手时重复传输数据 • ECDHE-keyshare扩展 将TLS1.3草案中的1-RTT机制通 过扩展的方式提前应用0 码力 | 46 页 | 19.93 MB | 6 月前3
Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展SDN对Service Mesh发展的启发: Ø 北向接口 • 面向业务和运维 • 具有较高的抽象层次,比较容易提取统一的控制面标准? • 主要面向layer 7及以上? • SMI能否统一控制面标准?如何避免成为最小公分母,扩展支持其它协议? Ø 南向接口 • 面向流量和路由配置 • xDS v2将统一数据面标准? • xDS接口包含有较多实现相关内容:Listener, Filter, 能否可以成为一个通用的接口协议? Mesh:统一的微服务通信管理 • 服务发现 • 负载均衡 • 重试,断路器 • 故障注入 • 分布式调用跟踪 • Metrics 收集产品化增强-支持多网络平面 电信系统一般会有多个网络平面的,主要原因包括:避免不同功能的网络之间的 相互影响; 网络设计冗余,增强系统网络的健壮性; 为不同的网络提供不同的 SLA ;通过网络隔离提高安全性;通过叠加多个网络增加系统带宽 上图中的Kubernets集群使用了 -例子:Envoy的LB算法不能处理应用后端集群的Sharding Ø Istio中和HTTP Service 端口冲突会的TCP Service请求会被Envoy直接丢弃 - 要求对应用进行改造,避免端口冲突 建议 Ø 将TCP纳入Service Mesh管控还不成熟,成本远大于收益 Ø Service Mesh应主要关注L7,而不是L4 Shard A Shard B Shard C0 码力 | 27 页 | 11.99 MB | 6 月前3
Service Mesh的实践分享mesh vs. cluster 胖客户端 Sidecar(物理机) Daemonset(云) Cluster(HTTP) 接入难度 容易。打入依赖包即可 容易。需依赖SDK 容易。需依赖SDK 编码难度 容易。IDL接口规范 容易。IDL接口规范 难。需要自行处理HTTP请求和 响应(目前还没有生成HTTP sdk) 应用侵入性 侵入性大。复杂客户端会给 应用造成负担,包括资源占 用、依赖冲突等等0 码力 | 30 页 | 4.80 MB | 6 月前3
Service Mesh 高可用在企业级生产中的实践实例级别+方法级别 半开状态 不支持 支持 最大熔断比例 支持 不支持 fallback 不支持 支持32/总页数 治理策略 & 高可用 • 微服务高可用设计手段 - 熔断 • 自动熔断 vs 手动熔断 • Fail-fast vs Fallback 常用熔 断用法33/总页数 治理策略 & 高可用 • 微服务高可用设计手段 • 负载均衡 • 随机 (Random) • 轮询 (RoundRobin)0 码力 | 38 页 | 1.38 MB | 6 月前3
深入 Kubernetes 的无人区-蚂蚁金服双十一的调度系统aggregate-apiserver 进行扩展 • CRD 必须 Namespaced scope,以控制影响范围 • MutatingWebhook + 资源 Update 操作会给运行时环境带来不可控破坏,尽量避免使用这种组合 • 任何 controllers 都应该使用 informers,并且对写操作配置合理限流 • DaemonSet 非常高阶,尽量不要采用这类设计,如果必需请在 Kubernetes0 码力 | 19 页 | 2.18 MB | 6 月前3
金融级云原生 PaaS 探索与实践partition:5 InPlaceSetControlle r replica:519/20 技术风险管控 Operator变更三板斧 发布运维体系 可灰度: • Controller 发布避免 0-1; 可回滚: • 回滚到基线版本; • 快速止血,停止新版本调和; 可监控: • metrics 指标(任务队列|消费&重 试情况|吞吐量&错误);0 码力 | 20 页 | 1.71 MB | 6 月前3
SOFAMesh的通用协议扩展协议支持SOFA MESH 的统一解决方案 • 采用 Kubernetes Native 方式落地微服务应用 • 使用 INTERFACE 作为 DNS 来寻址服务 • 开发一个通用协议处理框架 • 避免为不同的微服务框架修改 PILOT 代码 • 通过插件的方式按需支持新的协议 • 对应用代码无侵入性 • 为微服务框架提供轻量化客户端落地一个微服务框架需要的工作 • 部署 ZK 集群作为 RPC0 码力 | 28 页 | 4.73 MB | 6 月前3
SOFAMOSN持续演进路径及实践分享Raw Epoll goroutine pool conn.read conn 1. 链接建立后,向epoll注册oneshot 可读事件监听;并且此时不允许有协 程调用conn.read,避免与runtime netpoll冲突。 2. 可读事件达到,从gorotine pool挑 选一个协程进行读事件处理;由于使 用的是oneshot模式,该fd后续可读 事件不会再触发。 …… 40 码力 | 29 页 | 7.03 MB | 6 月前3
共 11 条
- 1
- 2













