Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?
性能? Istio 0.1 - 1.0 Mixer 0.1 - 1.0 In- process AdapterIstio Control Plan 为什么Istio选择Mixer和Proxy分离的架构? Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Proxy Mixer In- Process Adapter Infrastructure Backend Adapter不再是Istio的组成部分 • 安装部署 • 配置 • 维护Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Mixer v1 架构的优点 • 集中式服务: • 提高基础设施后端的可用性 • 为前提条件检查结果提供集群级别的全局2级缓存 • 灵活的适配器模型,使其以下操作变得简 单: • 运维添加、使用和删除适配器 • 开发人员创建新的适配器(超过20个适配器)Part Mixer使用一组称为模板的核心抽象,来描述传递给适配器的数据。 这些包括“metrics”,“logentry”,“tracepan”等。这些抽 象与后端想要消费的数据不匹配,导致运维需要编写一些手动配置, 以便在规范的 Istio 样式和后端特定的样式之间进行映射。原本期望 这种映射可以在适配器中实现很大程度上的自动化,但是最终还是 太复杂并需要手动配置。如果要性能,该怎么做? Part 10 码力 | 43 页 | 2.90 MB | 5 月前3大规模微服务架构下的Service Mesh探索之路
Check和Quota 的Adapter Report的AdapterMixer反省之一:对性能的影响 ü 按照Istio的设计,每次请求Envoy都 要执行对Mixer的两次远程调用: • 转发前执行Check(包含Quota) • 转发后执行Report ü 我们的观点: • 需要请求同步阻塞等待的功能都应该在 Sidecar中完成 • 远程调用带来的性能开销代价太高 • 其他尽量 + c = 300 a * b * c = 1000000 笛卡尔乘积Mixer反省之二:隔离和抽象的层次 ü Mixer的设计目标: • 提供统一抽象(Adapter) • 隔离基础设施后端和Istio其他部分 • 容许运维对所有交互进行精细控制合并Check和Quota ü 我们的反思 • 认可这样的抽象和隔离,确实有必要从应用中剥离出来 • 但是要加多一层Mixer,多一次远程调用 抽象和隔离在Sidecar层面完成,也是可以达到效果的 • 对于Check和Quota,性能损失太大,隔离的效果并不明显 应用 Sidecar Mixer 基础设施后端 但是多付出一次远程 调用是否有足够必要? 对基础设施后端的访问的确 可以下沉到Service Mesh探讨:何为基础设施后端?是否可以区别对待? ü 实现Check的Adapter: • listchecker (黑白名单) • opa (Open Policy0 码力 | 37 页 | 7.99 MB | 5 月前3Service Mesh Meetup #3 深圳站
Kubernetes、ServiceMesh、CI/CD 实践 杨文@JEX 2018.08.25 Service Mesh Meetup #3 深圳站关于我 • JEX 技术VP • 前小恩爱技术总监 • Gopher,开源爱好者 • Go 夜读发起人 • https://github.com/developer-learning/night-reading-go • https://github 如何提升工程效率?DevOps • CI/CD 实战 • ServiceMesh • 踩过的一些坑 • Q&A技术架构的演进 • 单体架构 • 一个框架 • 一个数据库 • 分模块整合架构(前后端分析) • 不同的框架或业务模块 • 多种数据源 • 微服务架构 • 各种语言、各种框架或子系统 • 各种数据源 • ServiceMesh一般的开发流程 • 1. 开启一个新的 feature; appleboy/drone-jenkins我是作者名称我是作者名称我是作者名称Talk is cheap, Show me the code!• 当使用一个客户端实例和多个后端实例进行部署时,所有的调用仅 路由到单个后端实例。当部署第二个客户端时,它可能被路由到另 一个后端实例。这不是所需的那种负载均衡,因为它不允许独立地 扩展客户端和服务器。当客户端实例比服务器实例少时,一些服务 器实例将处于空闲状态,所以 Kubernetes0 码力 | 45 页 | 18.62 MB | 5 月前3蚂蚁金服Service Mesh渐进式迁移方案
很高的门槛 • 路线2能快速拿到短期红利,但是偏离长期目标 • 路线4的折衷方式 - 在k8s还没有铺开前,先吃下非k8s下Sidecar模式快速落地的红利(路线2) - 然后避开非k8s下继续演进的大坑,回归长期目标(路线1) ü 好处(和路线2一样) • 在k8s未铺开前,先向前迈进一步,避免卡壳 ü 缺点 • 存在少量的投资浪费(不过和拿到的红利相比是值得的) ü 存在变数 存在变数 • 是Sidecar模式的Service Mesh普及快?还是k8s普及快 ü 结论: • 特殊时期(k8s铺开前)的选择 演进路线4分析 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在K8s上 Service Mesh (Sidecar模式) 4 4 4 部署在K8s上 Service Mesh (Istio模式) 部署在 非k8s上 不是Service 4 2 实现平滑迁移的关键 3 4 5 总结 DNS寻址方案的后续规划 DNS寻址方案的演进CoreDNS DynAPI 安全加强 1 HTTP 2 HTTPSCoreDNS 后端Etcd Watch性能优化 https://coreos.com/blog/etcd-3.2-announcement印度IDC 全球域名整合 Kube ApiServer query0 码力 | 40 页 | 11.13 MB | 5 月前3Service Mesh 微服务架构设计
Virtualizati on OS Containers Middlewar e Runtime Data Application s Traditional IT Function20年前春晚 20年后春晚 思考:为什么每年的春晚越来越无聊 其实不是春晚越来越不好,而是观众的需求越来越难满足,服务架构也如此。1 漫谈服务架构的演进史 2 微服务架构设计的现状 3 Service 低耦合的服务设计方法论:DDD战略建模4步搞定微服务的划分保持代码高内聚的方法论:DDD战术建模Service Mesh将会是微服务设计的更好方式Service Mesh的核心价值 实现 业务逻辑 和 非业务逻辑 的分离 Ø 为下沉到基础设施提供可能 Ø 帮助应用轻量化,专注业务 Ø 实现应用的云原生化1 漫谈服务架构的演进史 2 微服务架构设计的现状 3 Service Mesh微服务设计 4 Service0 码力 | 36 页 | 26.53 MB | 5 月前3Service Mesh的延伸 — 论道Database Mesh
M3 S1 S3 数据库中间件 write sync read读写分离 S App1 M App2 App3 write sync read数据分片 + 读写分离 App1 S1 App2 App3 M2 sync read S2 S3 M1 M3 write数据分片 + 读写分离:引入中间件 App1 M1 App2 App3 S2 M2 M30 码力 | 35 页 | 4.56 MB | 5 月前3蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘
Ø对于满足请求Stream池化的需求 Ø需处理上层传入的状态事件PROXY 7 Ø基于Stream抽象提供多协议转发能力 Ø执行Stream扩展Filters Ø提供可扩展的路由寻址能力 Ø提供可扩展的后端管理,负载均衡,健康检查能力 Ø维护上/下游核心指标转发流程 8 IO Read Codec Stream Route / LB Codec Stream IO write F1 F2 F1 Writer Pool send encode Q u e u e C模块划分 11要点总结 12 Ø模块化,分层解耦 Ø统一的编程模型接口 Ø可扩展的事件驱动模型 Ø可扩展的路由/后端管理机制 Ø更好的吞吐量3 能力核心能力 1 网络处理 •网络编程接口 •链接管理 •事件机制 •Metrics 收集 •TCP 代理 •TLS 支持 •TProxy 支持 •平滑 TLS 核心路由 •支持 virtual host 路由 •支持 headers/url/prefix 路由 •支持基于 host metadata 的 subset 路 由 •支持重试 后端管理 •基础负载均衡算法 •主动健康检查 •Subset 负载策略Highlights 2 ØX-Protocol: 支持 RPC on HTTP2的通用方案(完善中) Ø支持平滑升级中协议无关存量链接迁移0 码力 | 44 页 | 4.51 MB | 5 月前3SOFAMOSN持续演进路径及实践分享
prometheus Ø 支持Mixer filter Ø 平滑升级迁移支持metrics Ø Access log Ø Listener log、Default log Ø IO、协议、前后端核心 metrics技术案例 – 协议自动识别 TLS链接 核心实现思路: Ø TLS通过ALPN来识别。 Ø TLS不带ALPN或者明文,通过预读首部字段识别。 ALPN扩展 预读字段 是 0版本已经初步具备了生产所需的大部分功能点,支持 云原生场景下的多协议、路由&LB、后端管理、TLS、遥感监测、XDS对接等功能, 并充分优化了性能,目前已经在蚂蚁、UC生产环境进行了验证。落地实践案例蚂蚁落地 – 应用接入 ü 适用于蚂蚁当前的服务发现 体系 ü 通过中间件通道对应用推送 MOSN调用地址 ü 通过扩展cluster类型的方式 动态获取配置中心后端 ü MOSN出向路由基于明确的 服务依赖关系生成0 码力 | 29 页 | 7.03 MB | 5 月前3七牛容器云ServiceMesh实践
先原生,后二开 • 先管控面,后数据面落地场景—Spock测试平台 • 历史问题 • 分布式系统性能测试问题 定位难 • 多版本并发测试 • 故障注入较困难(代码侵 入性强) • 测试环境不稳定,后端Pod 频繁重启 • 解决方案 • Contour产品化 • Istio的灰度发布和流量管理 • Istio的Tracing产品化落地场景—云存储系统 • 历史问题 • 灰度发布 • 预上线系统验证体系0 码力 | 15 页 | 3.86 MB | 5 月前3Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展
Service可以享受流量管理,可见性,策略控制等Istio承诺的益处 l 成本 Ø Istio不理解TCP上的应用层协议,其对TCP Service的缺省处理会影响应用层逻 辑 -例子:Envoy的LB算法不能处理应用后端集群的Sharding Ø Istio中和HTTP Service 端口冲突会的TCP Service请求会被Envoy直接丢弃 - 要求对应用进行改造,避免端口冲突 建议 Ø 将TCP纳入Service0 码力 | 27 页 | 11.99 MB | 5 月前3
共 13 条
- 1
- 2