大型网站技术架构(二):大型网站架构模式

每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作。

网站架构模式

分层

  • 分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。
  • 在大型网站架构中采用分层结构,将网站软件分为应用层、服务层、数据层。
  • 应用层负责具体业务和视图展示,如网站首页及搜索输入和结果展示等。
  • 服务层为应用层提供服务支持,如用户管理服务、购物车服务等。
  • 数据层提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等。
  • 分层架构中必须合理规划层次边界和接口。在开发过程中,严格遵循分层架构的约束,禁止跨层次的调用(应用层直接调用数据层)及逆向调用(数据层调用服务层,或者服务层调用应用层)。
  • 在实践中,大的分层结构内可以继续分层,如应用层可以再细分为视图层(美工负责)和业务逻辑层(工程师负责);服务层也可以细分为数据接口层(适配各种输入和输出的数据格式)和逻辑处理层。
  • 分层架构是逻辑上的,在物理部署上,三层结构可以部署在同一个物理机器上,但是随着网站业务的发展,必然需要对已经分层的模块分离部署,即三层结构分别部署在不同的服务器上,使网站拥有更多的计算资源以应对越来越多的用户访问。

分割

  • 分割是在纵向方面对软件进行切分。
  • 网站越大,功能越复杂,服务和数据处理的种类也就越多,将这些不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护;另一方面,便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。

分布式

  • 对于大型网站,分层和分割的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。
  • 问题:首先,分布式意味着服务调用必须通过网络,这可能会对性能造成比较严重的影响;其次,服务器越多,服务器宕机的概率也就越大,一台服务器宕机造成的服务不可用可能会导致很多应用不可访问,使网站可用性降低;另外,数据在分布式的环境中保持数据一致性也非常困难,分布式事务也难以保证,这对网站业务正确性和业务流程有可能造成很大影响;分布式还导致网站依赖错综复杂,开发管理维护困难。
  • 分布式应用和服务:将分层和分割后应用和服务模块分布式部署
  • 分布式静态资源:网站资源如JS、CSS、Logo图片等资源独立分布式部署,并采用独立的域名,即动静分离。
  • 分布式数据和存储
  • 分布式计算:目前网站普遍使用Hadoop及其MapReduce分布式计算框架进行此类批处理计算,其特点是移动计算,将计算程序分发到数据所在的位置以加速计算和分布式计算。
  • 分布式部署:支持网站线上服务器配置实时更新。
  • 分布式锁:分布式环境下实现并发和协同
  • 分布式文件:支持云存储

集群

  • 将独立部署的服务器集群化,即多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。
  • 服务集群有更多服务器提供相同服务,可以提供更好的并发特性,当有更多用户访问的时候,只需要向集群中加入新的机器即可。
  • 一个应用由多台服务器提供,当某台服务器发生故障时,负载均衡设备或者系统的失效转移机制会将请求转发到集群中其他服务器上,使服务器故障不影响用户使用。
  • 在网站应用中,即使是访问量很小的分布式应用和服务,也至少要部署两台服务器构成一个小的集群,目的就是提高系统的可用性。

缓存

  • 缓存就是将数据存放在距离计算最近的位置以加快处理速度。
  • CDN:即内容分发网络,部署在距离终端用户最近的网络服务商,用户的网络请求总是先到达他的网络服务商那里,在这里缓存网站的一些静态资源(较少变化的数据),可以就近以最快速度返回给用户。
  • 反向代理:反向代理属于网站前端架构的一部分,部署在网站的前端,当用户请求到达网站的数据中心时,最先访问到的就是反向代理服务器,这里缓存网站的静态资源,无需将请求继续转发给应用服务器就能返回给用户。
  • 本地缓存:在应用服务器本地缓存着热点数据,应用程序可以在本机内存中直接访问数据,而无需访问数据库。
  • 分布式缓存:将数据缓存在一个专门的分布式缓存集群中,应用程序通过网络通信访问缓存数据。
  • 使用缓存的前提条件:一是数据访问热点不均衡,某些数据会被更频繁的访问,这些数据应该放在缓存中;二是数据在某个时间段内有效,不会过期,否则缓存的数据就会因已经失效而产生脏读,影响结果的正确性。
  • 缓存除了可以加快数据访问速度,还可以减轻后端应用和数据存储的负载压力。

原文地址:https://www.cnblogs.com/HNewa/p/Large_Website_Architecture_Model.html

时间: 2024-10-12 21:58:48

大型网站技术架构(二):大型网站架构模式的相关文章

Direct Access技术之二:DA架构及原理

一.Direct Access组件 如下图 说明: 1. 企业内网PKI技术为企业DirectAccess服务器,DirectAccess客户端和Intranet服务器颁发计算机证书. 2. DirectAccess服务器一般用于连接到内联网和因特网,并且充当Internet上DirectAccess客户端的网关. 3. 网络位置服务器是DirectAccess客户端仅连接到内部网络时可访问到的一台Web服务器. 4. 外部DirectAccess客户端有配置活动名称解析策略表(NRPT)规则和

《大型网站技术架构》读书笔记二:大型网站架构模式

一.分层 最常见的架构模式,将系统在横向维度上切分成几个部分,每个部分单一职责.网站一般分为三个层次:应用层.服务层和数据层,其具体结构如下图所示: 通过分层,一个庞大系统切分成不同部分,便于分工合作和维护. 但是,分层架构也有一些挑战:①必须合理规划层次边界和接口:②禁止跨层次的调用及逆向调用. 二.分割 分割是在纵向方面对软件进行切分->将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,有助于软件开发和维护,还便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力. 三.分布

大型网站技术架构(二)--架构模式

大型网站技术架构(一)--大型网站架构演化 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复工作. 所谓网站架构模式即为了解决大型网站面临的高并发访问.海量数据.高可靠运行灯一系列问题与挑战.为此,在实践中提出了许多解决方案,以实现网站高性能.高可靠性.易伸缩.可扩展.安全等各种技术架构目标. 1.分层 分词是企业应用系统中最常见的一种架构牧师,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后

读书笔记(二)-- 《大型网站技术架构:核心原理与案例分析》

注:作为一个搞IT的技术人员,技术书籍是不可缺少的,<大型网站技术架构:核心原理与案例分析>这本书是app后台开发群的群主推荐的书籍,书中提到的技术架构方法,不仅仅适用于网站,其他方面的开发都可以借鉴其中的思想,是不可多得的一本好书.由于本书是找一位同事借的,周末就需要读完还给他,再次验证一个道理,书还是借的读起来有效率. 阅读时间:2015年1月15日--2015年1月18日 本书主要讲述的是大型网站的技术架构,着重从五个方面阐述需要关心的核心架构元素:性能.可用性.伸缩性.扩展性和安全性.

《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 一.可伸缩与可扩展-傻傻分不清楚 上篇笔记我们学习了可伸缩架构,但在实际场合中,包括许多架构师也常常混淆可伸缩和可扩展,用可扩展表示伸缩性.那么在此,跟随作者我们来理清这两个概念,避免我们以后对其傻傻分不清楚. (1)扩展性(Extensibiltiy) 指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力.我们不禁想到了面向对象中一大原则:开闭原则,对扩展开放,对修改封闭.也就说,当系统新增一个功能时

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力. 一.网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性: (2)横向分离:将不同的业务模块分离部署

《大型网站技术架构》读书笔记之八:固若金汤之网站的安全性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 一.网站应用攻击与防御 二.信息加密技术与密钥安全 三.信息过滤与反垃圾 四.电子商务风险控制 五.学习总结 转眼之间,<大型网站技术架构>的读书笔记到此就结束了.最近时间非常紧,因此本篇没有详细对笔记进行介绍(本篇涉及太多内容,而且都是安全相关的).通过本书的学习,我们从高性能.高可用.伸缩性.可扩展性.安全性五个方面的架构学习了每个方面经典的技术方案,虽然以理论偏多,但还是可以从中管中窥豹,一览

《大型网站技术架构-核心原理与案例分析》之一: 大型网站架构演化

最近刚刚读完李智慧的<大型网站技术架构-核心原理与案例分析>,对每章重点内容作了一些笔记,以便加深印象及日后查阅. 一.大型网站软件系统的特点 高并发,大流量:需要面对高并发用户,大流量访问. 高可用:系统7X24小时不间断服务. 海量数据:需要存储.管理海量数据,需要使用大量服务器. 用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别. 安全环境恶劣:由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几乎每天都会被黑客攻击. 需求快

大型网站技术架构笔录(1):演化

一)大型网站软件系统特点: 1)高并发.大流量:想想每年双十一 2)高可用:7*24小时不间断服务 3)海量数据:存储管理海量数据 4)用户分布广泛,网络情况复杂 5)安全环境恶劣:黑客,黑客,黑客 6)需求快速变更,发布频繁:快速适应市场,满足用户需求 7)渐进式发展:大型网站都是从小网站开始的 二)大型网站架构演化过程 1)初始阶段网站架构:应用程序.数据库.文件等所有资源都集中在一台服务器,LAMP架构. 瓶颈:各种压力大,不说了. 2)将应用和数据库从物理上分离,变成了3台机器. 应用服

大型网站技术架构(七)--网站的可扩展性架构

大型网站技术架构(一)--大型网站架构演化 大型网站技术架构(二)--架构模式 大型网站技术架构(三)--架构核心要素 大型网站技术架构(四)--网站的高性能架构 大型网站技术架构(五)--网站高可用架构 大型网站技术架构(六)--网站的伸缩性架构 扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力. 设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提供模块的复用性.模块通过分布式部署,独立的模块部署在独立的服务器上(集群)从物理上分离模块之间的耦合关系