当前微服务拆分导致服务越来越多,如果用虚机感觉占用资源太多,存在资源浪费,那是不是一定要容器化? 容器化后优缺点都有哪些?希望实践过的同仁们分享一下经验。
1、资源成本:轻量级容器资源利用率更高,容器成本相对较低
2、管理成本:m个微服务n个实例,可能需要m * n个虚机,虚机服务器管理成本较高(当然一个虚机可能部署多个实例),而容器直接在物理机上运行,可直接通过云管平台管理,管理复杂度较低。微服务化程度越高,容器技术的管理成本越低。
3、应用部署成本:容器一般通过镜像(OS+发布包)进行部署,一键发布(集成云管或者Jenkins),部署快效率高;而虚机通过在OS上部署发布包进行部署,虽然可以通过自动化(Ansible)等手段发布,但总体上没有容器技术高效便捷。
4、扩缩容效率:在服务器资源充足的情况下,容器技术可分钟级扩容,而虚机则由于技术、流程问题可能需要小时级甚至几天时间,所以容器技术更加快速便捷。
简单说docker和虚拟机都是一个概念,在服务化的场景下docker比虚拟机强的原因其实也很简单,举个例子,明天需要做一个非常大的影响活动,初步估算下每种核心节点服务需要增加10台集群,目前核心服务有12个,即12*10=120台,需要扩容120台机器。
虚拟机做法:开通120个虚拟机,配置环境,设置IP,端口,安装应用,启动,调试。按一个熟手没部署一台需要10分钟,那么累计需要1200分钟,约20个小时
docker做法:由于在部署的时候,每个应用都被做成了一个镜像,所以要发布这120个应用,只需要通过脚本或者命令即可,整个过程约1个小时内完成。
所以在服务数量不是很多的情况下,用虚机也是能符合要求的。