网易数字+云原生论坛 网易传媒架构演进之路 柴克斌 目录 CONTENTS 基础架构面临的挑战及升级目标 网易数字+云原生论坛 架构演进 踩过的坑 未来规划 基础架构面临的挑战与升级目标 挑战 升级目标 网易数字+云原生论坛 资源利用率在20%,波谷资源无法有效利用资源使用流程繁琐,人工介入步骤多 DDos攻击和数据扒取严重 突发流量、发布、变更等导致线上故障 资源使用率提升到50%~60% 资源池按需随时使用,监控资源使用率并优化构建安全网关,进一步防止攻击及反扒 弹性扩缩容,快速应对突发流量 服务依赖关系梳理,变更影响性分析 优化成本 提升效率 加固安全 保障稳定 目录 CONTENTS 基础架构面临的挑战及升级目标 网易数字+云原生论坛 架构演进 踩过的坑 未来规划 架构演进之路 传媒虚拟化 传媒所有业务都迁移到了传媒专属云 容器云升级 •弹性调度 •资源精细管理 •建设ServiceMesh 网易数字+云原生论坛 •容量管理 •其他离线业务混部 传媒物理机传媒容器化 所有业务运行在物理机 •传媒核心业务进入容器 •建设容器网关 •Kafka和Redis容器化 •离线业务混部 1 基于云原生 2 组件全面 3 性能优越 4 稳定性强 网易数字+云原生论坛 基于网易轻舟建设传媒容器化环境 网易数字+云原生论坛 使用到的轻舟组件 1 NCS 2 NSF 3 CI/CD 4 混部 5 容器网关 6 NCR Operator 7 Kafka Operator 资源池 •分为容器云、专属云和物理机三种资源池 •容器云和专属云在一个VPC内,和物理机互通通过DGW/NLB 网易数字+云原生论坛 •无状态服务优先使用容器云,无法迁移到容器云和专属云的沿用物理机资源池 VPC DGW 容器云资源池 云主机资源池 物理机资源池 DGW/NLB 容器内外互访 服务消费方 Envo y 云内调用 service://provider 云内调云外 ndsf://provider注册 lookup Consul 网易数字+云原生论坛 lookup 服务提供方 云外调用ndsf://provider 服务消费方 Envo 服务提供方 入口网关 y NLB 云外调云内service://provider XSD 公网SA pilot server k8sAPI ETCD 容器云云外 目前状态 2019.122020.6 12月中 12月底 12月底 1月初 12月底 1月初 2月中 2月底 6 月 底 大数据+基础技术公开课 1月初 2月底 1月底 2月初 2月底 3月初 6月中 6月底 网易数字+云原生论坛 销售支持内容 广告 6月初 6月中 推荐+红彩 3月初 3月中4月初4月中 客户端后台+测试 迁移数据库 容器改造 容器部署 测试 灰度 100%切量,切库 观察2周 下线机器 部署+测试+灰度 •核心业务都已经迁移到容器内 •运行了数万个POD,数千个Service •80%物理机进入容器资源池 切库窗口 机器下线 目录 CONTENTS 基础架构面临的挑战及升级目标 网易数字+云原生论坛 架构演进 踩过的坑 未来规划 服务B Famework APIDoc Tracer online/offline 拓扑 Status Health Event Metrics SDK ...... Jedis Kafka ES DataSource 业务逻辑 服务A Famework APIDoc Tracer online/offline 拓扑 Status Health Event Metrics SDK ...... Jedis Kafka ES DataSource 业务逻辑 服务调用 服务治理 负载均衡 服务发现 服务注册 gRPC HTTP2C HTTP1.0 Thrift 网易数字+云原生论坛 NDSF NDSF-服务调用 网易数字+云原生论坛 Jar包方式Proxy方式 网易数字+云原生论坛 NDSF-存在的问题与升级目标 •服务治理框架尚未完全统一 •服务治理框架与业务存在耦合 •服务治理组件升级/运维困难 •缺少统一的服务治理管控平台 •针对异构系统服务治理能力不足 存在的问题 •统一的服务治理体系 •解耦业务逻辑与服务治理组件 •降低服务治理框架的接入成本 •降低服务治理组件的运维成本 •提供统一的服务治理管控平台 •提供异构系统服务治理能力 升级目标 •基础服务能力下沉 •对业务无感知,业务方无需重新发布,无需接入SDK •动态调整,动态生效 网易数字+云原生论坛 基于轻舟NSF建设ServiceMesh 1 基于云原生 2 支持Dubbo, Thrift协议 3 SideCar热升级 4 业务无感知, 流量动态拦 截 5 完善的服务治理能力 6 SideCar懒加载 Dubbo协议支持 •Dubbo的调用方式修改为直接使用域名的方式调用 •通过iptable方式对指定端口的流量进行 拦截,重定向到envoy 网易数字+云原生论坛 •保留zk注册中心,扩展galley组件从zk 拉取dubbo服务的注册信息 •galley组件通过mcp上报serviceentry资源给pilot,扩展字段里包含了dubbo服务的依赖关系 •pilot在同步xds配置的时候根据serviceentry上的依赖关系,按需下发所需的配置 CRD扩展 网易数字+云原生论坛 VirtualServiceDestinationRule 网易数字+云原生论坛 服务治理能力 Outbound Inbound 能力 超时重试 白名单 熔断降级 限流 自定义负载均衡 细粒度路由 细粒度路由 SideCar热升级 SideCar热升级 流量动态拦截 流量动态拦截 协议 HTTP HTTP gRPC gRPC Dubbo Dubbo Thrift Thrift 目录 CONTENTS 基础架构面临的挑战及升级目标 网易数字+云原生论坛 架构演进 踩过的坑 未来规划 传媒资源使用状况 •资源平均利用率在20%左右 •一些非敏感性业务,需要很多算力,有独立的资源池,占用了大量物理资源(转码、相似度、旧闻识别、假新闻识别、内容识别等) •在线业务申请资源很多,但实际使用很少,导致大量资源浪费 •业务不能接受混部后互相干扰 网易数字+云原生论坛 •一些业务在资源使用上有波峰和波谷,波谷资源浪费严重 idleusr 资源利用率提升目标 •CPU使用率提升到50%~60% 网易数字+云原生论坛 •保证不能影响服务的QoS 网易数字+云原生论坛 基于轻舟zeus构建混部环境 1 能保证在线业务 Qos 2 灵活的混部策略 3 支持弹性扩缩容 网易数字+云原生论坛 在线服务/离线服务 在线服务(Service) 离线任务(Job) 分类 推荐、跟贴、用户、NC、PUSH等面向C端的服务 转码、相似度、旧闻识别、假新闻识别、内容识别、定时任务等 时延 敏感 不敏感 优先级 高 低 负载模型 白天负载高,夜间负载低 只要运行,负载就会很高 错误容忍 错误容忍度低,高可用 允许失败重试 在线/离线混部架构 •离线业务不能影响在线业务 •优先在线服务可用的资源保证 •在线服务资源使用率低的情况下,离线服务使用资源,保证整体资源使用率在一定水位 网易数字+云原生论坛 资源池 •在线资源池:只能调度在线业务上来 •离线资源池:只能调度离线业务上来 •混部资源池:可以混合调度在线、离线业务上来 业务类型 •Job:离线任务,会调度到离线资源池 •Serivce:在线任务,会调度到在线资源池 •Colocation-job:允许混部的Job,会调度到混部资源池 混部资源池 •APP:在线应用资源使用率较高,有可能存在突增现象 •NCR:在线应用资源使用率很低,但比较敏感,离线不能占用太多资源,防止抖动 网易数字+云原生论坛 •PUSH:在线应用有明显的波峰波谷,波谷资源利用率需要提高 APP NCR PUSH 可分配资源公式 网易数字+云原生论坛 Capacity=节点可分配资源总量*节点目标利用率-在线业务使用量-在线业务使用量*资源预留百分比 混部后资源利用率 资源池 混部前CPU利用率 混部后CPU利用率 CPU提升百分比 混部时间点 app 14.79% 42.19% 185.26% 全天 ncr 6.78% 20.13% 196.90% 全天 push 1.10% 37.81% 3337% 0~6点 网易数字+云原生论坛 •混部后,节省30%的资源 网易数字+云原生论坛 混部后资源利用率 App Push NCR usrnice 目录 CONTENTS 基础架构面临的挑战及升级目标 网易数字+云原生论坛 架构演进 踩过的坑未来规划 踩过的坑 网易数字+云原生论坛 必须对业务进行容量评估 踩过的坑 网易数字+云原生论坛 节点标签不宜打太多 踩过的坑 网易数字+云原生论坛 合理创建Service 目录 CONTENTS 基础架构面临的挑战及升级目标 网易数字+云原生论坛 架构演进 踩过的坑 未来规划 容量管理 •资源精细化管理 •缩小资源申请量和实际使用量的差别 网易数字+云原生论坛 •区分计算型资源、内存型资源、GPU资源、存储型资源,让业务方合理申请资源 弹性调度 •扩大混部范围 •无状态服务使用HPA 网易数字+云原生论坛 •缩小业务方启动应用的时间 网易数字+云原生论坛 THANKYOU