分层结构的生活例子_分层架构的一些思考

本文探讨了分层架构的概念、目的及优势,包括降低复杂性、提高可扩展性和可维护性。文章详细阐述了如何进行分层设计,强调了层间职责隔离和接口交互的重要性,并对比了模块、组件、系统与子系统的关系。同时,讨论了框架与架构的区别,以及高内聚、低耦合的原则在架构设计中的应用。
摘要由CSDN通过智能技术生成

7163afb7853e30c12ccbb69cda5ef04d.png

分层架构是什么?

我们首先需要知道架构设计的目的是什么?架构设计的目的是解决软件系统复杂度带来的问题。分层架构设计只不过是架构设计中的一种设计思想和方法论。

1.分层架构将软件应用划分为若干个层,每一层只解决一部分的问题,通过各层的协作提供整体的解决方案。大的问题被分解为一系列相对独立的子问题,局部化在每一层中,这样就有效的降低了单个问题的规模和复杂度,实现了复杂系统的第一步也是最为关键的一步分解。

2.分层架构具有良好的拓展性。各层级的职责单一化,实现高内聚低耦合,各层级的功能可以最大化地复用,层与层之间可以方便的插入新的层来拓展应用。

3.分层架构利于维护。不同的功能被封装在不同的层中,层与层之间的耦合度显著降低,各层之间通过接口交互,因此改某层代码时,只要不修改接口,就不会严重影响其他层。

为什么需要分层架构设计?

1.降低系统的复杂度,通过分层将一个复杂的系统拆分成不同层次的关联个体,各个个体专注于它们特有的职责和功能,其实它也是一种拆分思想,将一个大的问题拆分成各个子问题,击破各个子问题之后,整个大问题也就得以解决了。

2.功能复用和封装。让上游更方便地获取下游的数据,通过制定适合各层的数据格式和数据交互协议,让各层的数据交互更加方便。下游只给上游提供接口,屏蔽了接口的实现复杂度,让各层的职责专一化。

3.系统分为多层,每层完成独立的功能,层内部继续细分子模块,每层能够独立演进、部署。

如何进行分层架构设计?

1.分层原则可以基于业务抽象、硬件、变化性等来划分。

2.各层的功能基于同层和底层的功能之上,不能出现下层调用上层的情况,这样设计是为了避免互相调用导致的结构复杂化。

3.各层提供相应的接口与实现分离,对该层的访问只能通过接口进行。

4.不同层的数据形态可能不一样,各个层之间的数据传输协议也可能不一样。

总结:分层架构通过对关注点的分离有利于分化系统的复杂性,提升系统的可拓展性和可维护性。但在分层架构中,一个底层功能的获取需要经过多个层次的传递,不可避免的导致性能的下降。

模块和组件的区别

其实这两个概念不太好区分,主要还是按照分析的角度来进行区分,从“逻辑”的角度来进行系统拆分,拆分后的单元就是模块。从“物理”的角度来拆分,拆分后的单元就是组件。

举个例子来说:

学生信息管理系统,从逻辑上来拆分,可以分为登录和注册模块,个人信息模块,个人考试成绩模块

从物理角度来拆分,可以分为nginx方向代理服务器,WEB服务器,mysql数据库(各个物理服务器又可以再次细化拆分)

系统与子系统有啥区别?

维基百科对于系统的定义:系统是由一群有关联的个体组成,个体根据某些规则运作,最终能实现一些单个个体无法完成的功能和能力。

关键词是:

关联:系统由一些有关联的个体组成,无关联的个体无法组成一个系统。

规则:系统内的个体需要一定的规则运作,而不是各自为政。

能力:最终系统拥有的能力不是各个个体的能力之和,而是会产生一些新的组合能力。

我们再来看下子系统的定义:子系统也是由一群有联系的个体所组成的系统,多半会是更大系统的一部分。

其实子系统和系统的定义是一样的,只不过观察的角度不一样,一个系统可能是另一个更大系统的子系统。

我们拿微信这个例子来分析一下:

1.微信本身是一个系统,包含聊天,登录,支付,朋友圈等子系统。

2.朋友圈这个子系统包含发动态,点赞,评论等子系统。

3.评论这个子系统又包含防刷,审核,存储,发布等子系统。

4.评论审核子系统不再包含业务意义上的子系统,而是包含一些模块和组件,这些模块或者组件本身也是另外一个维度的系统。例如,Mysql,Redis是存储系统,但不是业务子系统。

框架与架构的区别

软件框架:实现某个业界标准或完成某个特定基本任务的规范,也指为了实现某个软件规范时,提供该规范的一些基础功能的软件产品。

核心特点是:

1.框架是组件规范。如行内著名的MVC开发规范。

2.框架是提供基础功能的产品。如Spring MVC框架是基于MVC规范的开发框架,提供了很多基础的功能。

框架关注的是规范,架构关注的是结构。

架构到底是什么呢?

我们可以这样理解:架构是软件系统的顶层结构。

1.软件系统是由很多关联的个体组成,这些个体可能是系统,子系统,模块,组件等;所以架构需要清楚地描述有哪些个体。

2.系统中的个体需要按照特定的规则运作,架构需要明确和规范个体运作的规则。

3.顶层结构可以更好地区分系统和子系统,避免将系统架构和子系统架构混淆在一起导致架构层次混乱。

什么是高内聚,低耦合?

我们在进行架构设计时,内聚高低是指模块或者关注点内部的一系列相关功能的相关程度,同一模块内的功能相关度越高,表示内聚性越高。

举个例子来说明下:假如有订单和用户模块,高内聚的设计是:订单模块只涵盖订单高相关度的功能,例如:下单,订单信息查询。用户模块只涵盖用户高相关度的功能,例如:用户登录,注册,用户信息查询。

低内聚的设计是:订单模块涵盖下单,用户注册功能。用户模块涵盖:订单信息查询,用户登录,用户信息查询功能。

从上面例子我们可以知道,高内聚设计的优点是:1.各个模块职责划分清晰,独立性高,模块之间不会相互干扰,各个模块拥有良好的拓展性。

低内聚的表现是:模块的功能不单一,职责不明确,模块之间相关性高,容易互相影响。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值