load-balancing - 在扩展系统时,具有一致散列的负载分布是否比标准散列更有优势?
问题描述
我知道,在缓存服务器或(分片)数据库服务器的情况下,使用一致的散列进行负载分配比通常的基于键的散列提供了显着优势,因为在添加/删除服务器时,由于重新散列而需要在服务器之间移动的数据被最小化.
但是,如果我们考虑应用程序服务器或 Web 服务器,它们通常被设计为无状态的,因此不存储任何与用户/会话相关的数据,那么一致性哈希在这里有什么优势吗?如果是,这里考虑的数据是什么,或者我遗漏了什么?
解决方案
如果服务器真的是无状态的,那么是的,没关系。然后你优化其他参数,比如到客户端的距离。
但是对于处理一些业务逻辑的服务器来说,它的缓存中有一个隐含的状态。服务器必须有一些本地或远程的持久存储(我们称之为数据库),否则如果客户端已经拥有所有信息,则不需要发出请求。
数据库或应用服务器的缓存已经预热,每次系统扩展或缩减时都必须重新初始化。即使数据库也是分布式的,应用服务器与数据库特定分片的连接也可能(或不能)是一种状态。
推荐阅读
- vba - 为什么没有初始化部分用户窗体的选项?另外,为什么解决方法不起作用?
- regex - 如何将日期格式嵌入字符串并让 Powershell 使用指定格式动态填充日期时间?
- c - 使用rpi 2b上的wiringPi从C读取GPIO端口总是说没有信号
- mysql - Mysql - 在插入时从相关表中插入值?
- android - 在按钮单击时插入进度条
- android - 颤振教程
- python - 来自 sklearn 的 Tfidfvectorizer - 如何获取矩阵
- linux - 如何使用 sed 命令替换括号而不丢失括号?
- javascript - 如何使用 Javascript 清除“innerHTML”?
- javascript - 为什么 Firefox 中不显示日期字段?