Service Mesh结合容器云平台的思考和实践
微服务结合容器云平台的思考和实践 2018.06.25 徐运元关于我 2008年毕业于浙江大学,曾在思科和浙大网新有超过 9年的工作经验和5年的云计算领域工作经验,带领团 队完成公司第一代基于Kubernetes的云平台开发和第 二代基于Kubernetes的DevOps云平台开发 来自于浙江大学SEL实验室目录 CONTENTS Kubernetes平台下的微服务演进 Pilot核心功能解读 Pilot核心功能解读 Pilot-Agent核心流程解读Kubernetes平台下的微服务演进当我们在讨论微服务的时候我们在讨论什么? • 解决如何微服务的问题 • 解决微服务化后带来的问题 温饱问题 • 计算资源的快速分配 • 基本的监控 • 快速部署 • 易于分配的存储 • 易于访问的外围(负载均衡) • 服务注册和发现 致富问题 • 认证和授权 • 智能路由 • 流量管理 • 服务降级 Configmap、Secret 负载均衡 简单负载均衡,基于Iptables Roundrobin 流量控制 简单根据服务实例进行控制云平台微服务演进之基于API网关的微服务方案 API网关功能增强 • 安全认证 • 流量控制 • 审计日志 • 黑白名单 • …K8S集群 云平台微服务演进之基于Spring Cloud的微服务方案 NS A Service Zuul Nginx Eureka0 码力 | 28 页 | 3.09 MB | 5 月前3微博Service Mesh实践
Mesh Meetup · BeiJing �2 微博Service Mesh实践 - WeiboMesh CONTENTS 内容提要为什什么要做跨语⾔言服务化 • 需求 • 趋势Service Mesh Meetup · BeiJing 平台体系 微博Service Mesh实践 - WeiboMesh �4 Java Server Java Client Registry Motan Opendcp ➢ 智能弹性调度 Graphite ➢ 实时统计监控 平台微服务相关建设⽐比较完善 Notify Subscribe RegisterService Mesh Meetup · BeiJing 业务部⻔门调⽤用链 微博Service Mesh实践 - WeiboMesh �5 RPC A WEB A 平台体系 RPC B WEB B Golang 服务 PHP 服务 BeiJing 趋势 �6 微博Service Mesh实践 - WeiboMesh 微服务 1 容器器化 2 DevOps 3 云原⽣生 4 服务治理理与业务逻辑解耦,可持续交付跨语⾔言服务化⾯面临的问题 • 改造成本 • 服务治理理Service Mesh Meetup · BeiJing 改造成本 �8 微博Service Mesh实践 - WeiboMesh Server(php/java/0 码力 | 43 页 | 1007.85 KB | 5 月前3严选 ServiceMesh 实践
Service Mesh 架构试点 严选业务快速增长 服务化 技术团队规模:200+ Service Mesh 架构全面落地 基础架构三问: 1. 服务治理:RPC 框架 vs 服务治理平台 2. 多语言 vs Java 3. 开源 vs 自研2/24 /01 /02 /03 严选 Service Mesh 演进 混合云架构落地实践 规划与展望3/24 严选ServiceMesh演进 功能 能力提供方 服务调用方(Client) 服务提供方(Server) 服务注册与发现 注册发现:基于 Consul √ 调用控制 协议支持:HTTP 1.X/2.X,可扩展至 TCP √ 路由控制:提供简单的路由能力 √ 负载均衡:支持 RR、权重、一致性 Hash 等 √ 流量复制:不提供 × 故障转移:继承 Nginx 的 Failover 机制 √ 安全 访问控制:主要依靠中间件 timeout 机制 √ 监控/故障诊断 链路追踪:主要依靠中间件 APM APM 性能监控:主要依靠中间件 APM APM 遥感数据:主要依靠中间件 APM APM 访问日志:主要依靠日志平台 日志平台 日志平台6/24 Service Mesh 为严选带来了哪些架构收益 • 历史包袱:现有的服务在不改造的情况下引入了服务治理能力 • 大大降低了中间件的研发投入和演进成本,也降低了业务和中间件的耦合成本0 码力 | 25 页 | 2.07 MB | 5 月前3陌陌Service Mesh架构实践
陌陌Service Mesh架构实践 高飞航 陌陌中间件架构师1/24 讲师简介 高飞航,陌陌中间件架构师 2011年 毕业于东北大学 加入淘宝网 交易平台团队 负责交易流程业务研发 2013年 加入陌陌 基础平台组 负责多项中间件产品研发、多机房架构建设 在微服务领域具备丰富的经验 当前关注Service Mesh、云原生等技术方向2/24 /01 /02 /03 背景 0微服务体系整体架构 注册中心 • Redis作为底层存储 • 跨语言地址发现服务Lookup • 中心化存活检测 多语言支持 • Java、PHP、Python、Go、NodeJs • Redis传输协议 / 复用Redis客户端 • 服务发布Proxy / 并行调用Proxy 服务治理 • 服务治理平台、配置中心 • 监控、日志、分布式跟踪 • 异步调用、压测7/24 流量代理机制 PHP服务发布入流量代理 PHP并行调用出流量代理 16年起开始使用流量代理机制解决跨语言服务治理问题8/24 分享主题:字号 分享嘉宾 发布服务数 2000+ 注册实例数 2万+ 全天调用量 3500亿 微服务体系规模 服务量级的增长使得Java应用的服务治理问题 也逐渐暴露出来9/24 问题 /02 借助Service Mesh解决现有架构痛点10/240 码力 | 25 页 | 1.25 MB | 5 月前3SOFAMOSN持续演进路径及实践分享
Meetup #5 广州站Agenda Ø 背景 & 概览 Ø 持续演进路径 & 技术案例 Ø 实践案例 Ø 规划 & 展望 Ø QA背景 & 概览数据平面概览 SOFAMOSN • C实现,支持多语言扩展 • 基于Nginx扩展 • 开发不活跃 • 老牌代理系统,业界广 泛使用,服务各类场景 • C++实现 • CNCF第三个毕业项目, ISTIO原生数据平面 • 开发活跃,最新版为1 HTTP/2.0支持 Ø 进程平滑升级 Ø SOFAMesh集成,支持 xDS on ADS Ø X-Protocol协议扩展机制, 以及Dubbo支持 Ø 支持network/stream filter 扩展 Ø 支持WRR负载均衡 Ø 支持subset复杂匹配路由 Ø 无损平滑迁移 Ø ProtocolEngine协议扩展 机制 Ø 支持Router模式 Ø GRPC支持 Ø 协议自动识别 协议自动识别 Ø 链式路由扩展 Ø 完善流量管理策略,包括 Retry、DirectResponse、 HTTP Header add/delete、 流控、故障注入等 Ø 支持必要的admin接口性能 0.1.0 0.2.0 0.3.0 0.4.0 Ø 内存复用框架 Ø Slab style buffer Ø Raw-Epoll模式 Ø 读合并 Ø 协程池化 Ø 调度均衡 Ø0 码力 | 29 页 | 7.03 MB | 5 月前3七牛容器云ServiceMesh实践
Kubernetes Ingress) • 东西向流量 • Istio支持全量功能 • Contour支持Tracing能力 • 数据面共存 • 共用边车组件Envoy七牛现有Service Mesh体系 • Istio产品化 • 东西流量产品化 • 南北流量产品化 • TLS管理优化 • Contour增强 • 入口流量管控 • 跨集群调度 • 发展策略 • API版本兼容两种方式 • 数 先管控面,后数据面落地场景—Spock测试平台 • 历史问题 • 分布式系统性能测试问题 定位难 • 多版本并发测试 • 故障注入较困难(代码侵 入性强) • 测试环境不稳定,后端Pod 频繁重启 • 解决方案 • Contour产品化 • Istio的灰度发布和流量管理 • Istio的Tracing产品化落地场景—云存储系统 • 历史问题 • 灰度发布 • 预上线系统验证体系 • 系统故障隔离 • 跨集群访问 Istio南北流量分流策略产品化 • 基于Istio的QoS产品化 • 跨集群流量调度 • 基于Istio的Tracing产品化落地场景—大数据产品 • 系统优化之路 • 多版本灰度升级 • 根据流量做横向伸缩 • 分布式系统性能测试问题 定位难 • 解决方案 • Istio南北流量分流策略产品化 • 基于Istio的QoS产品化 • 基于Istio的Tracing产品化 • 跨集群流量调度七牛容器云产品逻辑架构 Kubernetes0 码力 | 15 页 | 3.86 MB | 5 月前3蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘
viceMesh 2 Ø跨团队协作需要考虑技术栈落地成本 ü 参与团队分别使用C,Golang,Java等多种技术栈 Ø基于蚂蚁SOFA体系的Mesh化思考 ü 无法保证上下游应用同时升级到Mesh模式 ü 基于RPC内容的流量调度 ü 升级窗口有限,方案必须简单高效 Ø运维体系,容器化建设等方面适配 ü 蚂蚁运维架构建立在流量调度的基础上 ü 容器管理平台更替快速进行中 ØGolang •TCP 代理 •TLS 支持 •TProxy 支持 •平滑 reload •平滑版本升级 多协议 •SOFA RPC •HTTP 1.x (待优化) •HTTP 2 (待优化) •Dubbo (研发中) •HSF (研发中) •On TLS 核心路由 •支持 virtual host 路由 •支持 headers/url/prefix 路由 •支持基于 host metadata 由 •支持重试 后端管理 •基础负载均衡算法 •主动健康检查 •Subset 负载策略Highlights 2 ØX-Protocol: 支持 RPC on HTTP2的通用方案(完善中) Ø支持平滑升级中协议无关存量链接迁移 Ø支持指定 / 更新 Downstream / Upstream 协议配置 ØSOFARPC 支持 Upstream 反向请求Istio集成 3 Ø支持 Istio0 码力 | 44 页 | 4.51 MB | 5 月前3Service Mesh Meetup #3 深圳站
开发,基于容器技术的 CI/CD 系统,能够单独部署,支持几乎所有的 Git 平台(Github,Gitlab,Bitbucket,Gogs,Gitea 等)。 • 它的特点: • 一个 .drone.yml 搞定(简单) • 原生 Docker 支持: 任何步骤都是在 Docker 内执行的(环境隔离) • Pipeline as code • 丰富的插件支持 • 极简的Web管理界面 • 其他: Docker compose其他特性 • 支持Cache(vendor,node_modules):方便下次更快执行 • 支持触发其他CI服务: • Jenkins(plugins/drone-jenkins) • Gitlab-CI(plugins/drone-gitlab-ci) • Drone(plugins/drone-downstream) • 支持自定义插件(你可以自己实现自己所需的插件) 件) • 本机测试 .drone.yml : drone execAPI 支持我是作者名称.drone.yml代码质量检测 SonarQube 参考资料:https://github.com/developer-learning/night-reading- go/blob/master/articles/sonarqube-for-golang/2018-07-22-sonarqube-for-0 码力 | 45 页 | 18.62 MB | 5 月前3蚂蚁金服Service Mesh渐进式迁移方案
• Kubernetes • 微服务 ü 现实中有很多挑战 • 还有很多应用没有实现微服务化 • 还有很多应用没有运行在kubernetes之上 • Istio目前还不够稳定,也无法原生支持我们的规模 • 现有系统中的众多应用不可能一夜之间全部迁移 ü 最重要的:平滑迁移 • 微服务 + Service Mesh + Kubernetes 是目标 • 但是如何从现有体系向目标迈进,必须给出可行的实践指导 Mesh(意味着更偏离目标) ü 好处是第一步(非k8s上向Sidecar模式演进)非常自然 • 容易落地 • 快速达成短期目标 ü 缺点是再往后走 • 由于没有k8s的底层支持,就不得不做大量工作 • 尤其istio的非k8s支持,工作量很大 • 而这些投入,在最终迁移到k8s时,又被废弃 ü 结论: • 不符合蚂蚁的远期规划(k8s是我们的既定目标) • 会造成投资浪费(k8s铺开在即) 168.1.101:12220 To:192.168.1.102:12220 To:192.168.1.103:12220 背景:k8s内外网络打通,IP互通透明拦截带来的升级弹性:对应用透明,支持直连/单跳/双跳 Service-A Outbound Sidecar Traffic Interception To: b-ip:b-port to: sidecar-ip:sidecar-port0 码力 | 40 页 | 11.13 MB | 5 月前3大规模微服务架构下的Service Mesh探索之路
Mesh Istio • 第一选择,重点关注对象 • 奈何迟迟不能发布生产可用版本 • 性能和稳定性远远不能满足蚂蚁的 要求 • 但我们非常认可Istio的理念和方向 Conduit • 只支持k8s,而蚂蚁尚未普及k8s • 数据平面由Rust编写,过于小众,难于 从社区借力。 • 同样存在技术栈问题 • 公司和产品在社区知名度和影响力有限国内公司的选择之一:自研 华为:CES • 细节暂时不清楚,即将开源 新浪微博:Motan Mesh • 也是使用Golang编写 • 全新实现(原有类库是基于Java) 老成持重的稳健思路:以proxy为切入口,第 一时间获取跨语言和技术栈下沉的红利,立足 之后再缓缓图之。 这个产品思路唯一的麻烦在于编程语言的选择国内公司的选择之二:开源方案定制 腾讯:Tencent Service Mesh • 数据平面选择Envoy:成熟产品,符合 • 而且,proxy不仅仅用于mesh Istio • 控制平面:Istio是目前做的最好的 • 认可Istio的设计理念和产品方向 • 性能和稳定性是目前最大问题 • 对非k8s环境的支持不够理想 • 没有提供和侵入式框架互通的解决方案Sofa Mesh:istio的增强扩展版 Pilot Auth Mixer Envoy Pilot Auth Mixer Golang Sidecar0 码力 | 37 页 | 7.99 MB | 5 月前3
共 29 条
- 1
- 2
- 3