芒果爱吃胡萝卜 - 反向代理
type: channel
link: http://blog.mangolovecarrot.net/tag/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/
items: 关于负载均衡

关于负载均衡
type: item
date: 2021-05-19T10:36:00+08:00
description: 关键字：负载均衡，反向代理，无状态，轮询，哈希散列反向代理负载均衡本质上是反向代理。外部不能直接访问最终服务器而是先访问一台负载均衡服务器，负载均衡服务器根据一个特定的算法将请求转发给其中一台服务器。分配原则可以是简单的轮询法，也就是按照访问顺序依次分配给不同的服务器。但这种方法无法保证某一个用户始终被转发到同一台服务器。所以更常见的是利用一个哈希散列算法将不同的用户均匀的固定分配给某一台服务器。最简单的例子是如果有十台服务器，那么可以将访问者的IP取10的余数，即可均匀的并且固定的分配给这十台服务器，既保证了分散也保证了对每个用户而言的单一。无状态无状态的服务是使用负载均衡的前提。也就是任何一台服务器挂掉的时候，用户的下一次请求被转发给活着的另一台服务器的时候要保证业务上没有问题。这要求服务器本身必须是无状态的。最典型的有状态的应用就是session。通常session保存在服务器上的内存中，一但这台服务器挂掉就意味着内存中的session全部丢失。与这一台服务器交互的用户的业务也就无法继续了。一个典型的解决方案是将session或者必须保留的状态信息储存在公用的另一台服务比如DB服务器上。但这也会引入一些新的问题，所以一个合理的架构尤其重要。暂时就想到这些。