当前位置:   article > 正文

网站架构设计

网站架构设计

网站特点

  1. 、高并发、大流量
  2. 、高可用
  3. 、海量数据
  4. 、用户分布广泛、网络情况复杂
  5. 、安全环境
  6. 、需求快速变更、发布频繁
  7. 、渐进式发展

初始网站架构

-1.0 时代 —— LAMP结构 (服务器操作系统Linux,应用程序php开发,部署Apache上,数据库MYSQL)

-2.0 时代 —— 应用服务与数据服务分离(应用服务器、文件服务器、数据库服务器)
- 应用服务器 : 处理业务逻辑 (需要更快更强的CPU)
- 数据库服务器 :需要更快速磁盘索引和缓存 (需要更快的硬盘、更大的存储)
- 文件服务器 :存储大量用户上传文件 (更大硬盘)

-3.0 时代 —— 使用缓存改善网站性能
- 应用服务器的本地缓存
- 专门的分布式服务器远程缓存

-4.0 时代 —— 使用应用程序集群,处理并发
- 负载均衡服务器 :将用户请求放到应用服务器集群中的任意一台服务器
- 基本框架 :负载均衡服务器 —— 应用服务器集群(应用程序+本地缓存)——分布式缓存服务器(远程分布式缓存)、文件服务器、数据库服务器

-5.0 时代 —— 数据库的读写分离(缓存数据库访问)
- 访问数据库操作 : 缓存访问不命中,存储过期,写操作
- 数据库读写分离 : 在应用服务器中增加数据库访问模块,写入数据调用主数据库,访问主数据库和读操作调用从数据库(从数据库服务服务主数据库数据)

-6.0 时代 —— 使用反向代理和CDN(加速网站响应,减轻后端服务器负载)
- CDN、反向代理服务器基本原理 :缓存
- CDN(集群) :部署在网络供应商的机房,使用户请求网站服务时,可以从距离自己更近的网络供应商机房进行获取数据
- 方向代理服务器 :部署在网站的中心机房,用户请求达到机房后,先访问服务反向代理服务器,如果反向代理服务器(集群)缓存用户请求资源,就返回给用户
- 基本框架 :CDN —— 反向代理服务器 —— 负载均衡(接 4.0时代 + 数据库读写分离)

-7.0 时代 —— 分布式文件系统,分布式数据库系统
- 分布式文件系统 :文件系统使用分布式集群
- 分布式数据库 :数据拆分最后手段 (业务分库,不同业务数据库补助在不同物理服务器上)
-
-8.0 时代 —— 提升数据库的存储和检索的需求
- 使用NOSQL 和搜索引擎
- 应用服务器通过统一的数据访问模块访问各种数据,减轻应用程序管理诸多数据库源的麻烦

-9.0 时代 —— 分布式服务
- 共用业务提取处理,独立部署(例如: 用户管理、商品管理)
- 服务间的消息共享
- 1、通过超连接建立关系(导航链接每个执行不同的地址)
- 2、消息队列进行数据分发(加入消息队列服务器)
- 3、访问同一个数据存储系统,构成一个关联的完整系统(使用最多)

网站架构模式

组成 :计算机硬件、操作系统、应用软件

1、分层(纵向)
- 应用层(视图层、业务逻辑层) : 负责具体业务和视图展示,如网站首页及搜索输入和结果展示
- 服务层 (数据接口层、逻辑处理层):应用层数据支持,如用户管理服务、购车服务等
- 数据层 :提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等

2、分割(横向)—— 主要还是应用层
- 将购物、论坛、搜索、广告分割成不同的应用

3、常用的分布式方式
- 分布式应用和服务 : 将分层和分割后的应用 和服务模块分布式部署
- 分布式静态资源 : 将网站静态资源、如JS、CSS、LOGO 图片等分布式部署,并采用独立的域名,即动静分离
- 分布式数据存储 :数据库分布式存储,及部署
- 分布式计算 :目前普遍使用Hadoop 及Mapreduce 分布式计算框架
- 分布式配置 :支持服务器配置实时更新
- 分布式锁 :实现分布式并发和协同
- 分布式文件 :支持云存储系统

4、对访问量较大的模块(如:网页的首页)
- 需要进行独立化的部署,部署称为集群,同构负载均衡设备同时对外提供服务

5、缓存手段
- CDN : 内容分发网络(网络服务商端)
- 反向代理 :属于 网站前端架构的一部分,部署在网站的前端,最先访问,缓存着 静态资源文件,无需请求继续
- 本地缓存 :在应用服务器本地缓存热点数据
- 分布式缓存 :专门的 数据缓存集群,通过网络通信访问缓存数据

6、异步
- 将一个业务分割成多个阶段,每个阶段通过数据共享的方式进行异步执行
- 单一服务 :通过多线程共享内存队列的方式实现异步

7、冗余
- 定义冷备份
- 定时热备份
- 灾备数据中心

8、网站自动化
-网络代码发布环节自动化
- 发布过程自动化
- 自动化代码管理
- 自动化测试
- 自动化安全检测
- 自动化部署
- 网站运行中的要求
- 自动化监控
-自动化报警
-自动化失效转移
-自动化失效恢复
-自动化降级
-自动化分配资源

9、安全方式
- 1、通过密码、手机验证码验证身份
- 2、对登陆、交易等操作需要通过网络通信进行加密
- 3、服务器上存储的用户信息晔需要进行加密
- 4、防止机器人程序 、用验证码进行识别

新浪微博的服务架构
- 基础服务层——提供数据库、缓存、存储、搜索数据服务、基础技术服务——支持海量数据和高并发访问。
- 中间层——平台服务层+应用服务层——独立的服务模块、通过以来调用和共享基础服务构成业务基础。 API+业务层——客户端+三方应用
- API+业务层——客户端+三方应用 通过调取API集成新浪微博系统,构成生态。

网站架构设计
1、性能优化
- 浏览器端——浏览器缓存、页面压缩、合理布局、减少Cookie传输
- 使用CDN将静态内容发布至离用户最近的网络服务机房
- 使用方向代理服务器,缓存热点文件。加快相应速度,减少服务器压力
- 应用服务器端
1、服务器本地缓存,分布式存储,缓存内存中的热点数据处理用户请求,加快请求处理过程,减少数据库负载压力
2、异步操作将用户请求发送至消息队列等待任务处理,当前请求直接返回相应给用户
3、多台服务器组成集群,共同对外服务。
- 代码层 (使用多线程、改善内存管理)、
- 数据库 (索引、缓存、SQL优化)

分布式缓存

缓存关键指标- 命中率

  • 缓存键集合大小 : 缓存的有效性
  • 缓存空间的大小 : 缓存的使用效率
  • 缓存的使用寿命 (TTL) :缓存实现效果,超时失效;一种是清除失效,也就是实时清除

缓存TTL常用方法

  • 超时失效:写缓存的时候,每个缓存对象都设置一个超时时间,在超时之前访问缓存就会返回缓存的数据,而一旦超时,缓存就失效了,这时候再访问缓存,就会返回空
  • 清除失效(实时清除):当有缓存对象更新的时候,直接通知缓存将已经被更新了的数据进行清除
  • 内存空间清除主要使用的算法是 LRU 算法,LRU 算法就是最近最久未用算法,也就是说清除那些最近最久没有被访问过的对象。这个算法使用链表结构实现的,所有的缓存对象都放在同一个链表上

缓存类型

  • 代理缓存 : 缓存在客户端

  • 反向代理缓存 :代理数据中心输出的

  • CDN 缓存(内容分发网络 CDN 缓存):网络服务商的缓存服务

  • 对象缓存
    在这里插入图片描述
    分布式缓存技术点

  • 分布式对象缓存架构

  • 分布式对象缓存的访问模型

  • 分布式缓存算法(一致性哈希算法)

缓存举例

  • CPU缓存 : 固件cache中,预先加载 一部分执行和数据到cache中。
  • 操作系统缓存 :对数据进行缓存,以加快访问系统对磁盘文件数据的速度
  • 数据库缓存 :对一些数据表进行缓存,对索引的结构 B+ 树进行缓存,对热点数据记录进行缓存。

缓存数据存储(Hash 表)

  • 实现方式主要为 hash表,存数方式主要是顺序表,特别为再内存中连续存储分配

介质访问延迟

在这里插入图片描述

分布式对象缓存

  • 所谓的分布式对象缓存是指对象缓存以一个分布式集群的方式对外提供服务,多个应用系统使用同一个分布式对象缓存提供的缓存服务
  • 使用分布式对象缓存的一个重要问题就是,数据进行读写操作的时候,如何找到正确的缓存服务器进行读写操作
  • 客户端通过对 缓存的key进行计算,计算出需要访问的服务器,所以以后每次访问都会访问此服务器。
  • 一致性 hash 算法。

分布式消息队列

常用消息队列产品

  • RabbitMQ
  • ActiveMQ
  • RocketMQ
  • Kafka

异步机构的主要组成

  • 消息生产者
  • 消息消费者
  • 分布式消息队列
    在这里插入图片描述

异步架构主要模型

  • 点到点模型
  • 发布订阅模型

异步架构的好处

  • 异步处理实现快速响应;
  • 消费者易于伸缩;
  • 高并发访问压力的时削峰填谷,减轻访问高峰的系统负载压力;
  • 隔离失败任务,消费者处理任务失败,不会影响主业务流程;
  • 业务逻辑解耦,系统易于开发和维护。

异步机构问题

  • 消息无序
  • 竞态条件
  • 系统复杂度提高

同步机制
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/184389
推荐阅读
相关标签
  

闽ICP备14008679号