首页 > 编程知识 正文

软件有几种架构,软件的架构是什么

时间:2023-05-05 14:15:27 阅读:217158 作者:4106

同时,分层的结构分层结构是最常见的软件结构,还可以是事实上的标准结构。 如果你不知道使用什么样的架构,就用它。

该体系结构将软件分为几个级别,每个级别都有明确的作用和分工,无需了解其他级别的细节。 层和层之间通过接口进行通信。

虽然没有明确规定必须将软件分为多少层,但四个层的结构是最常见的。

提供表示层用户接口、负责视觉和用户交互的业务层(business )实现业务逻辑持久层的数据,SQL语句是这一层的数据库一些存储数据的软件在逻辑层和持久层之间添加了服务层

用户请求依次通过这四个层次结构的处理,不能跳过任何一个层次结构。

好处

结构简单,容易理解不同技能,易于开发的程序员可以分工,担当不同的层,自然适合很多软件公司的组织结构可以每层独立测试,其他层的界面通过仿真解决缺点

随着环境的变化,需要调整代码或添加功能时,通常会很麻烦,而且需要时间进行部署。 如果只修改一小部分往往需要重新部署整个软件,并且不容易进行连续软件发行版的升级,则可能需要整个服务器的暂停可扩展性差。 在用户要求大幅增加的情况下,必须依次扩展各层,因为各层内部结合在一起,所以扩展很困难。 二、事件驱动架构事件(event )是当状态改变时来自软件的通知。

事件驱动体系结构(event-driven architecture )是通过事件进行通信的软件体系结构。 它分为四个部分。

用于接收“事件队列”(event queue )事件的入口调度器(event mediator )将不同的事件分发到不同业务逻辑单元的“事件通道”(event channel )。 调度程序和处理器之间的联系通道事件处理器(event processor )实现业务逻辑,并在处理完成时发出事件

好处

分布式异步架构、事件处理器之间的高级解耦、软件可扩展性和适用性广泛,可用于各种类型的项目。 由于事件的异步本质,它的缺点是可以独立加载和卸载充满软件的事件处理器,并且易于部署

异步编程(需要考虑远程通信、不能响应等情况)开发比较复杂,难以支持原子操作。 由于事件通过有多个处理器参与,很难回滚分布式特性和异步特性,所以该体系结构中有3、微核体系结构的微核体系结构(microkernel architecture )

内核(core )通常只包含系统执行的最小功能。 插件相互独立,为了不发生相互依存的问题,应该将插件之间的通信抑制到最小限度。

好处

良好的功能可扩展性(extensibility )易于部署、可定制、可增量部署,因为开发插件时功能相互隔离,插件可以独立加载和卸载

可扩展性(scalability )差,内核通常是独立的单元,要实现分布式开发比较困难。 这是因为插件与内核的通信以及内部插件注册机制4、微服务体系结构微服务体系结构(microservices architecture )是面向服务的体系结构(service )

每个服务都是独立的部署单元(separately deployed unit )。 这些单元都是分布式的,相互解耦,通过REST、SOAP等远程通信协议进行联系。

微服务体系结构分为三种实现模式。

rest风格的API模式:服务通过API提供,云服务属于这种类型的rest风格的APP模式。 该服务可以通过传统的网络协议或APP协议来提供,其背后通常存在多功能APP,常见于企业中的集中式消息模式。 采用消息拦截器可以实现消息队列、负载均衡、统一日志、异常处理,缺点是出现单点故障

可扩展性强,各服务器之间耦合低,易于部署。 软件由单个可部署单元分割为多个服务。 各服务是可部署单元,开发方便,各组件可持续集成开发,可实时部署,便于无中断升级,测试方便,可以分别测试各服务的缺点

通过强调相互独立和低耦合,服务有可能被细分为更小的部分。 结果,系统依赖于很多微服务器,乱得很重,性能也很差。 当需要服务之间的通信时,也就是说一个服务用于另一个服务时,整个体系结构就会变得复杂。 典型的例子是几个通用的Utility类,一个解决方案是将它们复制到所有服务器,以交换架构的简单性来换取冗馀。 由于分布式的本质,这种体系结构很难进行原子操作,也很难回滚事务。 五、云结构云结构(cloud architecture )主要解决扩展性和并发性问题,是最容易扩展的结构。

其高扩展性,主要

要原因是没使用中央数据库,而是把数据都复制到内存中,变成可复制的内存数据单元。然后,业务处理能力封装成一个个处理单元(prcessing unit)。访问量增加,就新建处理单元;访问量减少,就关闭处理单元。由于没有中央数据库,所以扩展性的最大瓶颈消失了。由于每个处理单元的数据都在内存里,最好要进行数据持久化。

这个模式主要分成两部分:处理单元(processing unit)和虚拟中间件(virtualized middleware)。

处理单元:实现业务逻辑虚拟中间件:负责通信、保持sessions、数据复制、分布式处理、处理单元的部署。

 

虚拟中间件又包含四个组件。

消息中间件(Messaging Grid):管理用户请求和session,当一个请求进来以后,决定分配给哪一个处理单元。数据中间件(Data Grid):将数据复制到每一个处理单元,即数据同步。保证某个处理单元都得到同样的数据。处理中间件(Processing Grid):可选,如果一个请求涉及不同类型的处理单元,该中间件负责协调处理单元部署中间件(Deployment Manager):负责处理单元的启动和关闭,监控负载和响应时间,当负载增加,就新启动处理单元,负载减少,就关闭处理单元。

优点

高负载,高扩展性动态部署

缺点

实现复杂,成本较高主要适合网站类应用,不合适大量数据吞吐的大型数据库应用较难测试

http://www.ruanyifeng.com/blog/2016/09/software-architecture.html

对javaer来说,分层架构的实例很多;事件驱动架构最经典的就是Netty,还有Spring mvc;插件架构最经典的就是eclipse,还有Shiro;微服务架构可以了解一下Spring boot和Spring cloud,国内的dubbo也很流行;云架构估计只有大公司才有。

https://www.cnblogs.com/doit8791/p/9343826.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。