《小红书云原生架构的演进 - 贺晋如.pdf》由会员分享,可在线阅读,更多相关《小红书云原生架构的演进 - 贺晋如.pdf(16页珍藏版)》请在三个皮匠报告上搜索。
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/DeschedulerRecommanderSLO Manager提供差异化 SLO 的调度能力单机执行引擎kube
7、letSLO Agent提供差异化 Qos 的调度能力kubeletSLO Agent容器架构核心技术弹性目前小红书是一个多云多 K8S 集群架构,在阿里云上部署了多套 ACK 托管集群。社区 HPA 方案主要是单集群的,所以我们自研了 fed HPA目前支持多种探测策略,包括1)cpu 和 mem 2)cron 定时 3)基于业务自定义指标,比如 qps 4)预测 HPA,基本上满足在线服务弹性需求。集群-1kube-apiserverprometheus adapterMetrics-serverprometheuskubeletPodPodPodPodHPA管理器定时扩缩校验&记录MyS
8、QL用户配置根据负载扩缩根据QPS扩缩触发器策略计算定期采集Pod负载、QPS信息scarerowduplicatesets扩容缩容其他监控数据用户自定义数据集群-2kube-apiserverprometheus adapterMetrics-serverprometheuskubeletPodPodPodPod策略维度调度。实现服务 QoS 资源保障模型。按照服务的 QoS 等级,给与优先级不同的算力保障集群调度:通过用户输入的调度需求、统一的全局资源视图,根据不同的调度策略产生对应的集群调度结果,满足不同应用对于跨集群调度的需求节点调度:主要用于集群内节点调度。主要包含了 Red-scheduler-基于原生 K8S 调度器的小红书统一调度器,做了基于真实负载感知调度、抢占等策略容器架构核心技术多级调度一级调度策略调度服务 QoS 资源保障模型二级调度集群调度三级调度节点调度red-schedulerdescheduler收益1.大幅增强服务的多区域容灾与多活、跨云弹性与迁移能力2.支持小红书 10w+核的近离线服务 0 计算成本运行,整体上资源管理能力达到业界高水平未来发展1.算力归一化2.大规模资源的精细化运营3.推动存储、微服务治理、搜推广等服务云原生架构升级THANKS