蚂蚁金服 API Gateway Mesh 思考与实践
蚂蚁金服 API Gateway Mesh 思考与实践 靳文祥(花名:贾岛) 蚂蚁金服 高级技术专家1/21 /01 /02 /03 API Gateway Mesh 的定义 蚂蚁金服 API Gateway Mesh 实践 云原生 API Gateway 的思考2/21 API Gateway Mesh 的定义 /013/21 LB\Ingress API Gateway POD Sidecar App POD Traffic Control Plane K8S Cluster API Gateway in Service Mesh4/21 API Gateway Service Mesh vs 南北流量(内外) API Gateway vs Service Mesh A infrastructure to decouple the application Service Mesh is Patterns SofaRPC API Gateway MQ Client Service Code6/21 LB\Ingress API Gateway Sidecar App POD Sidecar App POD Traffic Control Plane Cluster API Gateway Mesh An infrastructure0 码力 | 22 页 | 1.72 MB | 5 月前3Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展
Protocol Canary deployment Chaos testing User Subscription & SLA Control Plane Programmable API APP ...... Data Plane Control Layer Application Layer通过Service Mesh控制面统一管理F5和Envoy https://aspenmesh subscription & SLA to operation policy Data Plane Protocol Programmable API Data Plane Control Layer 2. APP calls control plane API to create the operation policy 3. Control plane distributes the operation 能否可以成为一个通用的接口协议? 是否会出现Envoy之外的大量数据面实现? • 建议:对xDS接口进行改进,去掉实现相关内容 Ø Service Mesh的发展 • 控制面对数据面软硬件的统一控制能力? • 通过控制面API接入各种丰富的应用场景 - 下一个热点?总体架构-高层视图 DexMesh控制面 MSB-SDClient MSB-Consul Jaeger DexMesh数据面 Pod Microservice0 码力 | 27 页 | 11.99 MB | 5 月前3进击的 Traefik | 云原生边缘路由器探秘
反向代理、负载均衡工具 • 它支持多种后台 (Docker, Swarm, Kubernetes, M arathon, Mesos, Consul, Etcd, Z ookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的 配置文件进行设置Traefik 项目 •https://github.com/containous/traefik •MIT License •Written limiting, headers, ...)Providers • Providers 可以是编排工具、容器 引擎或者 key-value 存储等等 • Traefik 通过 Providers 的 API 查 找有关路由相关信息,并动态更新 • 基于标签、key-value、注解、文 件 • Docker、Kubernetes、Marathon 、Rancher、FileEntryPoin web UI 并且告诉 Traefik 注册 Docker Provider command: --api.insecure=true --providers.docker ports: - "80:80" # HTTP 端口 - "8080:8080" # Web UI 端口(需要开启 --api.insecure) volumes: - /var/run/docker.sock:/var/run/docker0 码力 | 35 页 | 8.58 MB | 5 月前3Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?
• Adapter的运行时资源开销 • 不受Adapter增减/更新/升级影响 • 保持Proxy代码简单 • 保持Proxy代码简单 • 数据平面可替换原则 Kubernete s API Server Adapters ConfigurationsOut-of-process Adapter 7/39 Istio的新回答:架构继续优先,性能继续放一边 Part 1:Serv WebAssembly”) ● WAVM (https://github.com/WAVM/WAVM) ● V8(https://v8.dev/) ● Null Sandbox (use the API, compile directly into Envoy)支持Web Assembly扩展的Mixer v2:终极目标形态 Part 2:ServiceMesh灵魂拷问二:性能有了,架构怎么办? Data Plane API “SMI 是在 Kubernetes 上运行服务网格的规 范。它定义了由各种供应商实现的通用标准。这 使得最终用户的标准化和服务网格供应商的创新 可以两全其美。SMI 实现了灵活性和互操作 性。” “SMI API的目标是提供一组通用的,可移植的 Service Mesh API,Kubernetes用户可以以 供应商无关的方式使用这些API。通过这种方式, 可以定义使用Service0 码力 | 43 页 | 2.90 MB | 5 月前3Service Mesh结合容器云平台的思考和实践
• 流量管理 • 服务降级 • … • 微服务拆分原则 • 业务API设计 • 数据一致性保证 • 可扩展性考虑 • …Kubernetes对于微服务的支撑 功能列表 详情 快速资源分配 容器编排和调度 服务部署&弹性伸缩 Deployment 服务注册&服务发现 Service概念和分布式DNS API网关 简单路由功能 统一日志中心 Fluentd & ES 统一监控中心 Prometheus 统一配置管理 Configmap、Secret 负载均衡 简单负载均衡,基于Iptables Roundrobin 流量控制 简单根据服务实例进行控制云平台微服务演进之基于API网关的微服务方案 API网关功能增强 • 安全认证 • 流量控制 • 审计日志 • 黑白名单 • …K8S集群 云平台微服务演进之基于Spring Cloud的微服务方案 NS A Service Healing Resilience & Fault Tolerance Distributed Tracing Centralized Metrics Centralized Logging API Gateway Job Management Singleton Application Load Balancing Service Discovery Configuration Management0 码力 | 28 页 | 3.09 MB | 5 月前3大规模微服务架构下的Service Mesh探索之路
• 可扩展性有限,dtab不易理解和使用 • 功能不能满足蚂蚁的需求,没法做到 类似envoy xds那样的扩展性 • 未来发展前景黯淡 Envoy • 安心做数据平面, 提供XDS API • 设计优秀,性能和稳定性表现良好 • C++编写,和蚂蚁的技术栈差异大 • 蚂蚁有大量的扩展和定制化需求 • 我们非常认可envoy在数据平面上的表现开源方案选择之第二代Service Mesh 去掉Mixer和Auth • 定制Pilot,实现ETCD Adapter • 脱离k8s运行Sofa Mesh在技术选型时考虑 Envoy • 数据平面:Envoy最符合要求 • XDS API的设计更是令人称道 • C++带来的技术栈选择问题 • 我们有太多的扩展和定制 • 而且,proxy不仅仅用于mesh Istio • 控制平面:Istio是目前做的最好的 • 认可Istio的设计理念和产品方向 Architect2Golang版Sidecar Pilot Auth Golang Sidecar Mixer XDS API Mixer Service HTTP/1.1 HTTP/2 Sofa RPC ü 参照Envoy的设计 ü 实现XDS API ü 兼容Istio ü 支持HTTP/1.1和HTTP/2 ü 扩展Sofa/Dubbo/HSF Dubbo RPC0 码力 | 37 页 | 7.99 MB | 5 月前3Service Mesh的实践分享
JavaApp Local Proxy OSP Server Service Registry Service Config Center Remote Proxy Cluster API Gateway 备用链路 服务发现 服务注册 配置下发 服务路由 网络传输 OSP client多语言客户端接入 • HTTP & TCP • Local & Remote • 根据接入对象的不同,制定 sidecar • 注册代理 • 健康检查 • 服务端受限于Proxy支持的协 议(目前只支持HTTP 1.1) Local Proxy Web Server Service Registry API Gateway 健康检查 服务注册 Registry agent 服务发现 HTTP/JSON HTTP/JSON容器化 • Proxy Daemonset • 每台宿主机一台Proxy JavaApp Local Proxy OSP Server Service Registry Service Config Center Remote Proxy Cluster API Gateway 备用链路 服务发现 服务注册 配置下发 服务路由 网络传输 OSP client PhpApp Local Proxy OSP client Pod Local0 码力 | 30 页 | 4.80 MB | 5 月前3在Kubernetes上部署高可用的Service Mesh监控
prometheus ● Serves prometheus data through gRPC-based thanos store API Prometheus Sidecar gRPC Store API TargetsGlobal view - Querier ● Stateless, horizontally scalable Backing up is easy, how about retrieval? ● Thanos store as a data retrieval proxy. ● Implements store api as well. ● Pulling from object storage is expensive, caching is necessary.Deploy on kubernetes -0 码力 | 35 页 | 2.98 MB | 5 月前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年初上线推广 复用连接并适当设置连接数 Agent内部 • 对象池化:减少资源消耗与GC压力 • 响应等待机制:非阻塞等待 两次请求转发小于0.2ms Agent外部 • 提升服务器性能(缩减耗时绝对值) API层接口耗时增长小于6%21/24 数据平面资源占用 与业务容器共享CPU、内存资源配额 为Agent JVM分配256M内存资源 服务器消耗增加约10% 分配方式 内存资源 服务器资源0 码力 | 25 页 | 1.25 MB | 5 月前3Service Mesh 在蚂蚁金服生产级安全实践
eliminated. The sidecar Envoy is able to dynamically renew the key and certificate through the SDS API: Certificate rotations no longer require Envoy to restart.基于 Secret Discovery Service Sidecar 的证书管理方案 Service Account 支持多种Sidecar 通过Citadel Agent 获取证书使用可信身份服务构建敏感数据下发通道 背景介绍 通过应用Pod 中增加一个安全 Sidecar,以API接口的形式为APP及其他Sidecar 提供基础的身 份颁发、身份验证功能 解耦应用的业务逻辑与认证授权逻辑,减少开发量; 提供密码学安全的认证授权逻辑,提高安全性; 全网统一的认证授权方式,去凭证,减少攻击面; 下发通道 身份获取 应用 A 构造 HTTP 请求,调用 安全Sidecar 提供的 JWT-SVID 颁发接口获取 JWT-SVID。 安全Sidecar 通过 Downward API 获取 Pod 身份,并转换成 SPIFFE ID。 安全Sidecar 通过密钥将 SPIFFE ID 签发为 JWT-SVID,返回给应用 A。 应用 A 在服务调用中带上 JWT-SVID0 码力 | 19 页 | 808.60 KB | 5 月前3
共 24 条
- 1
- 2
- 3