Docker微容器+微服务将颠覆传统的软件架构

从我的观点看:Docker是一个微容器,一个云计算的微PaaS容器,类似JVM但比其更强大的容器,直接基于Linux内核,支持各种语言,它比VM虚拟机更加轻量,能够在Linux或云计算IaaS等平台上直接运行,带着你的应用无缝地移植到各种运行环境。

有人无奈地说:Docker流行起来是因为我们的依赖设计做得不够到位,最后只能在运行阶段依靠Docker这样的微容器帮我们松耦合。

Docker的细粒度松耦合能够让我们用一个Docker容器装载一个场景功能,也就是按照功能角色分类,每个Docker里面装一个服务或应用,一个服务器上可以运行多个Docker,系统级别的服务比如Mysql数据库、Memcache缓存 和Nginx等。

参考:使用Docker创建两个容器的应用

对于我们业务应用系统可以按照微服务进行分类,让每个Docker中运行一个微服务,这样,通过分布式集群Docker微容器,就能够达到集群分布你的微服务。

比如Spring Boot提供了基于Spring的微服务支持,我们可以借助gradle生成一个Docker image,然后就可以运行在一个Docker容器,这个容器可以带着Spring应用奔跑在云平台 或本地或测试环境都是一样的。

参考:使用gradle生成Spring Boot应用的Docker Image

由此可见,Docker微容器概念和微服务正好相辅相成,两者完美结合在一起,好像可以取代原来基于JVM的JavaEE服务器了,原来的JavaEE一些中间件功能被作为库包与微服务捆绑一起运行,JavaEE其他有关性能扩展的功能再也不需要了,因为Docker可以带着我们的应用运行在以性能扩展见长的云计算平台上。

参考:JavaEE应用服务器死了

Docker比JavaEE服务器更强的地方在于,它是基于Linux内核,因此可以装载各种语言应用,毫无疑问是一种崭新的PaaS微平台。无怪乎很多人惊呼Docker将颠覆VMware等传统云计算Paas平台。进而改变整个软件架构和开发方式。

参考:10个基于DOCKER的顶尖开发工具

Docker微容器+微服务一大创新是将SOA和云计算完美无缝结合在一起。Docker微容器+微服务=云计算 + SOA。

原来的SOA基本由服务注册发现、服务消息总线、服务提供等组成,这些组件不同语言有不同的实现,比如Java中服务提供由JavaEE服务器提供Web服务等。而Docker组成的PaaS可以提供各种语言的SOA,真正体现SOA跨平台特点。

因为Docker可以运行在云计算IaaS之上,这样将SOA分布式架构无缝带入了云计算。如果按照传统迁移思路,搞个新的JavaEE标准来实现多租户PaaS,当初JavaEE7就是这么设计的,结果没有及时实现,时间上的空白为Docker插入替代提供了机会。