 在Kubernetes上部署高可用的Service Mesh监控在 k8s 上部署高可用的 service mesh 监控 pctang@caicloud.io 唐鹏程 才云科技TOC Solving issues in a new way Monitoring your service mesh Old-school monitoringPrometheus + Kubernetes ● A time series based monitoring0 码力 | 35 页 | 2.98 MB | 6 月前3 在Kubernetes上部署高可用的Service Mesh监控在 k8s 上部署高可用的 service mesh 监控 pctang@caicloud.io 唐鹏程 才云科技TOC Solving issues in a new way Monitoring your service mesh Old-school monitoringPrometheus + Kubernetes ● A time series based monitoring0 码力 | 35 页 | 2.98 MB | 6 月前3
 Service Mesh 高可用在企业级生产中的实践治理策略 & 高可用 • 微服务高可用设计手段 - 服务限流 • 固定、滑动时间窗口限流 • 适合微服务接口 • 选定的时间粒度上限流 • 令牌桶、漏桶限流 • 适合阻塞限流 • 超过最大访问频率后,请求阻塞等待或者直接拒绝(等待时间=0) 常用限 流算法25/总页数 治理策略 & 高可用 • 微服务高可用设计手段 - 服务限流 • 基于来源限流(from) • 系统标签 • 自定义标签0 码力 | 38 页 | 1.38 MB | 6 月前3 Service Mesh 高可用在企业级生产中的实践治理策略 & 高可用 • 微服务高可用设计手段 - 服务限流 • 固定、滑动时间窗口限流 • 适合微服务接口 • 选定的时间粒度上限流 • 令牌桶、漏桶限流 • 适合阻塞限流 • 超过最大访问频率后,请求阻塞等待或者直接拒绝(等待时间=0) 常用限 流算法25/总页数 治理策略 & 高可用 • 微服务高可用设计手段 - 服务限流 • 基于来源限流(from) • 系统标签 • 自定义标签0 码力 | 38 页 | 1.38 MB | 6 月前3
 蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘Ø单核绑核 runtime 执行性能更好 ü单次写操作绑核 3us,不绑核 5us Ø更好的 G-P-M cache locality 亲和性 üRuntime 内存使用率提升,arena 区内存申请频率低,大小更小 üMheap 申请系统内存减少约60%内存 3 ØSLAB-style buffer pool ü减少内存 copy ü压测场景下内存复用率90% ØGolang 内存模型亲和0 码力 | 44 页 | 4.51 MB | 6 月前3 蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘Ø单核绑核 runtime 执行性能更好 ü单次写操作绑核 3us,不绑核 5us Ø更好的 G-P-M cache locality 亲和性 üRuntime 内存使用率提升,arena 区内存申请频率低,大小更小 üMheap 申请系统内存减少约60%内存 3 ØSLAB-style buffer pool ü减少内存 copy ü压测场景下内存复用率90% ØGolang 内存模型亲和0 码力 | 44 页 | 4.51 MB | 6 月前3
 蚂蚁金服Service Mesh渐进式迁移方案杜绝一刀切k8s和Service Mesh落地方案演进路线 部署在 非k8s上 不是Service Mesh形态 部署在K8s上 非SM 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在K8s上 Service Mesh (Istio模式) 部署在K8s上 Service Mesh (Sidecar模式) 部署在 非k8s上 Service Mesh (Istio模式) 不符合蚂蚁的远期规划(k8s是我们的既定目标) • 会造成投资浪费(k8s铺开在即) 演进路线2分析 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在 非k8s上 Service Mesh (Istio模式) 2 2 2 部署在K8s上 Service Mesh (Istio模式) 部署在 非k8s上 不是Service Mesh形态ü 可以理解为路线1的折衷版本 演进路线4分析 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在K8s上 Service Mesh (Sidecar模式) 4 4 4 部署在K8s上 Service Mesh (Istio模式) 部署在 非k8s上 不是Service Mesh形态蚂蚁金服选择的演进路线 部署在 非k8s上 不是Service Mesh形态 部署在K8s上 非SM0 码力 | 40 页 | 11.13 MB | 6 月前3 蚂蚁金服Service Mesh渐进式迁移方案杜绝一刀切k8s和Service Mesh落地方案演进路线 部署在 非k8s上 不是Service Mesh形态 部署在K8s上 非SM 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在K8s上 Service Mesh (Istio模式) 部署在K8s上 Service Mesh (Sidecar模式) 部署在 非k8s上 Service Mesh (Istio模式) 不符合蚂蚁的远期规划(k8s是我们的既定目标) • 会造成投资浪费(k8s铺开在即) 演进路线2分析 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在 非k8s上 Service Mesh (Istio模式) 2 2 2 部署在K8s上 Service Mesh (Istio模式) 部署在 非k8s上 不是Service Mesh形态ü 可以理解为路线1的折衷版本 演进路线4分析 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在K8s上 Service Mesh (Sidecar模式) 4 4 4 部署在K8s上 Service Mesh (Istio模式) 部署在 非k8s上 不是Service Mesh形态蚂蚁金服选择的演进路线 部署在 非k8s上 不是Service Mesh形态 部署在K8s上 非SM0 码力 | 40 页 | 11.13 MB | 6 月前3
 Service Mesh Meetup #3 深圳站feature/new_branch 会合并到 develop; • 5. 部署负责人将 develop 分支代码部署到测试环境,然后再通知 QA 测试;(脚本或者人工)有什么问题? • 效率低 • 没有代码检查; • 没有自动化测试(包括单元测试); • 沟通成本高 • 开发需要通知负责人、测试、产品等;(而且是每次构建/部署 都需要) • 依赖多较好的开发流程(流程化、自动化) • 1 是一种文化:一切自动化,工具化,规范化;选择哪个 CI/CD 工具?Docker stats 查看 Docker 服务所占用的CPU和内存开销DroneDrone • 一款使用 Go 开发,基于容器技术的 CI/CD 系统,能够单独部署,支持几乎所有的 Git 平台(Github,Gitlab,Bitbucket,Gogs,Gitea 等)。 • 它的特点: • 一个 .drone.yml 搞定(简单) • 原生 Docker appleboy/drone-jenkins我是作者名称我是作者名称我是作者名称Talk is cheap, Show me the code!• 当使用一个客户端实例和多个后端实例进行部署时,所有的调用仅 路由到单个后端实例。当部署第二个客户端时,它可能被路由到另 一个后端实例。这不是所需的那种负载均衡,因为它不允许独立地 扩展客户端和服务器。当客户端实例比服务器实例少时,一些服务 器实例将处于空闲状态,所以0 码力 | 45 页 | 18.62 MB | 6 月前3 Service Mesh Meetup #3 深圳站feature/new_branch 会合并到 develop; • 5. 部署负责人将 develop 分支代码部署到测试环境,然后再通知 QA 测试;(脚本或者人工)有什么问题? • 效率低 • 没有代码检查; • 没有自动化测试(包括单元测试); • 沟通成本高 • 开发需要通知负责人、测试、产品等;(而且是每次构建/部署 都需要) • 依赖多较好的开发流程(流程化、自动化) • 1 是一种文化:一切自动化,工具化,规范化;选择哪个 CI/CD 工具?Docker stats 查看 Docker 服务所占用的CPU和内存开销DroneDrone • 一款使用 Go 开发,基于容器技术的 CI/CD 系统,能够单独部署,支持几乎所有的 Git 平台(Github,Gitlab,Bitbucket,Gogs,Gitea 等)。 • 它的特点: • 一个 .drone.yml 搞定(简单) • 原生 Docker appleboy/drone-jenkins我是作者名称我是作者名称我是作者名称Talk is cheap, Show me the code!• 当使用一个客户端实例和多个后端实例进行部署时,所有的调用仅 路由到单个后端实例。当部署第二个客户端时,它可能被路由到另 一个后端实例。这不是所需的那种负载均衡,因为它不允许独立地 扩展客户端和服务器。当客户端实例比服务器实例少时,一些服务 器实例将处于空闲状态,所以0 码力 | 45 页 | 18.62 MB | 6 月前3
 SOFAMesh的通用协议扩展• 打包 • 安装 • 部署 • 测试 • 支持主流的微服务框架 • SOFA • HSF • DUBBO • SPRING CLOUD • … • 控制平面创新的地方 • MESH OPERATOR • RPC SERVICE CONTROLLER • …SERVICE MESH 落地中的问题常见的 MESH 落地方案 在非 KUBERNETES 环境部署 ISTIO 把 KUBERNETES 不支持微服务使用的通信协议 • RPC 服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型 INBOUND OUTBOUNDSOFA 服务注册模型落地一个微服务框架需要的工作 • 部署 ZK 集群作为 RPC 框架的注册中心 • 开发 ZK Platform Adapter for DUBBO 开发一个通用协议处理框架 • 避免为不同的微服务框架修改 PILOT 代码 • 通过插件的方式按需支持新的协议 • 对应用代码无侵入性 • 为微服务框架提供轻量化客户端落地一个微服务框架需要的工作 • 部署 ZK 集群作为 RPC 框架的注册中心 • 开发 ZK Platform Adapter for DUBBO • 开发 DUBBO 服务的 XDS 配置下发 • 开发 DUBBO 服务的路由规则 XDS0 码力 | 28 页 | 4.73 MB | 6 月前3 SOFAMesh的通用协议扩展• 打包 • 安装 • 部署 • 测试 • 支持主流的微服务框架 • SOFA • HSF • DUBBO • SPRING CLOUD • … • 控制平面创新的地方 • MESH OPERATOR • RPC SERVICE CONTROLLER • …SERVICE MESH 落地中的问题常见的 MESH 落地方案 在非 KUBERNETES 环境部署 ISTIO 把 KUBERNETES 不支持微服务使用的通信协议 • RPC 服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型 INBOUND OUTBOUNDSOFA 服务注册模型落地一个微服务框架需要的工作 • 部署 ZK 集群作为 RPC 框架的注册中心 • 开发 ZK Platform Adapter for DUBBO 开发一个通用协议处理框架 • 避免为不同的微服务框架修改 PILOT 代码 • 通过插件的方式按需支持新的协议 • 对应用代码无侵入性 • 为微服务框架提供轻量化客户端落地一个微服务框架需要的工作 • 部署 ZK 集群作为 RPC 框架的注册中心 • 开发 ZK Platform Adapter for DUBBO • 开发 DUBBO 服务的 XDS 配置下发 • 开发 DUBBO 服务的路由规则 XDS0 码力 | 28 页 | 4.73 MB | 6 月前3
 严选 ServiceMesh 实践Lyft 联合开发,Go 语 言,与 K8s 一脉相承且深度融合 • K8s 提供了部署、升级和有限的运行流量管 理能力 • Istio 补齐了 K8s 在微服务治理上的短板 (限流、熔断、降级、分流等) • Istio 以 Sidecar 的形式运行在 Pod 中, 自动注入,自动接管流量,部署过程对业务 透明 • 提供了完整的 Service Mesh 解决方案 • 数据面:Envoy /0215/24 严选上云 Roadmap16/24 落地关键步骤 拥抱云原生 • 大势所趋 • 容器化是微服务的最佳载体 • 容器化是 Service Mesh 高 效落地的基石 部署平台 • Sidecar 注入,业务无感知 • 加速云化 建设服务治理平台 • 无缝衔接 VM 集群和容器集 群的服务治理能力 • 最大化发挥 Service Mesh 的 优势 灰度引流 eBPF/xDP(sockops),优化路径为 SVC <-> Envoy,延迟性能提升10-20%。 Envoy 部署方式 per-pod,跟社区方向一致,也是目前严选采用的部署方案。 • 方案2: 采用 DPDK+Fstack 用户态协议栈,优化路径为 Envoy <-> Envoy,延迟性能提升 0.8-1 倍。Envoy 部署方式为 per-node,功能和运维层面的限制还在评估当中。 • Sidecar 模式采用方案1进行优化,gateway0 码力 | 25 页 | 2.07 MB | 6 月前3 严选 ServiceMesh 实践Lyft 联合开发,Go 语 言,与 K8s 一脉相承且深度融合 • K8s 提供了部署、升级和有限的运行流量管 理能力 • Istio 补齐了 K8s 在微服务治理上的短板 (限流、熔断、降级、分流等) • Istio 以 Sidecar 的形式运行在 Pod 中, 自动注入,自动接管流量,部署过程对业务 透明 • 提供了完整的 Service Mesh 解决方案 • 数据面:Envoy /0215/24 严选上云 Roadmap16/24 落地关键步骤 拥抱云原生 • 大势所趋 • 容器化是微服务的最佳载体 • 容器化是 Service Mesh 高 效落地的基石 部署平台 • Sidecar 注入,业务无感知 • 加速云化 建设服务治理平台 • 无缝衔接 VM 集群和容器集 群的服务治理能力 • 最大化发挥 Service Mesh 的 优势 灰度引流 eBPF/xDP(sockops),优化路径为 SVC <-> Envoy,延迟性能提升10-20%。 Envoy 部署方式 per-pod,跟社区方向一致,也是目前严选采用的部署方案。 • 方案2: 采用 DPDK+Fstack 用户态协议栈,优化路径为 Envoy <-> Envoy,延迟性能提升 0.8-1 倍。Envoy 部署方式为 per-node,功能和运维层面的限制还在评估当中。 • Sidecar 模式采用方案1进行优化,gateway0 码力 | 25 页 | 2.07 MB | 6 月前3
 陌陌Service Mesh架构实践向Istio的标准协议靠拢 重点目标 长期规划15/24 数据平面实践细节 • 部署方式 • 升级方式 • 容灾方式 • 性能问题 • 资源问题 • 兼容问题 关键设计 关键问题16/24 数据平面部署方式 容器化运行方式 • sidecar模式 • 与业务进程相同Pod不同Container 陌陌微服务容器化部署比例在80%以上 并且还在进一步推进 业务接入方式 • 研发人员:升级SDK版本 研发人员:升级SDK版本 • SRE:发布系统配置发布项 sidecar模式部署17/24 数据平面升级方式 – 平滑升级机制 平滑要求 • 业务进程不重启 • 流量保持不变 方案选择 • FD迁移 vs 哨兵集群 原理 • sendmsg / recvmsg接口发送FD • 步骤:listener、存量连接、存量数据 Java实现 • 借助JNI与Netty Java实现FD迁移18/240 码力 | 25 页 | 1.25 MB | 6 月前3 陌陌Service Mesh架构实践向Istio的标准协议靠拢 重点目标 长期规划15/24 数据平面实践细节 • 部署方式 • 升级方式 • 容灾方式 • 性能问题 • 资源问题 • 兼容问题 关键设计 关键问题16/24 数据平面部署方式 容器化运行方式 • sidecar模式 • 与业务进程相同Pod不同Container 陌陌微服务容器化部署比例在80%以上 并且还在进一步推进 业务接入方式 • 研发人员:升级SDK版本 研发人员:升级SDK版本 • SRE:发布系统配置发布项 sidecar模式部署17/24 数据平面升级方式 – 平滑升级机制 平滑要求 • 业务进程不重启 • 流量保持不变 方案选择 • FD迁移 vs 哨兵集群 原理 • sendmsg / recvmsg接口发送FD • 步骤:listener、存量连接、存量数据 Java实现 • 借助JNI与Netty Java实现FD迁移18/240 码力 | 25 页 | 1.25 MB | 6 月前3
 Service Mesh 微服务架构设计微服务架构由一组小型的、独立自治的服务组成, 并且实现了业务中单个的完整业务功能。 • 服务和服务之间是独立的、低耦合的; • 每个服务都尽量小,小到一个小团队能够很好的维护它; • 服务可独立部署,每次部署不会影响其他服务; • 每个服务都各自负责自己的数据和状态的存储,独立数据库; • 服务和服务之间通过设计良好的API接口通信,不暴露具体的实 现细节; • 各服务不需要统一技术栈,不需 络代理,它们与应用程序一起部署,但 对应用程序透明。Service Mesh的实现原理 Spring Cloud的类库模式 Service Mesh的Sidecar模式Service Mesh:Istio架构Service Mesh:Linkerd架构Service Mesh: OCTO-Mesh架构为了解决单体的复杂度问题,我们引入微服务架构 为了解决微服务架构下大量应用部署的问题,我们引入容器0 码力 | 36 页 | 26.53 MB | 6 月前3 Service Mesh 微服务架构设计微服务架构由一组小型的、独立自治的服务组成, 并且实现了业务中单个的完整业务功能。 • 服务和服务之间是独立的、低耦合的; • 每个服务都尽量小,小到一个小团队能够很好的维护它; • 服务可独立部署,每次部署不会影响其他服务; • 每个服务都各自负责自己的数据和状态的存储,独立数据库; • 服务和服务之间通过设计良好的API接口通信,不暴露具体的实 现细节; • 各服务不需要统一技术栈,不需 络代理,它们与应用程序一起部署,但 对应用程序透明。Service Mesh的实现原理 Spring Cloud的类库模式 Service Mesh的Sidecar模式Service Mesh:Istio架构Service Mesh:Linkerd架构Service Mesh: OCTO-Mesh架构为了解决单体的复杂度问题,我们引入微服务架构 为了解决微服务架构下大量应用部署的问题,我们引入容器0 码力 | 36 页 | 26.53 MB | 6 月前3
 Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着 复杂的服务拓 扑,服务网格负责在这些拓扑中实现请求的可靠传递。 在实践中,服务网格通常实 现为一组轻量级网络代理,它们与应用程 序一起部署,但对应用程序透明。什么是Service Mesh?- by Istio 服务发现 负载均衡 流量控制 ... 黑白名单 限流 ... 身份认证 通信加密 权限控制 ... 调用追踪 指标收集 Service Mesh是一个主要针对七层的网络解决方案,解决的是服务间的连通问题Service Mesh是下一代的SDN吗? 通信网络 l 互不兼容的专有设备 l 基于IP的通信缺乏质量保证 l 低效的业务部署和配置 ... 微服务系统 l 互不兼容的代码库 l 不可靠的远程方法调用 l 低效的服务运维 ... 通信网络和微服务系统面临类似的问题:Service Mesh是下一代的SDN吗? Network Server 管控规则 灰度发布 网格增强组件 原生组件 APP: Traffic Management APP ...产品化增强-服务注册发现 出于历史原因,我们使用了Kubernetes来部署服务,但并未使用Kubernetes内置的 服务发现功能。 Process Service-A Service-B Service-C Coarse grained Service0 码力 | 27 页 | 11.99 MB | 6 月前3 Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着 复杂的服务拓 扑,服务网格负责在这些拓扑中实现请求的可靠传递。 在实践中,服务网格通常实 现为一组轻量级网络代理,它们与应用程 序一起部署,但对应用程序透明。什么是Service Mesh?- by Istio 服务发现 负载均衡 流量控制 ... 黑白名单 限流 ... 身份认证 通信加密 权限控制 ... 调用追踪 指标收集 Service Mesh是一个主要针对七层的网络解决方案,解决的是服务间的连通问题Service Mesh是下一代的SDN吗? 通信网络 l 互不兼容的专有设备 l 基于IP的通信缺乏质量保证 l 低效的业务部署和配置 ... 微服务系统 l 互不兼容的代码库 l 不可靠的远程方法调用 l 低效的服务运维 ... 通信网络和微服务系统面临类似的问题:Service Mesh是下一代的SDN吗? Network Server 管控规则 灰度发布 网格增强组件 原生组件 APP: Traffic Management APP ...产品化增强-服务注册发现 出于历史原因,我们使用了Kubernetes来部署服务,但并未使用Kubernetes内置的 服务发现功能。 Process Service-A Service-B Service-C Coarse grained Service0 码力 | 27 页 | 11.99 MB | 6 月前3
共 22 条
- 1
- 2
- 3













