第二章 大型网站架构模式

内容梳理

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

2.1 网站架构模式

  解决大型网站高并发访问、海量数据处理、高可靠运行的问题,为实现大型网站高性能、高可用、易伸缩、可扩展、安全等目标提出的解决方案。  

  2.1.1 分层

  将系统在横向维度上切分成几个部分,每个部分负责单一职责,通过上层对下层的依赖和调用组成完整系统。

  

  各层之间独立,只要维持调用接口不变,各层根据具体问题独立演化发展而不影响其他层。开发时要严格遵循分层架构约束,禁止跨层调用和逆向调用。分层架构师逻辑上的,大的分层内部还可以继续分层。

  2.1.2 分割

  在纵向维度上对软件进行切分。 将不同的功能和服务进行分割,包装成高内聚低耦合的模块单元,便于开发、维护和部署,提高网站的并发处理能力和功能扩展能力。

  不同模块在逻辑上还是物理部署上都可以是独立的,通过远程调用协作工作。

  2.1.3 分布式

  使用更多的计算机完成同样的功能,解决高并发问题。随着CPU、内存、存储资源的增多,处理的并发访问和数据量就越大。

  分布式带来的其他问题:(1)通过网络调用服务,影响系统性能;(2)服务器个数增多,宕机概率增大,降低系统可用性;(3)难以保持数据一致性和分布式事务;(4)网站依赖错综复杂,开发管理维护困难。

  常用的分布式方案:(1)分布式应用和服务:将各个模块分布式部署,提高网站性能和并发性、加快开发和发布速度、减少数据库连接等资源消耗,还能使不同应用复用共同的服务,便于业务功能扩展。

           (2)分布式静态资源:动静分离,将JS/CSS等网站的静态资源独立分布式部署,采用独立域名访问。减轻应用服务器负载压力、加快浏览器并发加载速度、利于网站分工合作。

           (3)分布式数据和存储:单机无法处理以P为单位的海量数据。将数据进行分布式存储,NoSQL应运而生。

           (4)分布式计算:处理规模庞大的计算业务,移动计算,将计算程序分发到数据所在位置以加速计算和分布式计算。

           (5)此外,还有支持服务器配置实时更新的分布式配置、实现并发和协同的分布式锁、支持云存储的分布式文件系统等。

  2.1.4 集群  

  多台服务器上部署相同应用程序,通过负载均衡设备共同对外提供服务,有良好并发特性,提高系统可用性。  

  2.1.5 缓存  

  将数据存放在距离计算最近的位置来加快处理速度,是改善软降性能的第一手段。

  CDN:部署在离用户最近的网络运营商。

  反向代理:部署在网站前端,请求到达网站的数据中心时,最先访问反向代理服务器(缓存网站的静态资源)。

  本地缓存:应用服务器本地缓存。

  分布式缓存:将数据缓存在一个专门的分布式缓存集群中。

  使用缓存前提条件:(1)数据访问不均衡;(2)数据在某时间段内有效

  2.1.6 异步  

  将一个业务操作分成多阶段,每个阶段通过共享数据进行协作。单服务器内部通过多线程共享内存队列实现异步,分布式系统中通过分布式消息队列实现。

  异步架构是典型的生产者-消费者模型,异步消息队列特征:(1)提高系统可用性;(2)网站响应速度;(3)消除并发访问高峰。

  异步方式处理业务可能会对用户体验和业务流程造成影响。

  2.1.7 冗余  

  服务器规模较大时,发生宕机是必然事件,通过冗余实现服务高可用。

  方式:热备份、冷备份、灾备数据中心

  2.1.8 自动化  

  减少人为干预,使发布过程自动化可有效减少故障。包括自动化代码管理、自动化测试、自动化安全监测、自动化部署。

   对线上生产环境进行自动化监控,包括自动化报警、自动化失效转移、自动化失效恢复、自动化降级、自动化资源分配。   

  2.1.9 安全  

  使用密码和手机校验码进行身份验证、对网络通信进行加密、验证码识别、编码转换、过滤、风险控制等手段。

2.2 架构模式在新浪微博中的应用

  新浪微博已经发展成集社交、媒体、游戏、电商等多位一体的生态系统。

  

  系统分为三个层次:

  (1)最下层的基础服务层:提供数据库、缓存、存储、搜索等基础数据服务,是技术基础。

  (2)中间层是平台服务和应用服务层:核心服务是微博、关系和用户,通过依赖调用和共享基础数据构成新浪微博的业务基础。

  (3)最上层是API和业务层:客户端和第三方应用调用API。

  新浪微博早期架构中,微博发布使用同步推模式,用户发表微博后系统将微博插入数据库所有粉丝订阅列表中,大量数据库写操作,降低系统性能。后来改为异步推拉结合模式,用户发表微博后系统将微博加入消息队列后立即返回,提高响应速度。消息队列消费者将微博推送给在线粉丝,非在线用户登录后根据关注列表拉取微博订阅列表。

  “刷微博”使用多级缓存机制,通过使用数据冗余复制、开发自动化工具提高系统可用性。

本章结构

原文地址:https://www.cnblogs.com/Mrcoco/p/10182153.html

时间: 2024-11-09 03:57:51

第二章 大型网站架构模式的相关文章

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

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

大型网站架构模式

一.前言 为了解决大型网站面临的高并发访问.海量数据处理.高可靠运行等一系列问题与挑战,大型互联网公司在时间中提出了许多解决方案,以实现网站高性能.高可用.易伸缩性.可扩展.安全等各种技术架构目标. 二.分层 最常见的架构模式,将系统在横向维度上切分成几个部分,每个部分单一职责.然后通过上层对下层的依赖和调用组成一个完成的系统.网站一般分为三个层次:应用层.服务层和数据层,其具体结构如下图所示: 通过分层,一个庞大系统切分成不同部分,便于分工合作和维护.各层之间具有一定的独立性,只要维持调用接口

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

每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复工作. 网站架构模式 分层 分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统. 在大型网站架构中采用分层结构,将网站软件分为应用层.服务层.数据层. 应用层负责具体业务和视图展示,如网站首页及搜索输入和结果展示等. 服务层为应用层提供服务支持,如用户管理服务.购物车服

大型网站技术架构 读书笔记1 大型网站架构模式

架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计. 关于什么是模式,这个来自建筑学的词汇是这样定义的:"每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复工作".模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用. 针对现在的高并发访问,海量数据处理,高可靠运行等一系列问题,众多大型互联网公司提出了各种系统解决方案.这些优秀可靠的方案又被别的网站重复使用

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

写在前面 从开始写代码到现在,已经做了好几个项目了,BS和CS的都有,一直都以一个码农自居.但,作为一个进步的程序员,都有一个成为架构师的理想.于是,在平时的工作中,也积极的去看各种书籍,看园子里面的精品文章.希望,在这条追逐梦想的道路上,能够留下点点滴滴,也算是对知识的一种巩固,一些分享. 读书感受   快下班的时候,看了该书的第一章.算是对网站的架构演化有了一些认识. (1)初始网站的架构:一台服务器,应用程序,数据库,文件都在一台服务器上面.LMAP足矣. (2) 二级网站的架构:应用服务

大型网站架构之架构模式

上节讲了<大型网站架构之架构演变>,今天讲下架构的模式,什么是模式呢?每一个模式描述了一个再我们周围不断重复发生的问题及问题解决方案的核心,这样你就能一次次重用该方案而不必去做重复的工作,可见模式的关键在于可重复性. 网站架构模式的目标:面临高并发访问,海量数据处理,高可靠运行等问题和挑战,我们在实践中提出很多解决方案,主要为了实现网站的高性能.高可用.易伸缩.可扩展.安全等架构目标. 网站架构模式具体方案如下: 1.分层 分层是一种常见的架构模式,将系统在横向维度上切分为几个部分,每个部分负

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

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

大型网站架构系列:消息队列(二)

本文是大型网站架构系列:消息队列(二),主要分享JMS消息服务,常用消息中间件(Active MQ,Rabbit MQ,Zero MQ,Kafka).[第二篇的内容大部分为网络资源的整理和汇总,供大家学习总结使用,最后有文章来源] 本次分享大纲 消息队列概述(见第一篇:大型网站架构系列:分布式消息队列(一)) 消息队列应用场景(见第一篇:大型网站架构系列:分布式消息队列(一)) 消息中间件示例(见第一篇:大型网站架构系列:分布式消息队列(一)) JMS消息服务 常用消息队列 参考(推荐)资料 本

大型网站架构系列:负载均衡详解(4)

本文是负载均衡详解的第四篇,主要介绍了LVS的三种请求转发模式和八种负载均衡算法,以及Haproxy的特点和负载均衡算法.具体参考文章,详见最后的链接. 三.LVS负载均衡 LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立,用来实现Linux平台下的简单负载均衡.LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器. 基于IP层的负载均衡调度技术,它在操作系统核心层上,将来自IP层的TCP/UDP请求均衡地转移到不同的 服务器,从而将一组