分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每一个部分负责一部分比相对照较单一的职责 ,然后通过上层对下层的依赖和调用组成一个完整的系统。
分层结构无处不在,比如网络7层通信协议。计算机硬件、操作系统、软件也能够看做是分层结构。在大型站点中也採用分层结构。
将站点分为应用层、服务层、数据訪问层, 通过分层,能够将一个庞大的系统切分成不同的部分,便于分工合作开发和维护。各层之间具有一定的独立性,仅仅要维持调用接口不变。各层能够依据详细的业务变化独立演变发展而不影响其它的层。
在分层架构中。必须合理划分层次边界和接口,严禁跨越层次调用。
大的分层机构内部还能够继续分层,比方应用层能够分为视图层、业务逻辑层等。
分层结构是逻辑上的。在物理部署上,三层结构能够部署在同一个物理机器上,可是随着站点业务的增大,可能须要将已经分层的 模块进行分离部署,以便站点能够应用很多其它的资源来应对很多其它用户的訪问。
分层结构的最開始是为了使得软件模块划分清晰和easy维护,在站点的不断发展演变过程中。分层结构对于站点从单机部署到分布式方向发展是至关重要,因此在站点的演变初期就应该使用分层结构,将来的站点才干更好的演变。
2、切割:
分层结构是在横向维度上进行切分的,而切割是在纵向维度上进行切割。随着站点越来越大,功能越来越复杂,这个时候能够把不同功能的业务切割开来进行独立的部署,一方面能够简化维护,还有一方面能够使得在整个站点中并发量最大的业务分离开来独立享受资源。
3、分布式:
分层和切割的主要目的是为了对切分后的模块便于分布式部署,也就是将不同的模块部署在不同的机器上面。通过远程调用完毕对应的业务。
分布式意味着站点能够使用很多其它的计算机资源来应对高并发的訪问。为更过的用户提供訪问。
可是分布式也带来了非常多的弊端。处在同一分布式中的机器互相訪问必需要通过网络作为中间介质,假如说为了完毕某个业务,需要通过多台机器来进行计算处理。那么在计算的过程中必需要依赖网络的质量。可能会影响计算处理的速度。
再者,server越多,server宕机的概率也大。 某台机器上的服务不可用使得站点的可用性减少。还有就是在分布式中,分布式事务也难保证一致。这对站点的业务会造成非常严重的 影响。
分布式导致站点以来错综复杂。提高了站点开发维护的难度。
分布式方案能够分为下面几种:
分布式应用和服务:将分层和切割后的业务进行分布式部署,能够使得站点应对更大的并发量。
分布式静态资源:也就是将站点的静态资源(js、image、css、logo等)独立部署,并採用独立的域名,这也就是人们常说的"动静分离"。这样能够减轻业务server的訪问压力,能够使浏览器高速的响应。
分布式数据和存储:单台机器无法存储大数据。因此须要很多其它地机器来联合存储,除了对传统的关系型数据库进行分布式部署之外,为站点的大数据存储应运而生的nosql产品差点儿都是分布式的。
分布式计算:站点某些部分处理的数据量很之大,这个时候就须要把计算程序分发到各台机器上一边加速计算和响应。
4、集群:使用分布式尽管已经将分层和切割后的模块进行部署,可是对于大型站点的首页(訪问量巨大)还须要独立部署,即多台机器部署同样的应用构成一个集群,同一时候通过负载均衡设备共同对外提供服务。
当须要应对更大的并发时,仅仅须要向集群中增加机器就可以。
本文内容摘自李智慧《大型站点技术架构 核心原理与案例分析》