面试题答案
一键面试基本组成部分
- 客户端:负责与Memcached集群进行交互,发起数据的存储(set)和读取(get)请求。
- Memcached服务器节点:用于实际存储缓存数据。每个节点独立管理自己的内存空间来存放键值对数据。
- 分布式算法:决定数据如何分布存储到各个Memcached服务器节点上。常见的如一致性哈希算法。
各部分在缓存数据存储和读取过程中的作用
- 客户端:
- 存储过程:客户端将要存储的数据按照规定的格式(键值对等)封装成请求,通过网络发送到Memcached集群。同时,根据分布式算法计算出该数据应该存储到哪个或哪些Memcached服务器节点上,然后将请求发送到对应的节点。
- 读取过程:客户端根据键,使用同样的分布式算法计算出该键值对可能存储的服务器节点,向这些节点发送读取请求,接收并处理从节点返回的数据。
- Memcached服务器节点:
- 存储过程:当接收到客户端的存储请求后,将数据存储在自身管理的内存空间中,以键值对的形式保存。同时,可能会根据自身的缓存策略(如LRU等),在内存不足时清理旧数据以腾出空间。
- 读取过程:接收到客户端的读取请求后,在自身内存中查找对应的键值对。如果找到,则将值返回给客户端;如果未找到,则返回表示未命中的响应。
- 分布式算法:
- 存储过程:在存储时,根据键值对中的键,通过分布式算法计算出应该存储到哪个Memcached服务器节点上,从而将数据均匀分布到集群的各个节点,避免数据集中在某些节点导致负载不均衡。
- 读取过程:在读取时,同样依据键通过分布式算法计算出数据可能所在的节点,客户端依据这个结果向相应节点发起读取请求,保证能准确找到存储数据的节点。