一致性哈希算法及其在分布式系统中的应用
摘要
本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hash)及其在分布式系
统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈
希算法以及这个算法如何解决此问题;接下来 会对这个算法进行相对详细的描述,并讨论
一些如虚拟节点等与此算法应用相关的话题。
分布式缓存问题
假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读写数据库
的方式不太给力了,于是我们想引入 Memcached 作为缓存机制。现在我们一共有三台机器
可以作为 Memcached 服务器,如下图所示。
很显然,最简单的策略是将每一次 Memcached 请求随机发送到一台 Memcached 服务器,
但是这种策略可能会带来两个问题:一是同一份数据 可能被存在不同的机器上而造成数据
冗余,二是有可能某数据已经被缓存但是访问却没有命中,因为无法保证对相同 key 的所
有访问都被发送到相同的服务器。因 此,随机策略无论是时间效率还是空间效率都非常不
好。