软件开发中的负载均衡

集群初探

  • nginx:keepalived,入口唯一
  • tomcat:负载均衡集群,session共享,使用redis
  • mysql:mysql proxy中间层,master可读写,以写为主,slave只读
  • oracle:rac,外层看起来多个实例,底层是共享一个存储系统

集群与分布式

  1. 集群是软件的横向扩展,找帮手
  2. 分布式是软件的纵向扩展,分阶段
  3. 实际场景是:分布式+集群

集群的分类

集群可以实现高可用、负载均衡、提升单台计算机的CPU计算能力

  1. 高可用集群:集群中节点失效,热切换到可用节点
  2. 高CPU消耗集群:集群中节点并行消耗cpu资源,最终汇总各节点计算结果,同大数据处理思路
  3. 负载均衡集群:集群中按需分配各节点的访问频率

负载均衡器的功能

  1. 使用负载均衡算法保证机器的负载合理
  2. 健康检查:检查下游服务是否可用以及服务健康情况(Ping三层,TCP/UDP四层,HTTP七层,FTP,DNS等),剔除不健康服务的祖籍
  3. 会话保持:保证会话的原子性,一般使用会话共享(基于文件cookie、基于内存cookie、cookie禁用时隐藏域放置session-id)
  4. 缓存静态资源,减少后台资源消耗

负载算法

  • 轮询、权重、优先权、最少连接数、最快响应、数学运算(余数、模、hash等)、基于数据包内容
  • 优先权的方式是将服务分组,优先权是针对组的,组内仍使用负载算法。当整个组达到访问阈值时,切换到另一分组。多活

负载均衡实现

  1. 通过DNS域名解析进行负载均衡(非真正意义的负载),一个域名对应多个IP(寻找最近的IP),可以把域名解析到不同IP的机器,可使用dig查看域名解析结果
  2. 通过链路层(二层)解析进行负载均衡,后台服务设置相同的虚拟IP,通过指定MAC的方式访问后台服务
  3. 通过传输层(四层)TCP/UDP进行负载均衡,通过指定IP的方式访问后台服务,HAProxy、IPVS、F5等
  4. 通过应用层(七层)http/https/ws,三次握手后,通过解析应用层内容数据信息进行负载, nginx、HAProxy等
    如果服务不是基于应用层,那么只能用四层以下的负载均衡方法
    七层的方式使用起来最灵活、安全性也高、

nginx 待续


  1. https://www.cnblogs.com/xzwblog/p/7255364.html

猜你喜欢

转载自www.cnblogs.com/duduchong/p/13387081.html