Service Mesh的实践分享• 接入简单 • 保证性能 • 节省资源 Java App Local Proxy OSP Server Remote Proxy Cluster Thrift over TCP PHP App C/C++/Node JS App Thrift over TCP Thrift over TCP JSON over HTTP JSON over HTTP多语言服务端接入 Daemonset(云) Cluster(HTTP) 接入难度 容易。打入依赖包即可 容易。需依赖SDK 容易。需依赖SDK 编码难度 容易。IDL接口规范 容易。IDL接口规范 难。需要自行处理HTTP请求和 响应(目前还没有生成HTTP sdk) 应用侵入性 侵入性大。复杂客户端会给 应用造成负担,包括资源占 用、依赖冲突等等 侵入性小。SDK只有简单的寻址和序列化/ 反序列化的功能 需要花费很大力气进行迁移和替换PHP Thrift效率低 • 数量众多PHP应用,开发php-sdk over thrift • 在客户端进行序列化,减少一次协议转 换的消耗 • 与Java应用在架构上呼应,保持架构的一 致性 • 然而,实际上PHP Thrift效率低比内置 的HTTP模块慢得多 • 性能消耗比JSON转Thrift还要大 • 最终废弃了PHP Thrift模块,直接使用0 码力 | 30 页 | 4.80 MB | 6 月前3
陌陌Service Mesh架构实践微服务体系演进历程 架构痛点与解决思路 Service Mesh落地方案3/24 背景 /01 陌陌微服务体系演进历程4/24 单体应用到微服务 单体应用 微服务架构 应用拆分 加入PHP API层 PHP API层成为后续多语言服务治理的关键挑战5/24 微服务体系演进 MOA 1.0微服务体系演进历程 自研服务框架产品MOA(Momo service Oriented Architecture)于2013年初上线推广 • 中心化存活检测 多语言支持 • Java、PHP、Python、Go、NodeJs • Redis传输协议 / 复用Redis客户端 • 服务发布Proxy / 并行调用Proxy 服务治理 • 服务治理平台、配置中心 • 监控、日志、分布式跟踪 • 异步调用、压测7/24 流量代理机制 PHP服务发布入流量代理 PHP并行调用出流量代理 16年起开始使用流量代理机制解决跨语言服务治理问题8/24 服务器配置的最坏情况 实际需预留 600M内存22/24 数据平面兼容原有架构 对接原有系统 • 使用原有系统SDK、私有协议 直连访问 兼容未升级服务 • Proxy Agent支持以原有通信 协议处理请求、发起调用23/24 总结与展望 实践感悟 • Service Mesh通过一种全新的架构理念,系统地解决了微服务领域的关键架构痛点 • 是否应用Service Mesh架构以及如何选择0 码力 | 25 页 | 1.25 MB | 6 月前3
Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展deployed alongside application code, without the application needing to be aware. 服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着 复杂的服务拓 扑,服务网格负责在这些拓扑中实现请求的可靠传递。 在实践中,服务网格通常实 现为一组轻量级网络代理,它们与应用程 序一起部署,但对应用程序透明。什么是Service 1产品化增强-TCP Service的处理 是否需要将TCP Service纳入Service Mesh管控? l 收益 Ø TCP Service可以享受流量管理,可见性,策略控制等Istio承诺的益处 l 成本 Ø Istio不理解TCP上的应用层协议,其对TCP Service的缺省处理会影响应用层逻 辑 -例子:Envoy的LB算法不能处理应用后端集群的Sharding Ø Istio中和HTTP Shard A Shard B Shard C client 一致性哈希 client client产品化增强-TCP Service的处理 在Service Mesh中 Bypass TCP流量,让TCP请求跳过Service Mesh的处理,缺省发送到原 始请求目的地。 l 方案一:通过IPtables bypass TCP流量 通过IP段或者端口范围区分HTTP和其他TCP流量0 码力 | 27 页 | 11.99 MB | 6 月前3
SOFAMOSN持续演进路径及实践分享每个stream分配单独的goroutine处理, 调度开销高 3. 临时对象多,GC占比高 4. 基本实现了RFC中MUST部分,部分功 能需求上不匹配,如GRPC trailer实现技术案例 – HTTP/2.0优化 优化思路:适配MOSN框架,复用官方实现核心结构体和解析流程 Ø 框架适配 ü IO框架 ü 内存复用框架 ü workerpool协程池框架 Ø 功能支持 ü 请求流式处理模式 ü 热升级 ü 长连接网关RawEpoll模式 RawEpoll模式:使用epoll感知到可读事件之后,再从协程池中为其分配协程进行处理。 大幅减少goroutine实例数量,从而降低内存、调度开销 Netpoll implmented in Golang runtime conn.read conn …… 调度切换/就绪通知 3.请求处理过程中,协程调度 与经典netpoll模式一致 Raw Epoll goroutine pool 可读事件监听;并且此时不允许有协 程调用conn.read,避免与runtime netpoll冲突。 2. 可读事件达到,从gorotine pool挑 选一个协程进行读事件处理;由于使 用的是oneshot模式,该fd后续可读 事件不会再触发。 …… 4. 请求处理完成,将协程归还给协程池;同时将fd重新 添加到RawEpoll中技术案例 – 长连接网关RawEpoll模式 场景 QPS MEM(K) CPU(%)0 码力 | 29 页 | 7.03 MB | 6 月前3
蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘性能,成本评估符合蚂蚁实际需求2 构架SOFAMesh 1SOFAMosn 2SOFAMosn内数据流 3NET/IO 4 Ø屏蔽IO处理细节 Ø定义网络链接生命周期,事件机制 Ø定义可编程的网络模型,核心方法,监控指标 Ø定义可扩展的插件机制PROTOCOL 5 Ø定义编解码核心数据结构 üMesh处理三段式:Headers + Data + Trailers Ø定义协议Codec核心接口 ü编码:对请求数据进行编码并根据控制指令发送数据 征 Ø定义Stream生命周期,核心事件 Ø定义Stream层编/解码核心接口 ü 核心数据结构复用Protocol层 Ø定义可扩展的插件机制 Ø对于满足请求Stream池化的需求 Ø需处理上层传入的状态事件PROXY 7 Ø基于Stream抽象提供多协议转发能力 Ø执行Stream扩展Filters Ø提供可扩展的路由寻址能力 Ø提供可扩展的后端管理,负载均衡,健康检查能力 Ø维护上/下游核心指标转发流程 Q u e u e C模块划分 11要点总结 12 Ø模块化,分层解耦 Ø统一的编程模型接口 Ø可扩展的事件驱动模型 Ø可扩展的路由/后端管理机制 Ø更好的吞吐量3 能力核心能力 1 网络处理 •网络编程接口 •链接管理 •事件机制 •Metrics 收集 •TCP 代理 •TLS 支持 •TProxy 支持 •平滑 reload •平滑版本升级 多协议 •SOFA0 码力 | 44 页 | 4.51 MB | 6 月前3
Service Mesh结合容器云平台的思考和实践Envoy • 服务发现 • Envoy生命周期管理 • Envoy配置下发 • 服务模型 • 配置模型 • 负载均衡 • 智能路由(灰度、蓝绿) • 流量管理(超时、重试、熔断) • 故障处理 • 故障注入 • … Mixer • 前提条件检查:安全认证,黑白名单, ACL检查 • 限流管理 • 遥测报告:日志监控 控制平面 数据平面 Istio-Auth • 服务间认证 RETURNPilot-Agent主要功能分析-生产Envoy配置 envoy的配置主要在pilot-agent的init方法与proxy命令处理流程的前半部分生成。其中init方法为pilot-agent二进制的命令行配置大 量的flag与flag默认值,而proxy命令处理流程的前半部分负责将这些flag组装成为envoy的配置ProxyConfig对象。下面分析几个相对重 要的配置。 role pi registry)类型的不同,会采用不同的配置方式。agent当前使用的具体service registry类型保存在 pilot-agent的registry变量里,在init函数中初始化为默认值Kubernetes。当前只处理以下三种情况: • Kubernetes • Consul • OtherPilot-Agent主要功能分析-生产Envoy配置 registry值 role.IPAddress role.ID0 码力 | 28 页 | 3.09 MB | 6 月前3
微博Service Mesh实践BeiJing 业务部⻔门调⽤用链 微博Service Mesh实践 - WeiboMesh �5 RPC A WEB A 平台体系 RPC B WEB B Golang 服务 PHP 服务 OR服务 …… RestFul API 业务部⻔门 Motan ➢ 业务部⻔门语⾔言种类繁多 ➢ 微服务体系建设不不完善/重复 ➢ ⽹网络抖动,dns不不稳定 ➢ 4,7层冗⻓长调⽤用链及资源消耗 改造成本 • 服务治理理Service Mesh Meetup · BeiJing 改造成本 �8 微博Service Mesh实践 - WeiboMesh Server(php/java/..) golang/php/java Registry grpc/yar/motan ➢ 语⾔言特性 ➢ 历史积累 ➢ 业务侵⼊入较⼤大,client太重 ➢ 性能 ➢ 扩展性差 ➢ 推⼴广困难 1:agent_port/service=path?group=groupService Mesh Meetup · BeiJing 正向代理理流程 �29 微博Service Mesh实践 - WeiboMesh php/OR/java Client Weibo Mesh register Filter HA+LB Endpoint Cluster degrade0 码力 | 43 页 | 1007.85 KB | 6 月前3
Service Mesh的延伸 — 论道Database MeshMesh产品多样化Service Mesh的优势 云原生 零入侵 可观察性 面向运维服务化之后,数据库怎么办? 服务 • 无状态 • 根据规则路由 • 业务方处理事务 数据库 • 有状态 • 根据SQL路由 • 数据库自动处理事务数据库的进化趋势 • SQL • ACID • 分布式 RDBMS • SQL • BASE ACID • 分布式 NoSQL • SQL0 码力 | 35 页 | 4.56 MB | 6 月前3
进击的 Traefik | 云原生边缘路由器探秘基于标签、key-value、注解、文 件 • Docker、Kubernetes、Marathon 、Rancher、FileEntryPointsRouters匹配器Services • Services 负责配置最终处理传入请求 的实际服务。 • 负载均衡(针对应用实例):轮询( 目前支持)、session 亲和性 • 带权重的轮询:仅可用于在 Service 之间,并且目前只支持 File Provider ProviderMiddlewares配置 • 静态配置:Traefik 启动时的 配置,Provider 连接信息、要 监听的 EntryPoints,通过配置 文件、命令行参数、环境变量 定义 • 动态配置:Traefik 处理请求 的所有配置,证书、路由、服 务、中间件等,动态改变、无 缝更新1 Traefik 介绍 2 Traefik 2.0 核心概念 3 Traefik With Docker 4 Traefik0 码力 | 35 页 | 8.58 MB | 6 月前3
Service Mesh 高可用在企业级生产中的实践• 接入层限流 • 调用外部限流服务限流 • 切面层/代理层限流 常用限 流架构23/总页数 治理策略 & 高可用 • 微服务高可用设计手段 - 服务限流 • 拒绝策略 • 延迟处理 • 特权处理 常用限 流策略24/总页数 治理策略 & 高可用 • 微服务高可用设计手段 - 服务限流 • 固定、滑动时间窗口限流 • 适合微服务接口 • 选定的时间粒度上限流 • 令牌桶、漏桶限流0 码力 | 38 页 | 1.38 MB | 6 月前3
共 16 条
- 1
- 2













