Madao No More

你的努力程度之低,根本轮不到拼天赋.


  • 首页

  • 底层基础

  • 人文书籍

  • 日记

  • 面试问题

  • Linux

  • 编程语言

  • 服务器应用

  • 各种工具软件

  • 工作中的问题

  • 归档

  • 关于

  • 搜索
close

2-网站架构角色

时间: 2019-06-19   |   分类: Linux     |   阅读: 1642 字 ~4分钟
  • 1. 网站架构角色
    • 1.1. 最基础的架构
    • 1.2. 升级版的架构
      • 1.2.1. CDN
      • 1.2.2. 代理
      • 1.2.3. Web服务器
      • 1.2.4. 存储
      • 1.2.5. 缓存服务器
      • 1.2.6. DB服务器
  • 2. 常用集群解决方案
    • 2.1. Web集群
    • 2.2. MySQL集群
  • 3. 小型网站架构
    • 3.1. 单机
    • 3.2. 双机
      • 3.2.1. 增加缓存
    • 3.3. Web集群+db主从
      • 3.3.1. 使用硬件来实现db读写分离
      • 3.3.2. 负载均衡
  • 4. 中型网站架构
    • 4.1. Web集群+一主多从
    • 4.2. 使用SAN存储+多层从
    • 4.3. 分库分表
  • 5. 大型网站架构

1. 网站架构角色

1.1. 最基础的架构

基础网站架构

1.2. 升级版的架构

基础网站架构

1.2.1. CDN

内容分发网络,实时根据网络流量,节点等信息,把用户的请求导向离用户最近的服务节点上.

  • 最简单的CDN网络由一个DNS服务器和几台缓存服务器组成:====>简单的理解就是一个带缓存的代理.

    1. 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器.
    2. CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户.
    3. 用户向CDN的全局负载均衡设备发起内容URL访问请求.
    4. CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求.
    5. 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:
      1. 根据用户IP地址,判断哪一台服务器距用户最近;
      2. 根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;
      3. 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力.
      4. 基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址.
    6. 全局负载均衡设备把服务器的IP地址返回给用户.
    7. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端.
      1. 如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地.

    CDN原理

  • 常用CDN:

    • 腾讯云
    • 阿里云
    • 又拍云
  • 阿里CDN原理:

    阿里CND架构

1.2.2. 代理

这里主要是用来实现负载均衡.

  • 负载均衡
    • Nginx
    • LVS
    • HAProxy
  • 代理:
    • Squid
    • Varnish
    • Nginx
    • HAProxy

1.2.3. Web服务器

  • IIS
  • Apache
  • Nginx+phpfpm
    • Tengine:淘宝的Nginx分支
  • Tomcat+jdk
  • Nginx+uwsgi+python

1.2.4. 存储

比如一些用户图片等.可以是云存储,如果是头像等公开信息,也是可以放到CDN上

  • GFS

  • FastDFS

  • HDFS

    hdfs原理

  • GlusterFS

1.2.5. 缓存服务器

比如Redis等,把一些热点数据直接放到Redis中.

  • Redis
  • Memcache

1.2.6. DB服务器

  • MySQL
  • MariDB
  • PostgreSQL
  • Oracle
  • MongoDB

2. 常用集群解决方案

2.1. Web集群

  • Keepalived+lvs

    lvs+keepalived

  • heartbeat+nginx

    nginx_heartbeat

  • haproxy

    haproxy

2.2. MySQL集群

  • mysql-proxy:mysql

    mysql_proxy

3. 小型网站架构

3.1. 单机

LNMP

  • UV:几百
  • PV:几千
  • 配置:1核1G

  • UV:不过5000
  • PV:几万
  • 配置:4核4G

3.2. 双机

双机

  • UV:超过5000
  • PV:10万
  • 配置:
    • Web:4核4G
    • DB:4核8G

  • UV:上万
  • PV:几十万
  • 配置:
    • Web:8核8G
    • DB:8核16G

3.2.1. 增加缓存

  • UV:上万
  • PV:几十万
  • 配置:
    • Web:8核8G
      • Memcached或Redis等
    • DB:8核16G

3.3. Web集群+db主从

缓存放在Web服务器上.可以节省一些内网的带宽.

web集群+db主从

  • UV:十万
  • PV:过百万
  • 配置
    • 两台Web:8核8G
      • NFS是用来共享存储,如用户图片等.
      • Memcached或Redis存储Session
      • 可以使用DNS轮训来实现负载均衡.
    • 两台DB:16核32G
      • 现在从可以用来备份
      • 或者修改代码实现读写分离

3.3.1. 使用硬件来实现db读写分离

硬件读写分离

3.3.2. 负载均衡

主要是防止单点故障:

负载均衡

4. 中型网站架构

Web服务器是可以横向扩容的.

瓶颈可能在DB或存储上.

4.1. Web集群+一主多从

Web集群+一主多从

  • UV:可能几十万
  • PV:接近千万
  • 配置:
    • 基本都是8核8G或8核16G
    • Web端可能需要跑Redis或Memcache
    • 主数据库可能需要16甚至32核.

4.2. 使用SAN存储+多层从

这时需要引入SAN存储,单主从已经不能满足需求了

Web集群+一主多从

  • UV:接近百万
  • PV:几千万
  • 配置:
    • A从数据库1和主都是16或32核

注意:

  • A从数据库1:不提供读服务,只用来给B层的从提供binlog复制服务.可以有多个.

4.3. 分库分表

数据库中可能有些表上亿条数据了.

分库分表

  • 当然缓存也是需要做集群

5. 大型网站架构

业务拆分

每一个业务就类似一个中型网站架构. 每一个业务一个域名或者子域名

业务拆分

#Linux - 大型网站架构#
1-云简单使用
3-架构优化
Madao

Madao

人的一切痛苦,本质上都是对自己无能的愤怒.

505 日志
8 分类
78 标签
GitHub E-mail
© 2009 - 2022 Madao No More
Powered by - Hugo v0.89.4
Theme by - NexT
0%