容器、微服务和互联网架构浅谈
随着云服务的兴起,企业应用正在从分层式架构逐步迁移到互联网架构。传统的企业应用架构通常是单一架构(Monolithic),即典型的MVC三层架构。以一个主流的J2EE企业应用而言,其按照模型(数据层)——控制器(服务层)——视图(访问层)进行构建,然后打包为一个war包,部署运行于J2EE应用服务器上,例如Tomcat、JBoss、WebLogic等。 然而,经过多年应用,Monolithic架构也逐渐老化,越来越不适应技术的发展。首先,随着加入的应用功能增多,产生了代码堆积现象,系统越来越庞大和复杂。尤其是引入敏捷开发后,产生了较多问题。例如应用持续集成方法时,自动加载、编译、加载、测试整个应用代码的时间过长,不能快速形成正反馈。其次,组件与组件之间的耦合性太强,所有应用都运行在服务器上的相同进程中。应用规模增大后,只有同时增加应用的副本,将多个副本部署到多个服务器上,无法实现弹性伸缩。最后,开发团队之间,工作交集复杂,协调耗散大。 从长期实践看,Monolithic架构天然的不具备健壮性,因为一旦某个组件出现问题,整个服务基本上就挂了。自身不具备分布式服务能力,通常需要依赖于负载均衡器、数据库HA等来实现服务的分布化和负载分担。相对而言,互联网架构优势在于分布式、去中心化,支持弹性伸缩。其核心是轻应用、微服务。微服务架构也是从Monolithic架构演进来的