1、小红书云原生架构的演进贺晋如小红书基础架构负责人Contents目录01小红书云原生历程02云原生实践03挑战和未来超过 2 亿的月活用户国内优选的生活分享社区每天百亿次笔记曝光Inspire Lives,分享和发现世界的精彩(数据来自小红书市场部)CPU核数100万+在线服务1.4万+实例数量30万+小红书技术概览业务笔记电商短视频直播商业化中台搜推中台业务中台音视频中台机器学习中台数据中台infra数据库缓存中间件网关容器可观测稳定性成本(数据来自小红书业务场景实践)2020离线训练,机器学习平台开始容器化部署离线训练云原生选择 K8S 作为底层容器编排引擎无状态微服务实现容器化部署容器化
2、启动建设20182022搜广推在线业务容器化改造,容器调度能力增强,开启在离线混部试点在离线混部,搜广推容器化小红书云原生发展历程2021微服务 Serverless 化Serverless 平台完成搭建,开启近线、在线业务 Serverless 改造1.容器化程度较高,但是云原生化程度低2.集群利用率低,明显低于其他互联网公司3.按照功能划分集群,整体没有实现一个完整的多集群管理能力4.K8S 版本碎片化严重,不能升级或不敢升级5.没有专门的容器研发团队,没有解决问题的能力过去面临的问题我们的思考1.如何大幅度提升研发和运维效率2.如何提升资源效能,用更少的资源支撑更多的业务3.如何支持整个
3、容器之上的基础设施和业务架构升级为云原生架构,充分释放云原生的能力统一的资源入口:简化业务资源使用流程,以容器作为业务部署资源的最小单元;收敛物理机管理工作,统一由资源提供方规划物理机资源小红书的容器架构高效的服务管理:基于 K8s 构建高效的服务管理与发布平台,配合开源和自研的各种高级工作负载,一键完成常见运维操作,提升业务服务管理的效率,降低业务在服务管理上的成本资源管理策略:使用在离线混部,超卖等关键技术配合多样的调度算法,提升集群利用率;通过精细化的单机管控策略在单机负载逐步提升的情况下,保证运行质量应用层微服务机器学习平台音视频转码离线任务存储基础层Deployment存储 Work
4、loadML WorkloadDuplicateSet工作负载统一的接入平台全局调度单集群调度调度二次调度混部超卖资源管理策略弹性资源层托管集群1托管集群2自建集群容器架构核心能力CPU精细化调度 kubernetes 原生的 CPU 管理机制无法满足企业内部离线训练以及对 CPU 敏感的在线服务 我们设计了如图所示的 CPU 精细化调度方案。目前在我们生产环境,均已关闭了 kubelet 默认的 CPU 管理策略,统一使用自研的 CPU 精细化调度。APIServerScheduler PluginsSmartAgentKubeletCriShim拓扑感知度创建或者更新NRT监测并启动Pod
5、更新cpuset启动容器List Pod 获取拓扑调度信息资源画像:基于历史 Node 节点监控数据,预测未来一个周期的资源使用量,避免热点问题超卖控制器:通过资源画像上报的数据,来动态调整节点可超卖的比例;Mutating 根据超卖比例来计算节点可分配资源巡检:对服务稳定性以及资源使用情况告警自动化处理,解决一些热点问题容器架构核心技术动态资源超卖&混部Node 1Node 2Node 3kube-apiserver内存工作负载超卖系统计算mutatingRedis资源画像容器架构核心技术混部质量保障面向负载水位的 CPU 约束BE Pod 可用的 CPU 受 LS Pod 负载的影响LS负
6、载 =BE可用的 CPU CPU Group Identity 干扰抑制高优先级进程内核在调度时可抢占低优先级进程的 CPU 时间片Noise Clean,避免超线程的干扰单机质量保障 CPU Burst内核提供补偿机制,避免被限流Memory QoSLS/BE 共存时,优先保障 LS Pod通过阿里开源社区 koordinator 项目,融合 alinux 内核能力,保障混部下高优在线业务的服务响应质量应用场景解决方案混部弹性伸缩成本优化智能 SLO调度引擎Scheduler/DeschedulerRecomma