五种常见软件架构
⼀、分层架构
分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构。如果你不知道要⽤什么架构,那就⽤它。这种架构将软件分成若⼲个⽔平层,每⼀层都有清晰的⾓⾊和分⼯,不需要知道其他层的细节。层与层之间通过接⼝通信。虽然没有明确约定,软件⼀定要分成多少层,但是四层的结构最常见。
有的软件在逻辑层和持久层之间,加了⼀个服务层(service),提供不同业务逻辑需要的⼀些通⽤接⼝。
⽤户的请求将依次通过这四层的处理,不能跳过其中任何⼀层。
优点
缺点
⼆、事件驱动架构
事件(event)是状态发⽣变化时,软件发出的通知。
事件驱动架构(event-driven architecture)就是通过事件进⾏通信的软件架构。它分成四个部分。
对于简单的项⽬,事件队列、分发器和事件通道,可以合为⼀体,整个软件就分成事件代理和事件处理器两部分。优点
缺点
三、微核架构
微核架构(microkernel architecture)⼜称为"插件架构"(plug-in architecture),指的是软件的内核相对较⼩,主要功能和业务逻辑都通过插件实现。
内核(core)通常只包含系统运⾏的最⼩功能。插件则是互相独⽴的,插件之间的通信,应该减少到最低,避免出现互相依赖的问题。
优点
缺点
四、微服务架构
微服务架构(microservices architecture)是服务导向架构(service-oriented architecture,缩写 SOA)的升级。
每⼀个服务就是⼀个独⽴的部署单元(separately deployed unit)。这些单元都是分布式的,互相解耦,通过远程通信协议(⽐如REST、SOAP)联系。
微服务架构分成三种实现模式。
优点
缺点
五、云架构
云结构(cloud architecture)主要解决扩展性和并发的问题,是最容易扩展的架构。
它的⾼扩展性,主要原因是没使⽤中央数据库,⽽是把数据都复制到内存中,变成可复制的内存数据单元。然后,业务处理能⼒封装成⼀个个处理单元(prcessing unit)。访问量增加,就新建处理单元;访问量减少,就关闭处理单元。由于没有中央数据库,所以扩展性的最⼤瓶颈消失了。由于每个处理单元的数据都在内存⾥,最好要进⾏数据持久化。
这个模式主要分成两部分:处理单元(processing unit)和虚拟中间件(virtualized middleware)。
虚拟中间件⼜包含四个组件。
优点
常用微服务架构
缺点
对javaer来说,分层架构的实例很多;事件驱动架构最经典的就是Netty,还有Spring mvc;插件架构最经典的就是eclipse,还有Shiro;微服务架构可以了解⼀下Spring boot和Spring cloud,国内的dubbo也很流⾏;云架构估计只有⼤公司才有。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论