网站案例架构(网站的伸缩性架构)读书笔记

网站的伸缩性架构
  定义:不需要改变网站的软硬件设计,仅仅通过改变部署的服务器的数量就可以扩大或者缩小网站的服务处理能力
  
  不同功能进行物理分离实现伸缩
    含义:缓存 数据库 静态资源等功能和服务 从单一服务器分离出;
    目的:每次分离更多的服务器加入网站,使用新增的服务器处理某种特定的服务;
    分离方式:
        纵向分离(分层后分离):处理流程的不同部分分离部署
        横向分离(业务模块分割):业务模块水平分割后,分离部署
  单一功能通过集群规模实现伸缩
    单一服务器也不能满足业务规模的要求,将相同的服务部署在多台服务器上构成一个集群对外提供服务
    
应用服务器集群的伸缩性设计
  应用服务器设计成为无状态的,应用服务器不存储请求的上下文;
  1 http重定向负载均衡
    实现方式:
        http重定向服务器的功能是根据用户的请求计算出一台真实的web应用服务器地址,并将地址写到响应中 通过302重定向;
    缺点:
        浏览器需要两次请求服务器,才能完成一次访问;
        重定向服务器自身处理能力可能瓶颈
        使用302重定向有可能被认为SEO作弊
  2 DNS域名解析负载均衡
    实现方式:
      在DNS服务器配置多个 同域名地址A 不同IP服务器地址;每次域名解析请求的时候会根据负载均衡算法计算一个不同的IP地址返回
      这样A对应的多个IP服务器就构成一个集群;
    优点:
      1 负载均衡的工作转移给DNS,省去网站管理维护负载均衡服务器的麻烦
      2 大多DNS支持基于地理位置的域名解析,将域名解析到距离用户地理位置最近的一个服务器地址。加快访问速度和性能;
      
    
    缺点:
      1 将负载均衡的控制权转移给域名服务商,对于网站的管理不便;
      2 DNS多级解析,每一级DNS可能缓存了A,当下线某台服务器,即使改了DNS的A记录,要使其生效也需要较长时间,
        这样当域名解析的时候,仍然会找到下线的ip服务器地址。
    应用情况:
      事实上大型网站总是大部分使用DNS域名解析,利用域名解析作为第一级负载均衡,即域名解析得到的一组服务器不是实际提供web服务的物理服务器,
      而是同样提供负载均衡的内部服务器,这组内部负载均衡的服务器在进行负载均衡,将请求分发到真实的web服务器
    
  3 反向代理负载均衡
    实现方式:
        浏览器访问请求的地址是反向代理服务器的地址,代理服务器收到请求后,根据负载均衡算法计算一台真实物理服务器地址,将请求转发给真实处理服务器,
        然后处理结果返回给反向代理服务器,继续返回给用户
    优点:
      部署简单
    缺点:
      反向代理服务器是所有请求的中转站,性能瓶颈需要考虑
      
  4 IP负载均衡
    IP负载均衡服务器即网关服务器
    实现方式:通过修改请求的目标地址来进行负载均衡;具体如下
        用户请求数据包到达负载均衡服务器IP后,负载均衡服务器在操作系统内核进程获取网络数据包,
        根据负载均衡算法计算得到一台真实的web服务器IP,然后将数据目的IP地址修改为真实IP,真实的处理完成后响应数据包回到负载均衡服务器,
        负载均衡服务器再将数据包的源地址修改为自身的iP地址,发送给浏览器;
        实现的关键核心:
          真实物理WEB服务器响应数据包如何返回给负载均衡服务器。
            方案一:修改目的IP的同时修改源地址,将数据包源地址设为自身IP,即原地址转换SNAT
            方案二: 将负载均衡服务器同时作为真实物理服务器集群的网关服务器,这样所有响应数据都会到达负载均衡服务器
    优点:
      IP负载均衡在内核进程完成数据分发,较反向代理(应用程序中分发数据)有更好的性能  
    缺点:
      但是所有的响应都需要经过负载均衡服务器,集群的最大响应数据吞吐量不得不受制于负载均衡服务器网卡带宽。
      对于需要提供下载服务或者视屏服务的传输大数据量的网站而言,难以满足
    期望;
      负载均衡服务器只分发请求,响应数据从真实服务器直接返回给用户
  5 数据链路的负载均衡
    数据链路的负载均衡是指在通信协议的数据链路层修改mac地址进行负载均衡
    实现方式:
      通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器IP一致,从而达到不修改数据包的源地址和目的地址就可以进行数据分发目的,
      由于请求的真实物理器Ip和数据请求目的IP一致,不需要通过负载均衡服务器进行地址切换。可以将数据包直接返回给用户浏览器;
      这种负载均衡的方式又叫做直接路由方式DR
    优点:
      响应数据包不需要通过负载均衡服务器,直接从真实服务器返回给用户
      
    应用情况:
      链路层的负载均衡是目前大型网站广泛使用最广的一种负载均衡手段,在Linux平台上最好的链路层负载均衡开源产品是LVS(Linux Virtual Server)
  6 负载均衡算法
    应用背景:负载均衡实现分两步:
          1 根据负载均衡算法和WEB服务器列表计算得到集群中一台web服务器的地址。
          2 将请求数据发送到该地址对应的WEB服务器上;
    负载均衡算法通常分为以下几种:
        轮询(RR)
          所有请求被依次分发给每台应用服务器上。处理的请求数目相同;
          应用场景:
            所有服务器硬件都相同;
        加权轮询(WRR)
          根据应用服务器硬件性能的情况,在轮询的基础上,按照配置的权重请求分发到每个服务器,高性能的服务器分发更多的请求;
          
        随机
          好的随机数本身就很均衡,许多场合下,这种方案都很简单方便;服务器硬件配置不同,也可以使用加权随机算法;
        最少连接数:
          将新请求分发到最少连接的服务器上,也可以加权最少连接数;
        源地址散列:
          根据来源的IP地址进行Hash计算,这样来自同一个IP地址的请求总在同一个服务器上处理,
          该请求的上下文  可以存储在这台服务器上,在一个会话周期内重复使用,从而实现会话黏滞

猜你喜欢

转载自blog.csdn.net/icool_ali/article/details/81365381