首页 > 编程知识 正文

分布式系统架构设计,系统层次图

时间:2023-05-04 22:49:51 阅读:172676 作者:3455

本文综述了传统的基于MVC结构、后端三层结构、蚂蚁层结构、DDD结构以及DDD结构的清洁结构和六角形结构。 去了之后变得越来越复杂,其他也应对着软件工程的越来越复杂,体系结构模型也越来越复杂

在软件体系结构领域,没有很多成功的案例,不同的业务场景采用不同的体系结构。 而且,随着业务的发展,为了适应业务的发展,不断调整体系结构,使变化(体系结构、技术成分、重构等)保持不变,这是合格的软件工程师的目标

1 .为什么要分层? 分层体系结构是将软件模块水平划分为多个层次,一个系统由多个层次组成,每一层由多个模块组成。 同时,每一层都有自己的职责,多层次合作提供完整的功能。

如果系统没有分层,当业务规模增加或流量增加时,只能扩展整个系统。 分层后,可以很容易地将几个模块分离开来,独立成为一个系统。 而且,有以下特点(优点)。

高凝聚:分层设计简化了系统设计,使用户可以集中精力处理不同层的模块。 在层和层之间通过接口和API进行相互作用,依赖方也可以不知道依赖方的详细复用。 分层后,可以实现高复用可扩展性。 分层体系结构通过简化复杂的问题,并根据单一职责原则将职责交给各层代码部门,基于“高内聚、低耦合”的设计理念来实现,从而提高了代码的可维护性和可扩展性。

2 .传统的MVC体系结构? 在不使用O/R Mapping的情况下实现APP应用程序时,需要编写大量数据访问层的代码来存储、删除和读取数据库中的对象信息。 这些代码可能是重复的。 使用ORM可以大幅减少重复代码。 对象映射(Object Relational Mapping,简称ORM ),主要实现程序对象到关系数据库数据的映射。

优点:关注前后端分离

缺点:模型层层次太粗,融合了数据处理、业务处理等所有功能。 核心复杂的业务逻辑被放置在模型层,模型层混乱

适应场景

模型m )核心逻辑和数据- -业务模型(承载模型、数据并计算用户提交请求的模块。 分为数据载体Bean和业务处理Bean两个类别。 承载数据的Bean是承载业务数据的物理类,用于承载业务数据,如Student和User。 业务处理Bean是一个Service或Dao对象,专门用于处理用户的请求。 视图v :显示数据---用户界面(视图,为用户提供使用界面,直接与用户交互。 (控制器c )处理用户输入并解除结合---控制器)用于将用户的请求转发到合适的模型进行处理,并处理模型的计算结果向用户提供响应的控制器。 )作用)使用mvc的作用是通过分离m和v来允许同一程序使用不同的表示形式。 实际上,这是可以分别在条形图或饼图中显示的一组数据

3 .后端三层体系结构? 表达层: controller (通俗地说是一种向用户展示的界面,对应项目的Web层包括servlet、controller等。 (逻辑层)也称为service )域层,负责处理系统的业务逻辑,与项目的service和ServiceImpl等相对应。 )数据访问层) dao )此层进行的事务直接与数据库进行操作,对数据的添加、删除、修改、更新、检索等都与项目中的dao相对应。 )

优点:逻辑和数据层分离

缺点:模型层层次粗糙,核心复杂的业务逻辑安排在模型层,模型层混乱

适应场景后端业务逻辑简单的服务。 例如,接口直接增加和删除数据库4 .是否提供了后端三层架构和MVC的区别和联系?

严格来说,MVC是三层架构中的UI层。 总之,MVC再次分化了三层架构中的UI层,将其分为控制器、视图、实体三个部分。 控制器完成页面逻辑,通过实体与接口层完成通话,c层直接与三层中的BLL交互。

三层架构和MVC可以共存。 三层体系结构基于业务逻辑,而MVC基于页面。 MVC是表示模型,三层体系结构是典型的体系结构模型。

三层结构的层次模型是典型的上下级关系,上层依赖于下层。 但是,MVC作为表达模式并不是上下级关系,而是相互合作的关系。 即使将MVC作为模式,也不是分层模式。 MVC和三层架构几乎没有可比性,是应用于不同领域的技术。

5 .蚂蚁四层分层结构? 三层体系结构的实现相对简单,许多朋友可能认为项目分层应该如此。 结果,往往在服务层堆积了很多业务逻辑。 《阿里巴巴 Java 开发手册》进一步细分了传统的三层体系结构,添加了Manager通用的业务处理层。

Manager层调用第三方接口,包括调用支付服务、审核服务等第三方接口,这些服务可以降低原始服务层的公共能力,包括缓存和存储交互策略以及中间件访问

这一层有两个作用。

一、原服务层的一些共性能力可以下沉到这个层。 例如,缓存和存储器之间的交互

策略,中间件的接入;二、也可以在这一层封装对第三方接口的调用,比如调用支付服务,调用审核服务等RPC接口。

特点:添加了Manager 通用业务处理层。
优点:相比于三层方式,添加了通用处理层对接外部平台。 上下游对接划分的比较清晰
缺点:核心业务逻辑层没有划分
适应场景:业务逻辑不复杂的常用业务

另外一种讲解方法:

通用业务处理层,它有如下特征:

对第三方平台封装的层,预处理返回结果及转化异常信息。对Service层通用能力的下沉,如缓存方案、中间件通用处理。与DAO层交互,对多个DAO的组合复用。

其各层的作用如下:

终端显示层:各端模板渲染并执行显示的层。当前主要是Velocity渲染,JS渲染, JSP渲染,移动端展示等。开放接口层:将Service层方法封装成开放接口,同时进行网关安全控制和流量控制等。Web层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。Service层:业务逻辑层。Manager层:通用业务处理层。DAO层:数据访问层,与底层 MySQL、Oracle、HBase 等进行数据交互。外部接口或第三方平台:包括其它部门RPC开放接口,基础平台,其它公司的HTTP接口。 6.DDD分层架构?

DDD是一种处理高度复杂领域的设计思想,试图分离技术实现的复杂性,同时围绕业务概念构建领域模型,提出的一种软件架构设计的方法论。

DDD分层架构将数据、缓存等都视为基础层, 可以被所有层调用;抽离了领域层,负责核心业务逻辑处理,领域层调用外部依赖全部通过接口,以保证领域层的100%单测覆盖率;应用层聚合多个领域层的能力,只做功能的组合、转发,不负责具体业务逻辑。

一、特点:

数据、缓存等都视为基础层, 可以被所有层调用抽离了领域层,负责核心业务逻辑处理,领域层调用外部依赖全部通过接口,以保证领域层的100%单测覆盖率应用层聚合多个领域层的能力,只做功能的组合、转发,不负责具体业务逻辑

优点:相比于三层方式,更关注领域服务,即业务核心逻辑的划分、收敛
缺点:分层复杂, 如果业务逻辑简单没有必要
适应场景:业务复杂的业务

接口层(Interfaces):该层包含与其他系统交互的所有内容,如Web服务器、RESTful接口。接口层处理传入数据的解释、校验、编解码、序列化操作,同时可以考虑引入专门的DTO(数据转换对象)来协助数据转换;

应用层(Application):该层负责驱动应用程序完成工作流程。很薄一层,协调多个领域对象(实体、聚合根、领域服务)实现服务编排和组合完成工作流,该层通常不应该包含具体业务逻辑。该层涉及:其他微服务RPC调用、微服务编排和组合、分布式事务实现、消息驱动事件的驱动、日志记录等。

领域层(Domain):该层是软件的核心,包含业务逻辑具体实现,包含实体、值对象、聚合、领域服务、仓储接口等领域对象内容,通常该层应该配备图示告知软件是如何工作的;

基础层(Infrastructure):包含网关、缓存、数据库存储、消息中间件、监控、应用程序服务等通用的技术和基础服务。基础层以不同方式支持到其他三层,促进各层间通信。配置文件、数据库Schema模式定义以及仓储接口实现都是基础结构的一部分;

二、和传统三层架构的对比

DDD四层架构也基于传统三层架构的,不同点有以下几方面:

关注点不一样:三层架构关注请求调用顺序;DDD架构关注领域服务。横向划分方式不一样:三层架构主要关注纵向划分,对横向划分没有约定;DDD架构更关注纵向,即:多个领域层之间划分及交互方式。对资源的定位不一样:三层架构把所有依赖的数据都放到数据访问层;DDD架构只将领域强关联的数据放到Repository中,其他比如API层缓存、文件等都当成基础服务来处理。
7.整洁架构和六边形架构?

整洁架构和六边形架构都是DDD架构的一种方式,只不过是视角不同。

(1)整洁架构
特点:整洁架构的层就像洋葱片一样,它体现了分层的设计思想

整洁架构最主要的原则是依赖原则,它定义了各层的依赖关系,越往里依赖越低,代码级别越高,越是核心能力。外圆代码依赖只能指向内圆,内圆不需要知道外圆的任何情况。

(2)六边形架构
六边形架构又名“端口适配器架构”。追溯微服务架构的渊源,一般都会涉及到六边形架构。

六边形架构的核心理念是:应用是通过端口与外部进行交互的。我想这也是微服务架构下API网关盛行的主要原因吧。

也就是说,在下图的六边形架构中,红gxddp的核心业务逻辑(应用程序和领域模型)与外部资源(包括APP、Web应用以及数据库资源等)完全隔离,仅通过适配器进行交互。它解决了业务逻辑与用户界面的代码交错问题,很好地实现了前后端分离。六边形架构各层的依赖关系与整洁架构一样,都是由外向内依赖。

参考:(站在巨人的肩膀上才能看得更远)
1、https://blog.51cto.com/u_15265637/2898534
2、https://juejin.cn/post/6974541599636193287

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