传统架构到互联网架构演变?

      随着信息时代的爆炸,应用场景的变化,传统架构无法满足互联网高速迭代变化的业务场景中,故演化出了互联网架构。架构是随着业务场景变化而演化的,不以业务场景为架构的架构,是银弹的架构。架构只有合适与不合适,没有绝对的好和坏,架构的本质其实是解决软件复杂度带来的问题。

        我们再来看看传统架构的演变过程,在JSP的时代,所有逻辑一伙色捅到JSP里面,界面的展示,业务逻辑的处理,数据库的连接处理等操作,开发者刚开始是爽了,什么都不管从早到黑一伙色很愉快的写到底,到后来软件的迭代,需求的增加,才发现代码是多么的难维护。改一发而动全身,另外测试回归成本高,为了解决这些操蛋的问题带来的烦恼,MVC架构模式横空出世。

MVC架构:

 

    即:Controller、View、Model三个角色各司其职,降低软件复杂度。各个角色有很明确的职责,即View只负责界面层的展示,Controller只负责请求,Model只负责业务逻辑的处理。MVC适用场景单个业务子系统,划分的维度是职责,将不同职责划分到独立层,但各个层的依赖关系比较灵活。例如下图:

分层架构:

扫描二维码关注公众号,回复: 2224454 查看本文章

    但随着软件复杂度的提升,业务场景的变化又出现分层架构模式,可以分3层甚至多层,无论采取何种的分层维度,分层架构设计最核心的一点就是需要保证各层之间的差异足够清晰,边界足够明显,另外分层架构能较好的支撑系统扩展性,例如:展现层只需要处理展示层的逻辑,业务层只需要处理相关的业务逻辑,这样我们在扩展某层的时候,其他层不受影响,例如:需要调用第三方API,这时我们只需要加一个专门用来处理调用第三方API的集成层。分层架构应用场景可以是单个业务系统,也可以是子系统。典型的分层架构如下图:

   

SOA架构:

    什么是SOA?SOA是面向服务体系的架构。SOA更多的是在传统企业(例如:制造业),之前我所在的公司在SOA方面的落地比较多。例如:MDM主数据管理,ESB中间件打通企业内部各业务系统实现互连互通。SOA出现的背景是企业内部IT系统的重复建设且效率低下,主要体现在随着业务的发展,复杂度越来越高,更多的流程和业务需要多个业务系统合作完成。由于各个业务系统没有标准的实现方式,例如:OA系统用JAVA实现,MES系统用C#实现,BOM系统用PHP实现,另外各系统对外暴露接口的协议也参差不齐,有SOAP、HTTP、RPC、JMS、WS等。每次开发新的流程和业务,都需要协调大量的业务系统,同时定制开发,效率很低。

        为了应对传统IT系统存在的问题,SOA提出了面向服务体系的开发,即组件化,服务化,通过ESB来进行异构系统之间的互连互通。ESB全称是“企业服务总线”。ESB将企业各个不同的服务连在一起。因为各个独立的服务是异构的,如果没有统一的标准,则各个异构系统对外提供的接口是各式各样的。SOA使用ESB来屏蔽异构系统对外提供各种不同的接口方式,以此来达到服务间的搞笑的互连互通。

        SOA架构是比较高级的架构设计理念,一般情况下我们可以说某个企业采用了SOA架构来构建IT系统,但不会说某个独立的业务系统采用了SOA的架构。SOA解决了传统IT系统重复建设和扩展效率低问题,但其本身也引入了更多的复杂性。ESB是厚重的,ESB需要实现与各种系统间的协议转换,数据转换,透明的动态路由等功能。ESB本身也会成为整个系统的性能瓶颈。典型的SOA架构图如下:

        微服务架构:

                随着互联网信息爆炸的时代,传统的架构已无法支撑互联网应用,互联网应用特点:高并发,可扩展,可伸缩,高可用,敏捷,安全等特点。随着而来微服务框架Dubbo,SpringCloud来势凶猛。尤其是近两年SpringCloud发展迅猛。提供了一系列全家桶开发框架。服务治理、服务注册、服务发现、客户端负载均衡、API网关、监控等功能。

            

           

猜你喜欢

转载自www.cnblogs.com/java1234/p/9330581.html