一致性哈希实现负载均衡
一致性哈希实现负载均衡 1 为什么需要哈希算法 解决同一个用户访问服务器是,访问的是不同的服务器的问题 场景:集群造成的session没有同步 当一个用户访问服务器A的时候,该台服务器A会保存这台服务器的session,但是当下次再访问的时候,被负载均衡算法可能算到了不同的服务器B,服务器B中没有用户的session,会要求用户再次登录。 解决: 加入redis,将session存到redis中 Tomcat同步session 一致性哈希算法 2 什么是一致性哈希算法 服务器集群接收到一次请求调用时,可以根据请求的信息,比如客户端的ip地址,或请求路径与请求参数等信息进行哈希,可以得出一个哈希值,特点是对于相同的ip地址,或请求路径和请求参数哈希出来的值是一样的,只要能再增加一个算法,能够把这个哈希值映射成一个服务端ip地址,就可以使用相同的请求(相同的ip地址,或请求路径和请求参数)落到同一服务器上。 因为客户端发起的请求是无穷无尽的(客户端地址不同,请求参数不同等等),所以对于的哈希值也是无穷大的,所以我们不能把所有的哈希值都进行映射到服务端ip上,所有这里需要用到 哈希环 。 3 虚拟节点 解决一个服务器挂掉造成的服务不均匀问题 使得哈希环更加平滑 当时当一台服务器挂掉的话,会造成服务器服务不均匀的情况 会发现,ip3和ip1直接的范围是比较大的,会有更多的请求落到ip1上