对应用而言容器定义了一种新的黑盒交付模式。
其实传统VM通过自动化运维手段也能做到类似功能,但容器相对VM较为轻量,在基础资源利用率上具有比较大的优势。
同样由于轻量,其scale out的弹性可用性会比虚机高,相对更容易应对高底峰流量,也从另一方面降低了运营的成本。
另外,由于容器的稳定性毕竟不如虚机,故架构上需要尽可能无状态,相对之下微服务倒并不是必须的。
个人认为,传统类型的应用使用容器技术也可以获得以下两点好处:
1、提高资源的使用效率。例如传统安装了WebSphere的4C8G配置的Linux虚拟机,在生产环境下,最多也就部署4、5个应用。但是同样配置的虚拟机,可以跑10个左右的容器。这样就大大提高了资源使用效率。
2、环境的隔离。在Docker容器内跑的应用,我们会将中间件和应用版本构建到一个镜像里面去,这样就将应用与外界环境 做了隔离,可以做到应用之间互不影响。例如,假设一个安装在传统虚拟机和WebShere中间件上的应用,如果需要JVM虚拟机的字符集是GBK的话,那么这个WebSphere上运行的其他应用也需要以GBK作为字符集,这样就导致应用之间强耦合。如果采用容器方式部署的话,就不存在这个问题。
个人观点是,微服务的意义在于,对应用的改动可以只涉及一个或部分服务。其改动和测试工作量相对较低。但是从另一个方面讲,将已有应用进行微服务化,需要大量的设计、修改、测试工作。将已有应用微服务化的决定是需要从更广泛的层面进行评估的。容器的部署可以更及时地获得所需要的开发、测试或是生产环境。使得开发、运维过程能够更为高效地进行管理。而且容器云的部署不涉及应用的改动,是相对立竿见影的提升方法。
收起