• 软件开发中的负载均衡


    集群初探

    • 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
  • 相关阅读:
    画了朵花
    定位
    浮动
    盒模型
    html+css笔记1
    闭包
    高阶函数
    函数
    Map Set iterable
    git stash clear/drop 后代码如何恢复
  • 原文地址:https://www.cnblogs.com/duduchong/p/13387081.html
Copyright © 2020-2023  润新知