微服务的冷热部署
在企业的实际场景中,有的微服务调用非常高频,有的非常低频;有的是 CPU 密集,有的是 I/O 密集。最常见的是大数据应用与业务应用,大数据应用是典型的 CPU 密集型应用,大量计算非常消耗 CPU 资源。相反,业务应用大部分是内存密集型,非常消耗内存。
由于业务特性,大数据应用一般都是在业务低峰期(通常是凌晨)执行离线任务,因此在线业务与离线业务的业务高峰期基本不存在交集,通常在夜间时段,在线业务的服务器利用率非常低,而此时却有大量的离线业务需要执行,希望找到一种方法,让离线业务能在在线业务低峰期时去使用空余资源,从而提升资源使用率。
方案 1:虚拟机弹性虚拟化
通过 OpenStack 类虚拟化技术,在业务低峰期弹性扩容出虚拟机供 Hadoop 集群使用。
优势:方案实施简单,从 Hadoop 集群视角来看虚拟机就是一台独立 Node。业界大多使用该方案,有足够多的成功案例供参考。
劣势:需要 IaaS 层有足够完善的虚拟化及弹性扩容基础。
方案 2:手动调度 KVM 或胖容器
在没有弹性虚拟化平台的现状下,可以手动划分一批物理机资源,通过临时拉起 KVM 或 Docker 方式启动 Node-Manager。
优势:同方案 1。
劣势:资源调度不够灵活,无法根据物理机负载灵活分配资源。自动化程度不高,依赖人工运维。胖容器方式可能存在与 YARN Cgroup 冲突的问题。
方案 3:扩展 YARN 调度器
通过扩展 YARN 调度器,将作业以 Kubernetes Job 方式运行。
优势:充分利用 Kubernetes 灵活的细粒度资源调度能力,资源利用率提升度最高。
劣势:业界未看到类似方案,不确定实际可行性。需要对 YARN 做扩展,实现成本及难度较大。
目前来看方案 2 最具可行性,可以在短期内进行可行性测试。从长远来看,方案 3 也具备一定的可行性,并且资源利用率最高。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/6865c5e6eff5a1485c0268a86】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论