字节跳动 成国柱 基于Service Mesh的服务治理探索和实践

2020-03-01 1034浏览

  • 1.基于 成国柱 字节跳动 的服务治理探索和实践
  • 2.
  • 3.个人简介 字节跳动基础架构研发工程师 微服务框架团队负责人 年初加入字节跳动 主要负责微服务框架、服务治理、配置中心、 方向的研发工作 等
  • 4.目录 ❏ 概述 未来 展望 从微服务到Service Mesh Mesh 落地 ❏ ❏ ❏ 整体架构 实现方案 关键问题 服务 治理 ❏ ❏ ❏ 访问控制 动态过载保护 染色系统 ❏ 规划
  • 5.概述-案例分享一:服务端限流 语言&协议支持 、 、 、 、 多进程模型无法支持 限流策略 图:服务端限流模型 单实例限流 服务整体限流 丢弃策略 保证高权重请求 问题: 从开发到上线需要多久? 策略调整了怎么办?
  • 6.概述-案例分享二:服务安全 为什么需要内部服 务安全 数据越来越多,服 务信息越来越敏感 用户隐私意识逐渐增强 内网不可信假 设 内网服务安全的需求 身份认证 访问授权 防窃听加密 访问历史审计 问题: 强制性安全策略 ? 接入成本?
  • 7.概述-微服务及云环境下服务框架的新挑战 云环境部署 语言 组件不断增长 复杂的调用关系 基础功能重复建设 精细化的流量调度策略 更好的服务治理: 策略一致性问题 访问安全机制 更快速响应变更、负载均衡 功能新增、升 级、维 护困难
  • 8.概述 - Service Mesh 核心思想 1. 代理层接管所有流量 2. 中心化控制 3. 云平台原生集成 Istio架构(来源: istio官方)https://istio.io/docs/concepts/what-is-istio/arch.svg
  • 9.概述 - Service Mesh 收益 代理层收益 1. 基础功能收敛 2. 策略一致性 3. 与业务松耦合的功能升 级 4. 强制性安全策略 5. 非C++语言服务的性能平滑提升 控制面收益 1. 精细化的流量调度策略 2. 可定制的服务治理功能 核心收益 微服务框架成为可独立迭代的 产品
  • 10.概述 - Service Mesh 风险 性能与稳定性 proxy带来延迟/CPU消耗 proxy稳定性成为关键路径 中心化控制面 带来稳定性风险 开发运维模式 问题排查多一层 架构组成为线上问题的汇聚中心 不适用场景 技术栈稳定, 无服务治理/监控等强迭代需求 私有场景下需要长期技术/运维投入
  • 11.目录 ❏ 概述 未来 展望 从微服务到Service Mesh Mesh 落地 ❏ ❏ ❏ 整体架构 实现方案 关键问题 服务 治理 ❏ ❏ ❏ 访问控制 动态过载保护 染色系统 ❏ 规划
  • 12.ByteMesh整体架构 实现方式 代理层接管所有流量, 执行路由和 服务治理策略 屏蔽语言 协议差异 服务治理中心根据 请求信息,动态 决定路由策略 无感知的快速升 级 主要特点 基于 持 支持私有 协议 支 协议 自研控制面 集成服务发现和配置 使用公司基础设施 统一裸物理机、容器云,一 键升级
  • 13.ByteMesh实现方案 1. 2. 3. 流量代理(proxy) a. 基于元信息的流量代理 b. 多协议,统一接入规范 c. 性能(吞吐/延迟) 控制面(control panel) a. 流量调度和服务治理功能支持 b. 高可用 c. 扩展能力 云平台集成 a. 统一物理机和容器 , 与k8s解耦, 原生集成 b. 灰度升级和容灾方案 c. 大规模proxy平滑、稳定升级 一句话描述: 实现一个高性能多 协议的代理和一个灵活可 扩展的控制服务,将他们与云平台原生集成,最 终 通过轻量级的 框架来输出能力。
  • 14.ByteMesh Proxy 事件模型与数据流 基于 的流量代理 每个线程对应一个事件循环 每个事件循环对应多个连接 连接隔离 实现 出口/入口分离 长短连接转换 支持thrift、HTTP、MySQL、MongoDB等协议
  • 15.ByteMesh Proxy 平滑升级 优秀 协议的 特征 1. 明确的消息边界 2. 连接多路复用 3. 请求路由能力 thrift(buffered) TTHeader 消息边界 否 是 连接多路复用 否 是 请求路由能力 基于内容 基于元信息 thrift与TTHeader协议对比
  • 16.ByteMesh控制面 特征 灵活的请求调度 多种服务治理策略 开放式接入协议 屏蔽服务发现和配置 控制面请求处理流程
  • 17.ByteMesh控制面Arch
  • 18.ByteMesh流量劫持 特点 1. proxy以sidecar形式部署 2. 显式接管流量 3. 可独立接管出、入、 mysql等流 量类型 4. proxy无感知升级 ByteMesh 部署方案
  • 19.ByteMesh实现总结 1. 制定TTHeader协议规范 a. 实现元信息与用户数据分离, 基于元信息进行路由 b. 统一各语言的接入标准 c. 支持平滑升级 2. 重点关注proxy性能和稳定性 3. 控制平台面 4. a. 可扩展的插件架构 b. 多维tag支持灵活的调度需求 c. 多级缓存+分集群部署保 证高可用 平台集成 a. 显式接管流量 b. 通过mesh agent屏蔽底层环境差异
  • 20.目录 ❏ 概述 未来 展望 从微服务到Service Mesh Mesh 落地 ❏ ❏ ❏ 整体架构 实现方案 关键问题 服务 治理 ❏ ❏ ❏ 访问控制 动态过载保护 染色系统 ❏ 规划
  • 21.下的服务治理新思路 快速的迭代 精细化治理 定制化能力 标准化接入
  • 22.访问控制( 服务安全的需求 认证 授权 加密 审计 )
  • 23.访问控制 授权 授权粒度 源头:个人、服务 ✅、应用 目标:服务、接口 ✅ 授权模式 黑名单 松散授权(默认) 白名单 严格授权(可选)
  • 24.访问控制 鉴权 加密 审计 鉴权 Authentication 混合云环境下的Token注入 - Kubernetes - Secrets VM/PM 机器注入 加密 mTLS 审计 分析调用情况历史
  • 25.动态过载保护 判断过载状态:队列时间 从请求接收到服务开始处理的时间 决定期望拒绝比例 期望拒绝比例指为了完成服务的自动过载保护,周期内拒绝 掉的请求占实际总请求量的比例。 首先设立稳定区间 当 超过 期望拒绝 当 低于 望拒绝 。 当 ,加强限制,期望拒 绝比例 ,直到 ,放松限制,期望拒 绝比例 ,直到期 。 在稳定区间内,维持期望拒绝比例。 动态过载保护中的队列时间计算
  • 26.动态过载保护 统计优先级直方图 Ingress proxy 统计每个周期的请求优先级 累积直方图。 确立拒绝优先级 根据当前的期望拒绝比例,按照上一周期 的直方图划线,找出优先级阈值。 本周期,优先级低于阈值的请求被拒绝,高 于阈值的请求可通过。
  • 27.染色系统 请求染色 根据请求信息进行分组打标签 灵活调度与治理 服务治理平台支持染色 所有策略扩展至逻辑划分 请求染色及路由应用
  • 28.服务治理新功能 1. 动态负载均衡 2. 基于Deadline的Timeout 3. 流量录制 4. 故障注入和容灾演 练
  • 29.目录 ❏ 概述 未来 展望 从微服务到Service Mesh Mesh 落地 ❏ ❏ ❏ 整体架构 实现方案 关键问题 服务 治理 ❏ ❏ ❏ 访问控制 动态过载保护 染色系统 ❏ 规划
  • 30.未来展望 1. 更广泛的接入 场景 2. 持续优化proxy层性能 3. 探索更多的服 务治理应用和问题追查系统 4. 构建覆盖全公司的流量 视图和流量体系
  • 31.联系方式 微信公众号:微服 务实践充电站 关注 分享超大规模 探索微服务最佳实践 部署与治理经 验
  • 32.