IAAS:基础硬件即服务,实际上就是虚拟化服务,对于用户来说,其本身就是一个真实存在的机器;而对运营商来说,它实际上只是一个虚拟机。这就是现在CPU发展过于迅猛,为了避免资源过度浪费的有效解决方案。
PAAS(平台即服务),平台构建大批量的底层应用,并且对外提供统一的访问入口,当然,该入口需要进行认证,那么就能有限访问该服务,并且建立自己的实例,现在各种PAAS服务中,最出色的就是存储服务。比如块存储和对象存储。
SAAS:软件即服务。当我们本身就属于软件供应商时,我们可以直接在公有云上部署我们的软件,用户只要访问我们的web地址,就可以直接访问到我们的具体服务。我们可以這么认为,购物网站就是一种SAAS。它提供的是购物的体验。
PAAS平台的快速发展,出现了很多的问题,
第一,是环境的多变。比如java,python,ruby,数据库,中间件的部署,因为不同的企业需要不同的环境,
第二,无法保证环境一致性。传统部署依赖人的经验,但是对特殊情况下的包冲突,无法更新的情况却无能为力;生产环境和测试环境上难以保持一致,一出现问题就需要逐项排查;
第三,针对某些特殊需求,比如日志采集,监控数据项无法形成统一的规范。在A机器部署在/opt下,在B机器部署在/root下,C机器部署在/home下,不仅增加了人力维护的成本和难度,而且还难以形成规范;
第四,扩展难度复杂,不仅需要我们去部署一套完成的环境,还需要针对其做不同的环境测试,测试的范围不仅多,而且复杂,除了应用本身的测试,还有对集群扩展、存储,消息队列、缓存、搜索、数据源等的综合测试;
Docker的出现改变了這样的现状,首先是环境高度一致,本身将app和其运行环境进行了完整的封装,容器间基于线程间通信,只要在一处验证,就可以在所有的环境正常运行。功能单一,扩展性强,部署统一,使用的过程中,我们只需要把這个容器启动起来就可以了。开发、测试、生产环境保持高度一致。完全不用二度调试;
扩展思考;因为容器处于宿主之下,那么如何使用容器对宿主机进行监控?这样的做法有什么好处?
答:我们可以在宿主机直接把监控的内容写如某个目录,再把這个目录mount到容器中,容器内部运行的采集器通过主动推送的方式,就可以把该结果传输给监控主机,這样做的好处是三方面的,
第一,容器本身随时可以毁灭,我们不需要再监控时,只需要关闭该容器就行;
第二,因为容器本身只关注到自己内部的资源,不会对宿主有任何的损坏,即使该容器直接暴露到公网,被人***,那么也只会到容器内部,不会威胁到宿主;
第三,高度可扩展,容器随处可运行,