0%

负载均衡

bing

分布式 & 集群

  • 分布式:将系统拆分成多个模块,分别部署在多个服务器上,各个模块负责不同的功能
  • 集群:将系统部署在多个服务器上,互相独立,每个服务器完成相同的功能

分布式 & 微服务

  • 分布式:系统部署方式,模块分别部署在多个服务器上,每个模块可以复制几个功能
  • 微服务:架构设计方式,微服务是很小的服务,小到甚至只提供单一的功能。服务可以单独部署,服务之间可以通过 RPC 进行交互

容错

当主服务器宕机后,集群能够继续提供服务的策略。

熔断

考虑一种场景,在分布式系统中,如果某个服务需要升级,往往会对其他依赖服务且正在运行的程序产生影响,甚至会产生级联效应造成系统卡顿甚至宕机。

熔断是一种过载保护机制。当下游服务因访问压力过大而响应变慢或失败时,上游服务为了保护自己以及系统整体的可用性,可以暂时切断对下游服务的调用。

  • 定义一个识别是否处于“不正常”状态的策略
  • “不正常”及时切断联系
  • 定义一个识别是否处于“正常”状态的策略,并尝试探测
  • “正常”恢复联系

熔断技术:hystrix

限流

当系统资源不足以应对大量请求,即系统资源与访问量出现矛盾时,为保证有限资源能够正常服务,对系统按照预设的规则进行流量限制或功能限制的一种方法。

降级

当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务正常运行。降级往往会指定不同的级别,面临不同的异常等级执行不同的处理。根据服务方式:可以拒接服务,可以延迟服务,也可以随机服务。

RPC

远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。分布式系统或微服务架构通过 RPC 进行相互调用。

安全

系统在应对各种攻击手段时能够有可靠的应对措施。

访问控制

防止对任何资源进行未授权的访问,从而使计算机系统在合法的范围内使用。

服务注册与发现

pic

服务注册:

  • 客户端注册
  • 第三方注册

服务发现:

  • 客户端服务发现
  • 服务器端服务发现

负载均衡

负载均衡服务器使用负载均衡算法将请求转发到集群中不同的主服务器节点上。负载均衡服务器会根据集群中每个节点的负载情况,将用户请求转发到合适的节点上。负载均衡包括两部分:

  • 根据负载均衡算法得到转发节点
  • 进行转发

负载均衡算法

  • 轮询:适用于每个服务器性能相当的场景
  • 加权轮询:在轮询的基础上,根据服务器的性能差异,为每台服务器分配权重。性能高的服务器权值大,性能低的服务器权值小
  • 最少连接:将请求转发到最小连接数的服务器上
  • 加权最少连接:在最少连接的基础上,根据服务器的性能差异,为每台服务器分配权重,再根据权重计算出每台服务器能处理的连接数
  • 随机算法:适用于每个服务器性能相当的场景
  • 源地址哈希算法:计算客户端 IP 的哈希值,再对服务器数量取模得到目标服务器的序号。可以保证同一 IP 的客户端的请求会转发到同一台服务器上,用来实现会话粘滞

转发

  • HTTP 重定向
    • 缺点:需要两次请求,访问延迟比较高;HTTP 负载均衡器处理能力有限,会限制集群的规模
  • DNS 域名解析
    • 缺点:由于 DNS 具有多级结构,每一级的域名记录都可能被缓存,当下线一台服务器需要修改 DNS 记录时,需要过很长一段时间才能生效
  • 反向代理服务器
    • 缺点:所有请求和响应都需要经过反向代理服务器,它可能会成为性能瓶颈
  • 网络层
    • 缺点:所有的请求和响应都经过负载均衡服务器,会成为性能瓶颈
  • 链路层
    • 在链路层根据负载均衡算法计算源服务器的 MAC 地址,并修改请求数据包的目的 MAC 地址,并进行转发。通过配置源服务器的虚拟 IP 地址和负载均衡服务器的 IP 地址一致,从而不需要修改 IP 地址就可以进行转发。也正因为 IP 地址一样,所以源服务器的响应不需要转发回负载均衡服务器,可以直接转发给客户端,避免了负载均衡服务器的成为瓶颈