云原生开放智能网络代理 MOSN云原生开放智能网络代理 MOSN 金融级云原生架构助推器 肖涵(涵畅) 蚂蚁金服高级技术专家 SOFAMosn 项目负责人1/10 MOSN,云原生时代的安全网络代理 Service Mesh 控制面 Galley Pilot Pod SOFA 服务 MSON Kubernetes TLS,国密 服务鉴权 Mirror Ingress Controller Pod Msg Tracing, Jaeger Prometheus, StatsD 生态融合 支持 K8s Ingress,Edge Proxy、Mesh Sidecar, Api Gateway 等多种代理 形态 多场景10/10 开源所幸,云之爆发 我们认为,未来会更多地属于那些告别大教堂、拥抱集市的人们。《大教堂与集市》感谢聆听 欢迎关注,获取最新分布式架构内容 关注服务网格,关注 ServiceMesher0 码力 | 12 页 | 1.39 MB | 6 月前3
 蚂蚁金服网络代理演进之路蚂蚁金服网络代理演进之路 肖涵(涵畅) 蚂蚁金服高级技术专家 2019.10.26 Service Mesh Meetup #7 成都站网络代理是什么? 南北流量 东西流量 Server App 负载均衡器 NAT网关 防火墙 负载均衡器 NAT网关 防火墙 负载均衡器 负载均衡器 路由器 路由器 Internet网络代理有什么? Maglev Ipvs Katran 01 2010 开始网络代理白盒 化,定制业务逻辑,软 硬件一体解决方案 自研 02 2015 年无线通道协议,安 全升级, 连接收编 All in 无线 03 PC时代 移动时代 万物互联云原生时代 2018 年协议,安全持续升 级(QUIC,MQTT,国密), 云原生 再启程 03前世 F5 BigIP Netscaler自研四层网络代理 2011 2014 2018 2018 未来 Ø 全面使用DPDK技术重构 Ø EBPF,XDP Ø 可编程交换芯片(P4语言) Ø 四层负载均衡-IPVS Ø NAT网关蚂蚁七层网络代理 Google Spanner?蚂蚁七层网络接入代理 Spanner蚂蚁七层网络接入代理 AGNA (Ant Global Network Accelarator) 网商 信用 保险 财富 支付 国际支付 小程序 微贷 科技开放 物联网0 码力 | 46 页 | 19.93 MB | 6 月前3
 Service Mesh Meetup #3 深圳站者名称我是作者名称Talk is cheap, Show me the code!• 当使用一个客户端实例和多个后端实例进行部署时,所有的调用仅 路由到单个后端实例。当部署第二个客户端时,它可能被路由到另 一个后端实例。这不是所需的那种负载均衡,因为它不允许独立地 扩展客户端和服务器。当客户端实例比服务器实例少时,一些服务 器实例将处于空闲状态,所以 Kubernetes Service 不太适合 A/B 测试、金丝雀发布、限流、 访问控制和端到端认证等。什么是 Istio • Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有 负载均衡、服务间认证、监控等功能,而不需要对服务的代码做任 何改动。 • 想要让服务支持 Istio,只需要在您的环境中部署一个特殊的 sidecar 代理,使用 Istio 控制平面功能配置和管理代理,拦截微服务之间的 所有网络通信。Istio kubernetes 上支持的不好(RPC error); • .drone.yml not .drone.yaml • Failed to activate your repository(检查网络,以及代理配置) • plugins: • drone-kubernetes, 需要将 kubernetes token base64 解码(否则报错:Unauthorized) • Jenkins •0 码力 | 45 页 | 18.62 MB | 6 月前3
 陌陌Service Mesh架构实践Java、PHP、Python、Go、NodeJs • Redis传输协议 / 复用Redis客户端 • 服务发布Proxy / 并行调用Proxy 服务治理 • 服务治理平台、配置中心 • 监控、日志、分布式跟踪 • 异步调用、压测7/24 流量代理机制 PHP服务发布入流量代理 PHP并行调用出流量代理 16年起开始使用流量代理机制解决跨语言服务治理问题8/24 分享主题:字号 分享嘉宾 发布服务数 技术储备与原则类因素 自研数据平面与 控制平面方案 使存量服务接入Mesh 方案 对接大量内部系统 关键收益均由数据平面产生 非完善的控制平面功能 技术体系内不引入Go语言 最成熟的服务端语言为Java 使用Java开发 数据平面Agent14/24 整体架构 数据平面 • 现有协议的流量转发 • Agent平滑升级机制 控制平面 • 轻量的Pilot Proxy • 向Istio的标准协议靠拢0 码力 | 25 页 | 1.25 MB | 6 月前3
 Service Mesh的实践分享基于Java语法的DSL • Zookeeper • 胖客户端 • 基本服务治理功能 App OSP Server Service Registry Service Config Center 服务发现 服务注册 服务元数据下发 OSP client 服务路由 网络传输 服务元数据上报缺点 • 语言单一 • 升级困难 • 复杂代码嵌入对客户端进程影响大服务化体系2.0 - Service Mesh雏形 Mesh雏形 • 物理机、sidecar • Local & Remote,主与备 • 轻量级客户端、本地调用 • Local Proxy负责服务治理与 远程通信 • Remote Proxy负责备份和非 主流流量 JavaApp Local Proxy OSP Server Service Registry Service Config Center Remote Proxy Thrift over TCP JSON over HTTP JSON over HTTP多语言服务端接入 • Registry Agent • sidecar • 注册代理 • 健康检查 • 服务端受限于Proxy支持的协 议(目前只支持HTTP 1.1) Local Proxy Web Server Service Registry API Gateway 健康检查0 码力 | 30 页 | 4.80 MB | 6 月前3
 Service Mesh 高可用在企业级生产中的实践注册中心容灾 服务端容灾 • 部分节点宕机 • 网络分区 客户端容灾 • 注册中心完全不可用13/总页数 注册中心 - Consul Servers Quorum Size Failure Tolerance 1 1 0 2 2 0 3 2 1 4 3 1 5 3 2 6 4 2 7 4 3 • 服务端容灾与节点数14/总页数 注册中心 - Consul • 客户端容灾 客户端缓存 客户端缓存 !15/总页数 注册中心 - Consul • 架构设计 • 多地域? • 多租户?16/总页数 通过治理策略保证服务高可用 /0317/总页数 治理策略 & 高可用 描述 N个9 可用性级别 年度停机时间 基本可用 2个9 99% 87.6小时 较高可用 3个9 99.9% 8.8小时 具备故障自动恢复 能力可用 4个9 99.99% 53分钟 极高可用 5个9 限流无非就是针对超过预期的流量,通过预先设定的限流规则选择性的对某些请 求进行限流“熔断”。22/总页数 治理策略 & 高可用 • 微服务高可用设计手段 - 服务限流 • 接入层限流 • 调用外部限流服务限流 • 切面层/代理层限流 常用限 流架构23/总页数 治理策略 & 高可用 • 微服务高可用设计手段 - 服务限流 • 拒绝策略 • 延迟处理 • 特权处理 常用限 流策略24/总页数 治理策略 & 高可用0 码力 | 38 页 | 1.38 MB | 6 月前3
 严选 ServiceMesh 实践sidecar 远远优于 VM cNginx(256并发 6.707 vs 15.771)13/24 当前演进方向 整体基于 Envoy+Istio 方案: • 数据面以 Envoy Proxy 作为代理组件 • 控制面以 Pilot 为核心组件 • 平台开放与扩展主要通过 Kubernetes CRD与Mesh Configuration Protocol(简称为 MCP,一套标准 GRPC 访问控制(如白名单能力) • 灰度引流使架构透明化 • 服务间调用灰度引流 • 外域调用灰度引流18/24 API 网关 • 整体基于 Envoy+Pilot 方案: • 数据面以 Envoy Proxy 作为代理组件 • 控制面以 Pilot 为核心组件 • 平台开放与扩展主要通过 Kubernetes CRD与Mesh Configuration Protocol(简称为 MCP,一套标准 GRPC 业务回归验证20/24 一些坑 • Envoy 目前编译版本存在 Bug • 在 Istio pilot 升级到加入 accesslog 相关配置下发功能版本后,Envoy 在一定压力访问或 有客户端主动断开请求时,会进入一段存在问题的断言(assert)逻辑,导致 envoy crash, 此时请求方体现为 502 异常 • 社区目前给出的优化建议是在 envoy 编译选项使用 -opt(默认为0 码力 | 25 页 | 2.07 MB | 6 月前3
 Service Mesh的延伸 — 论道Database Mesh数据源切换 冗余数据清 理治理监控 配置动态化 负载均衡 熔断 & 禁用 安全 & 权限 & 脱敏 APM现有实现方案对比 客户端 • 支持任意数据库 • 数据库连接数占用高 • 仅支持单一开发语言 • 性能损耗低 • 无中心化 代理端 • 仅支持单一数据库 • 数据库连接数占用低 • 支持任意开发语言 • 性能损耗高JDBC Proxy Sidecar 数据库 任意0 码力 | 35 页 | 4.56 MB | 6 月前3
 SOFAMesh的通用协议扩展透明地路由所有网络流量 • 服务治理规则,服务,实例和配置都是 Kubernetes 资源 • 使用 Controller Pattern 通过 CRD 扩展新的能力 • …MESH 落地碰到的问题 • 客户端服务发现与负载均衡无法与 ISTIO 一起工作 • ENVOY 不支持微服务使用的通信协议 • RPC 服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 作为 DNS 来寻址服务 • 开发一个通用协议处理框架 • 避免为不同的微服务框架修改 PILOT 代码 • 通过插件的方式按需支持新的协议 • 对应用代码无侵入性 • 为微服务框架提供轻量化客户端落地一个微服务框架需要的工作 • 部署 ZK 集群作为 RPC 框架的注册中心 • 开发 ZK Platform Adapter for DUBBO • 开发 DUBBO 服务的 XDS 配置下发 • OUTBOUND X-PROTOCOL Config INBOUND X-PROTOCOL Config Dubbo Plugin Dubbo Plugin分层扩展接口 解包是对 SIDECAR 代理性能影响最大的因素 多路复用是基本能力,其他能力需要在多路复用能 力上构建 协议装换能力允许使用 HTTP2 作为 SOFA-MOSN 之 间的通讯协议基于能力分层的插件化扩展框架 性能 接入成本0 码力 | 28 页 | 4.73 MB | 6 月前3
 Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展to be aware. 服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着 复杂的服务拓 扑,服务网格负责在这些拓扑中实现请求的可靠传递。 在实践中,服务网格通常实 现为一组轻量级网络代理,它们与应用程 序一起部署,但对应用程序透明。什么是Service Mesh?- by Istio 服务发现 负载均衡 流量控制 ... 黑白名单 限流 ... 身份认证 通信加密 权限控制 Match 可在一个TCP请求没有对应的TCP服务,并且端口和HTTP服务没有冲突的情况下, TCP请求会被缺省发送到原始目的地。 遗留问题: 端口冲突的情况下,TCP请求将会被丢弃,导致客户端请求失败。 长期演进方案:通过自定义Envoy Filter扩展Service Mesh对应用层协议的处理能力产品化增强:异步通信的流量管理 Service Mesh Service V1 Service0 码力 | 27 页 | 11.99 MB | 6 月前3
共 23 条
- 1
 - 2
 - 3
 













