集群学习笔记

一、负载均衡

       集群中的应用服务器通常被设置成无状态,请求可以转发到任意的服务器上;

       负载均衡器会根据服务器的情况,将请求转发大合适的节点上;

       负载均衡器可以实现高可用性和伸缩性:

              高可用:当一个节点发生故障时,可以将请求转发到其他节点上,保证所有请求都可被处理;

              伸缩性:在集群中,可以很容易的删除或者添加服务器节点;

       负载均衡过程主要经历2个过程:

              根据负载均衡服务器分配目标服务器;

              转发实现;

 

      1、负载均衡算法:

       ①轮询法:将客户端请求轮流均匀地发送到所有服务器上;

       使用场景:所有服务器性能差不多的情况下;

       缺点:如果服务器之间存在性能差距,可能出现部分服务器过载,导致负载不均衡;

       ②加权轮询算法:在轮询的基础上,根据服务器的性能的不同,给服务器赋不同的接收请求的权重;

       ③最少连接算法:根据当前所有服务器的连接数,将请求转发到当前连接最少的服务器

       优点:解决了轮询法和加权轮询法不能根据请求的属性(请求的处理速度)动态调整服务器分配,使用最少轮询法可以很好         的利用请求和服务器之间的差异性;

       ④加权最少连接法:在最少连接法的基础上,根据服务器性能的不同,给不同的服务器赋不同的权重,计算出服务器的最少         连接数;

       ⑤随机法:跟轮询法出不多,给请求随机分配目标服务器;

       缺点:容易造成负载不均衡;

       ⑥原地址哈希法:根据源服务器地址计算哈希值,用哈希值对服务器数量取模,确定服务器的地址;

      2、转发实现

       ①HTTP重定向:HTPP重定向服务器根据某一负载均衡算法计算出服务器IP地址,将该地址写入HTPP重定向的报文中,发         送回客户端,然后客户端重新发送请求到指定的服务器;
       缺点:
       需要完成2次请求,请求处理时间比较长;
       HTTP负载均衡器处理能力有限,会限制集群规模;

       ②DNS域名解析服务器:在进行DNS域名解析的同时根据负载均衡算法计算服务器地址;
       优点:
       DNS域名解析服务器可以根据地理位置,将最近位置的服务器返回;
       缺点:
       DNS域名服务器是多级结构,每一级的域名记录都可能被缓存, 当下线一级域名服务器修改DNS记录时,需要很长时间才           能生效;

       ③反向代理服务器:反向代理服务器在源服务器的前面,请求通过反向代理服务器到达源服务器,反向代理服务器可以进行         缓存,日志记录等,也可以作为负载均衡器;
       这种负载均衡方式下,请求不会直接到达源服务器,源服务器不用配置外部IP,反向代理服务器需要配置内外两套IP;
       优点:
       与其他功能集成在一起,部署简单;
       缺点:
       所有请求和响应都要经过反向代理服务器,反向代理服务器处理能力有限,可能成为集群的整体性能的瓶颈;

       ④网络层:在操作系统内核进程中获取网络数据包,根据负载均衡算法计算源服务器地址,修改数据包中目标服务器地址,         最后进行转发;
       源服务器返回的响应也要经过负载均衡器,通常是让负载均衡器作为集群的网关;
       优点:
       在内核进程中处理,性能高;
       缺点:
       和反向代理服务器一样,请求和响应都要经过负载均衡器,会成为性能瓶颈;

       ⑤数据链路层:在链路层根据负载均衡算法计算请求数据包的MAC地址,修改请求数据包的目标MAC地址,进行转发;
       通过配置源服务器虚拟IP地址与负载均衡服务器IP地址一样的虚拟IP地址,因此可以不用修改IP地址实现转发,因此源服务           器的响应不用返回负载均衡器,直接发回客户端,避免了负载均衡器成为性能的瓶颈;
    

二、负载均衡器下的Session管理

    如果用户的请求被转发到不同的服务器上,因为没有上次Session,需要重新登录等操作;

   1、Sticky  Session
    将同一用户的所有请求转发到同一个服务器上,保存Session;
    缺点:
    如果发生宕机,该用户所有的Session将丢失;
 

   2、Session Replication
   将用户请求转发到不同的服务器上,对用户的Session记录进行同步;
   缺点:
   内存消耗较大;
   同步过程占用网络带宽和服务器处理时间;
 

   3、Session Server
 将用户的Session单独存储在服务器;
   为了集群的可伸缩性,要求应用服务器是无状态的,将Session保存在单独服务器中,而不是应用服务器中,可以使应用服务       器处于无状态;
   优点:
   可是实现大型集群的可伸缩性;
   缺点:
   需要实现Session的单独的代码;
    

   参考资料:https://cyc2018.github.io/CS-Notes/#/notes/%E9%9B%86%E7%BE%A4
         

      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值