架构模式-分层

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了架构模式-分层相关的知识,希望对你有一定的参考价值。

本人第一次在后台架构中引入分层概念,以下为我在项目中对于分层的初步理解

 

分层的好处:

1、降低系统中各个模块之间的耦合,保持各层之间的独立(各层可以根据具体情况独立演化发展,而不需要对其他层做出调整)

2、便于开发维护

3、对于支持高并发,向分布式方向发展至关重要(被分割的业务模块可以采取分布式部署,每个模块可以部署在独立的服务器集群上)

 

采用分层结构的系统可以分为:应用层、服务层、数据层。(应用层为最表层,服务层为中间层,数据层为最底层)

 

分层结构的约束:

1、禁止跨层次的调用(如:禁止应用层直接调用数据层)

2、禁止逆向调用(如:禁止数据层调用服务层)

 

各层的简要介绍:

应用层:对于网站来说,此层可用于各个页面的展示(如:将html页面通过smarty引擎转化为php页面并展示)。此层还可用来提供API服务(即:将第三方应用整理成API以便调用)

服务层:我对于此层的理解就是“各个独立的服务模块”(下面会有具体的介绍)。

数据层:这一层作为最底层,主要负责给服务层提供基础服务,如基础数据的查找与存取,和相应的缓存处理。

 

服务层详解:

服务层的内容很重要的一点是要做到“相互独立”,

服务层里应该存在的是各个功能的流程模块,(应该保证后期可以将各个功能模块分别部署到不同的服务器集群上)

服务层应该是整个系统的“功能流程核心”,比如一个论坛系统,它其实是由各个细小的服务模块组成,用户注册服务、用户登录服务、用户管理服务、用户之间的私信服务、等等。

 

服务层与数据层之间的关系:

假设服务层中有服务A和服务B,A服务是用户之间消息对话功能,B服务是系统中所有用户的一个排名功能。

A和B之间几乎无耦合,相互保持着独立。

假设数据层中有服务C,C服务用于“查询出数据库中的用户信息”。

数据层的作用之一就是给服务层提供基础的数据支持。A服务和B服务因为都牵扯到了用户,那么无疑都得从数据库中查询出用户的一些必要信息,那么服务层中的A和B就都需要调用到数据层中的C服务。

此时,我们还可以对C服务进行缓存处理,来提高整体性能。

 

整体流程:

整体流程呈现出“总分总”的特点。

访问应用层的某个页面后,用户接下来的选择决定着开始服务层中的哪一个模块,之后服务层中模块在运行的同时会再调用数据层中的基础服务。

以上是关于架构模式-分层的主要内容,如果未能解决你的问题,请参考以下文章

架构模式-分层

测试架构师:软件架构模式之分层架构 2

软件架构之分层架构理解

软件架构模式—分层模式

架构模式框架分层

架构思想之DDD