轮询:将请求一次分发到每台应用服务器上
加权轮询:根据应用服务器的硬件情况,在轮询的基础上,安装配置的权重将请求分发到每个服务器
随机:将请求随机分发到每个应用服务器上
最少连接:记录每个服务器正在处理的连接数,将新到的请求分发到最少连接的服务器上
原地址散列:根据请求来源的ip地址进行hash计算,得到应用服务器,这样来自同一ip地址的请求总在同一服务器上处理。
一致性哈希:一致性哈希就数据结构是创建一个排序的环形数据结构,有许多个区域,先让每一台服务器都分布环上,取每一个服务器的特效做哈希运行,得到的值放进环中,进行排序这样就能根据哈希特征找到对应的真是服务器,能够让把服务器平均的分布到环上。
轮询的优点是:到应用nginx的请求更加均匀,使得每个服务器的负载基本均衡。轮询的缺点是,随着nginx应用服务器的增加,缓存的命中率会降低,这种方式不会因为热点类问题导致其中某一台服务器负载过重。
一致性哈希的优点:相同请求会转发到统一服务器,命中率不会因为增加服务器而降低。缺点是:因为相同的请求转发到统一服务器,因此,可能造成某台服务器负载过重,甚至因为请求太多导致服务出现问题。
解决办法,根据实际情况动态选择使用哪种算法
1.负载较低,使用一致性哈希。
2.热点请求降级一致性哈希为轮询,或者如果请求数据有规律,则可考虑带权重的一致性哈希。
3.将热点数据推送到nginx,直接响应给用户。