文章目录1 .分层体系结构(layered architecture )2.事件驱动体系结构(event-driven architecture )3.微核体系结构(microkernel architecture )
1 .分层结构(layered architecture ) ) ) ) ) ) )。
最常见的软件体系结构是将软件分为几个层,每个层都有明确的作用和分工,不需要了解其他层的细节,而是在层与层之间通过接口进行通信。
提供表示层用户接口、负责视觉和用户交互的业务层(business )实现业务逻辑持久层的数据,SQL语句是这一层的数据库一些存储数据的软件在逻辑层和持久层之间添加了服务层
用户请求依次通过这四个层次结构的处理,不能跳过任何一个层次结构。
优点:
结构简单,容易理解不同技能,易于开发的程序员可以分工,负责不同的层,天然的适合很多软件公司的组织结构可以每层独立测试,其他层的界面通过仿真解决缺点
随着环境的变化,需要调整代码或添加功能时,通常会很麻烦,而且需要时间进行部署。 如果只修改一小部分往往需要重新部署整个软件,并且不容易进行连续软件发行版的升级,则可能需要整个服务器的暂停可扩展性差。 在用户要求大幅增加的情况下,必须依次扩张各层,由于各层内部耦合,扩张变得困难。 2 .事件驱动架构事件是当状态改变时由软件通知的通知。
事件驱动体系结构(event-driven architecture )是通过事件进行通信的软件体系结构。 它分为四个部分。
用于接收“事件队列”(event queue )事件的入口调度器(event mediator )将不同的事件分发到不同业务逻辑单元的“事件通道”(event channel )。 调度程序和处理器之间的联系通道事件处理器(event processor )实现业务逻辑,并在处理完成时发出事件
优点:
分布式异步体系结构、事件处理器之间的高级解耦、广泛的软件可扩展性和适用性,可在各种类型的项目中提供高性能。 由于事件异步的本质,它的缺点是可以独立加载和卸载堵塞软件的事件处理器,并且易于部署。
关于异步编程(需要考虑远程通信、不能响应等),开发比较复杂,难以支持原子操作。 由于事件通过涉及多个处理器,很难回滚分布式特性和异步特性,因此该体系结构很难进行测试。 3 .微核体系结构or插件体系结构也称为插件体系结构
内核(core )通常只包含系统执行的最小功能。 插件相互独立,为了不发生相互依存的问题,应该将插件之间的通信抑制到最小限度。
优点:
良好的功能可扩展性(extensibility )易于部署、可定制、可增量部署,因为开发插件时功能相互隔离,插件可以独立加载和卸载
扩展性(scalability )差,内核通常是独立的单元,很难容易进行分布式开发。 原因在于插件与内核的通信,以及内部插件注册机制4 .微服务体系结构(microservices architecture )微服务体系结构(microservicesarchiter )
每个服务都是独立的部署单元(separately deployed unit )。 这些单元都是分布式的,相互解耦,通过REST、SOAP等远程通信协议进行联系。
微服务体系结构分为三种实现模式。
rest风格的API模式:服务通过API提供,云服务属于这种类型的rest风格的APP模式。 该服务可以通过传统的网络协议或APP协议来提供,其背后通常存在多功能APP,常见于企业中的集中式消息模式。 采用消息拦截器可以实现消息队列、负载均衡、统一日志、异常处理,缺点是出现单点故障
可扩展性强,各服务器之间耦合低,易于部署。 软件由单个可部署单元分割为多个服务。 各服务为可部署单元,开发方便,各组件可持续集成开发,可实时部署,无中断升级方便测试,可分别测试各服务的缺点。
强调相互独立
立和低耦合,服务可能会拆分得很细。这导致系统依赖大量的微服务,变得很凌乱和笨重,性能也会不佳。一旦服务之间需要通信(即一个服务要用到另一个服务),整个架构就会变得复杂。典型的例子就是一些通用的 Utility 类,一种解决方案是把它们拷贝到每一个服务中去,用冗余换取架构的简单性。分布式的本质使得这种架构很难实现原子性操作,交易回滚会比较困难。 5. 云结构(cloud architecture)云结构(cloud architecture)主要解决扩展性和并发的问题,是最容易扩展的架构。
它的高扩展性,主要原因是没使用中央数据库,而是把数据都复制到内存中,变成可复制的内存数据单元。然后,业务处理能力封装成一个个处理单元(prcessing unit)。访问量增加,就新建处理单元;访问量减少,就关闭处理单元。由于没有中央数据库,所以扩展性的最大瓶颈消失了。由于每个处理单元的数据都在内存里,最好要进行数据持久化。
这个模式主要分成两部分:处理单元(processing unit)和虚拟中间件(virtualized middleware)。
处理单元:实现业务逻辑虚拟中间件:负责通信、保持sessions、数据复制、分布式处理、处理单元的部署。
虚拟中间件又包含四个组件。
优点:
高负载,高扩展性动态部署缺点:
实现复杂,成本较高主要适合网站类应用,不合适大量数据吞吐的大型数据库应用较难测试声明:本文转自博客园《常见的五种软件架构》,博主Q仔