学习笔记7:《大型网站技术架构 核心原理与案例分析》之 永无止境:网站的伸缩性架构

伸缩性:不需要改变网站的软硬件设计,仅仅通过改变部署的服务器的数量就可以扩大或者缩小系统的服务处理能力。

最重要的技术手段是服务器集群,能做到向集群中加入服务器的数量和集群的处理能力成线性关系。

一、伸缩性设计

1、不同功能进行物理分离实现伸缩:数据库分离,缓存分离,静态资源分离 

    • 纵向分离:数据库,基础技术服务,可复用业务服务,网站具体产品
    • 横向分离:各个业务模块分离,横向分离的力度可以非常小,甚至一个关键性网页部署一个独立服务,比如电商网站非常重要的产品详情页面,商铺页面,搜索列表页面。

2、单一功能通过集群规模实现伸缩:团队作战,避免个人英雄主义。

二、应用服务器集群的伸缩性设计

1、HTTP重定向负载均衡(已不用)

2、DNS域名解析负载均衡

3、反向代理负载均衡

4、IP负载均衡

5、数据链路层负载均衡(也称三角模式,或DR模式)

6、负载均衡算法

   (1)、轮询(Round Robin RR)

   (2)、加权轮询(Weighted Round Robin WRR)

   (3)、随机(Random)

   (4)、最少链接(Least Connections)

   (5)、源地址散列(IP Hashing)

三、分布式缓存集群的伸缩性设计

四、数据存储服务器集群的伸缩性设计

1、关系型数据库集群的伸缩性设计:数据库读写分离,数据分库(不同业务的表在不同的库中,不能做JOIN),数据分片(同一张表数据分布在不同的数据库中)

  • MaxScale是MarriaDB的官方中间件,国内有MyCat
  • 应用程序--->数据库中间件--->MySQL