架构模式-分层
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服务进行缓存处理,来提高整体性能。
整体流程:
整体流程呈现出“总分总”的特点。
访问应用层的某个页面后,用户接下来的选择决定着开始服务层中的哪一个模块,之后服务层中模块在运行的同时会再调用数据层中的基础服务。
以上是关于架构模式-分层的主要内容,如果未能解决你的问题,请参考以下文章