蚂蚁金服Service Mesh渐进式迁移方案
Service Mesh Meetup #4 上海站 蚂蚁金服Service Mesh 渐进式迁移方案 2018.11.25 敖小剑 @ 蚂蚁金服 中间件 龙轼 @UC 基础研发部1 Service Mesh演进路线 1 2 实现平滑迁移的关键 3 DNS寻址方案的演进 4 5 总结 DNS寻址方案的后续规划ü 对未来长期目标的认可 • Service Mesh(带控制平面,如Istio) 序列化 链路追踪 故障注入 日志 监控 Metrics 熔断 限流 服务降级 前置条件检查 身份认证 密钥管理 访问控制 …… 下沉到 Service Mesh 轻量级客户端 传统 侵入式 客户端 客户端应该尽可能的轻薄通用: 实现简单,方便跨语言,减少升级可能 最简单,最通用,支持最广 泛的寻址方式方式是什么? 基于服务 发现的寻 址方式ü DNS寻址 • 支持度最好,使用最普遍0 码力 | 40 页 | 11.13 MB | 5 月前3Service Mesh结合容器云平台的思考和实践
可扩展性考虑 • …Kubernetes对于微服务的支撑 功能列表 详情 快速资源分配 容器编排和调度 服务部署&弹性伸缩 Deployment 服务注册&服务发现 Service概念和分布式DNS API网关 简单路由功能 统一日志中心 Fluentd & ES 统一监控中心 Prometheus 统一配置管理 Configmap、Secret 负载均衡 简单负载均衡,基于Iptables pter)。 • Pilot 翻译过来是领航员,Pliot对Envoy的生命周期进行管理,同时提供了智能路由(如A/B测试、金丝雀部 署)、流量管理(超时、重试、熔断)功能。Pliot接收用户指定的高级路由规则配置,转换成Envoy的 配置,使这些规则生效。 • Istio-Auth 服务间认证和终端用户认证功能Istio的Pilot功能解析Pilot官方架构Istio – EnvoyP al/bin/envoy。 2. envoy的启动参数形式为下面的startupArgs,包含一个-c指定的配置文件,还有一些命令行参数。除了下面 代码片段中展示的这些参数,还可以根据agent启动参数,再加上--concurrency, --service-zone等参数。 而上面的-c指定的envoy配置文件有几种生成的方式: 1.运 行 pilot-agent 时 , 用 户 不 指 定 customConfigFile0 码力 | 28 页 | 3.09 MB | 5 月前3Service Mesh 在蚂蚁金服生产级安全实践
SourceLabel 和 Sidecar CRD 的设计思路,创造性提出具备“正交”组合能力的ScopeConfig 方 案 ScopeConfig 方案是通过label selector 能力选择指定范围内(批量 or 单实例)的Pod 实例,同时关 联社区现有CRD,从而实现保留在兼容社区CRD设计方面的灵活性,又能实现任意CRD的更细粒度控 制能力 以TLS 开关为例,在发布TLS开关时,先提交 的Selector 范围,实现功能的灰度上线能力Service Mesh Sidecar 的TLS 生产级落地实践 灰度控制关注 ServiceMesher 微信公众号 获取社区最新信息 关注 金融级分布式架构 微信公众号 获取 SOFAStack 最新信息 ServiceMesher 社区是由一群拥有相同价值观和理念的志愿者们共同发起, 于 2018 年 4 月正式成立,致力于成为 Service0 码力 | 19 页 | 808.60 KB | 5 月前3蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘
3NET/IO 4 Ø屏蔽IO处理细节 Ø定义网络链接生命周期,事件机制 Ø定义可编程的网络模型,核心方法,监控指标 Ø定义可扩展的插件机制PROTOCOL 5 Ø定义编解码核心数据结构 üMesh处理三段式:Headers + Data + Trailers Ø定义协议Codec核心接口 ü编码:对请求数据进行编码并根据控制指令发送数据 ü解码:对IO数据进行解码并通过扩展机制通知订阅方 •定义扩展机制通知解码事件STREAMING •基础负载均衡算法 •主动健康检查 •Subset 负载策略Highlights 2 ØX-Protocol: 支持 RPC on HTTP2的通用方案(完善中) Ø支持平滑升级中协议无关存量链接迁移 Ø支持指定 / 更新 Downstream / Upstream 协议配置 ØSOFARPC 支持 Upstream 反向请求Istio集成 3 Ø支持 Istio 0.8 版本 Pilot V4 API0 码力 | 44 页 | 4.51 MB | 5 月前3Service Mesh的延伸 — 论道Database Mesh
业务方处理事务 数据库 • 有状态 • 根据SQL路由 • 数据库自动处理事务数据库的进化趋势 • SQL • ACID • 分布式 RDBMS • SQL • BASE ACID • 分布式 NoSQL • SQL • ACID+BASE • 分布式 NewSQLNewSQL的分类 New Architecture Transparent Sharding Middleware sync read分布式事务:定义 传统事务:ACID Atomicity - 原子性 Consistency - 一致性 Isolation - 隔离性 Durability - 持久性 柔性事务:BASE Basically Available - 基本可用 Soft state -软状态 Eventual consistency - 最终一致性分布式事务:分类 XA 最大努力送达 原生支持 不支持 不支持 Try接口支持 并发性能 严重衰退 无影响 无影响 略微衰退 适合场景 短事务 并发较低 事务最终成功 高并发 长事务 应用方控制并发 高并发 长事务 高并发分布式事务:柔性事务自动化 快照记录 • INSERT • 解析 • 记录 • UPDATE&DELETE • SELECT • 记录 SQL逆向 • INSERT -> DELETE •0 码力 | 35 页 | 4.56 MB | 5 月前3Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?
Envoy App Mesh Traffic Director Istio Linkerd 2.* 支持 支持 不支持 不支持? 支持? 未知,拭目以待 未知,拭目以待 历史总是惊人的相似,螺旋式上升?Part 3:ServiceMesh灵魂拷问三:要不要支持虚拟机? Linkerd 1.* Envoy Istio Linkerd 2.* 支持 不支持 第一个转折容易理解:相比虚拟机,k8s提供了太多便利 cemesh, 再上容器/k8s? 每个公司都会有自己的实际情况和选择。 DreamMesh抛砖引玉(2)-CloudNative 2018-02-10 蚂蚁金服Service Mesh渐进式迁移方案 2018-11-25 Service Mesh 和 k8s 落地可能的多种演进路线Part 3:ServiceMesh灵魂拷问三:要不要支持虚拟机? Google Traffic Di Director的选择:ServiceMesh先行 Traffic Director 官方文档如是说:“按您的节奏进行现代化改造”Part 3:ServiceMesh灵魂拷问三:要不要支持虚拟机? 托管式实例组:效仿容器和k8s的方式来管理虚拟机 容器的硬件配置 实例模版的硬件配置 硬件 镜像文件的基础镜像 实例模版的操作系统配置 操作系统 镜像文件 自动启动脚本 创建应用 启动业务容器 按照实例模版启动虚拟机+应用0 码力 | 43 页 | 2.90 MB | 5 月前3进击的 Traefik | 云原生边缘路由器探秘
us/v1alpha1 kind: IngressRouteTCP metadata: name: redis spec: entryPoints: - redis routes: # 特定的域名需要指定对应的TLS证书 - match: HostSNI(`*`) services: - name: redis port: 6379More Info https://docs.traefik0 码力 | 35 页 | 8.58 MB | 5 月前3大规模微服务架构下的Service Mesh探索之路
而且,proxy不仅仅用于mesh Istio • 控制平面:Istio是目前做的最好的 • 认可Istio的设计理念和产品方向 • 性能和稳定性是目前最大问题 • 对非k8s环境的支持不够理想 • 没有提供和侵入式框架互通的解决方案Sofa Mesh:istio的增强扩展版 Pilot Auth Mixer Envoy Pilot Auth Mixer Golang Sidecar Istio现有架构 Service Mesher线下Meetup 下回分解:增强版Pilot和Edge Sidecar开源策略 Open Source 3蚂蚁金服,开源开放 ü 从 4 月份开始逐步开源金融级分布式架构中的各个组件: • SOFA Boot • SOFA RPC • SOFA Tracer • SOFA Lookout ü 科技开放,走出去看更大的生态 • 蚂蚁有丰富的业务场景,技术 蚂蚁本身业务上的开放策略,要求技术也要开放,而且要在更丰富的场景下去磨炼 • 在此期间,我们趟坑无数,走了N多弯路,演进了N个版本,我们期望能过通过开源和 开放,让社区跑的更快,节省更多时间 • 我们认为金融领域下的分布式架构设计有独特的原则,作为实践者,我们期望能在标准 化上跟社区一起沉淀和共建,期望做些贡献,有些建树Sofa Mesh的开源态度 ü 开源的时机 • 产品完成甚至使用多年之后 ü 开源的内容 •0 码力 | 37 页 | 7.99 MB | 5 月前3Apache SkyWalking 在 Service Mesh 中的可观察性应用
高洪涛 Tetrate 创始工程师Who 高洪涛 美国S ervice Mesh 服务商 Tetrate 创始工程师。原华为软件开发云技术专家,对云原 生产品有丰富的设计,研发与实施经验。对分布式数据库,容器调度,微服务, ServicMesh 等技术有深入的了解。 目前为 Apache ShardingSphere 和 Apache SkyWalking 核心贡献者, Istio 贡献者。 26/28维度匹配-service 命名规则 Version|App|Namespace|Cluster v1|projuctpage|bookinfo|product-demo 27/28感谢聆听 欢迎关注,获取最新分布式架构内容 关注服务网格,关注 ServiceMesher0 码力 | 29 页 | 1.38 MB | 5 月前3七牛容器云ServiceMesh实践
80%以上产品线部署Contour & Istio • 涉及K8S集群约20+集群 • 功能迭代 • 先南北,后东西 • 先原生,后二开 • 先管控面,后数据面落地场景—Spock测试平台 • 历史问题 • 分布式系统性能测试问题 定位难 • 多版本并发测试 • 故障注入较困难(代码侵 入性强) • 测试环境不稳定,后端Pod 频繁重启 • 解决方案 • Contour产品化 • Istio的灰度发布和流量管理 Istio南北流量分流策略产品化 • 基于Istio的QoS产品化 • 跨集群流量调度 • 基于Istio的Tracing产品化落地场景—大数据产品 • 系统优化之路 • 多版本灰度升级 • 根据流量做横向伸缩 • 分布式系统性能测试问题 定位难 • 解决方案 • Istio南北流量分流策略产品化 • 基于Istio的QoS产品化 • 基于Istio的Tracing产品化 • 跨集群流量调度七牛容器云产品逻辑架构0 码力 | 15 页 | 3.86 MB | 5 月前3
共 20 条
- 1
- 2