分布式面试题(三):分布式Memachche

Q:
memcached的 cache机制是怎样的?

Memcached主要的 cache机制是LRU最近最少用算法+超时失效。
当存数据到 memcached中,可以指定该数据在缓存中可以呆多久 ;如果 memcached的内存不够用了,过期的 slabs会优先被替换,接着就轮到老的未被使用的 slabs。

Q:
memcached如何实现冗余机制?

不实现。Memcached应该是应用的缓存层。

它的设计本身就不带有任何冗余机制。如果一个 Memcached节点失去了所有数据,应该可以从数据源(比如数据库)再次获取到数据。特别注意,应用应该可以容忍节点的失效。不要写一些糟糕的查询代码,寄希望于 memcached来保证一切,如果担心节点失效会大大加重数据库的负担,那么可以采取一些办法。比如可以增加更多的节点(来减少丢失一个节点的影响),热备节点(在其他节点down了的时候接管ip等等)。

Q:
memcached是如何做身份验证的?

没有身份认证机制;
memcached是运行在应用下层的软件(身份验证应该是应用上层的职责)。memcached的客户端和服务器端之所以是轻量级的,部分原因就是完全没有实现身份验证机制。这样, memcached可以很快地创建新连接,服务器端也无需任何配置。
如果希望限制访问,可以使用防火墙,或者让 memcached监听unix domain socket.

Q:
memcached能接受的key的最大长度是多少?

key的最大长度是250个字符。
需要注意的是,250是 memcached服务器端内部的限制,如果使用的客户端支持key的前缀或类似特性,那么key(前缀+原始key)的最大长度是可以超过250个字符的。推荐使用较短的key,因为可以节省内存和带宽。

Q:
memcached对item的过期时间有什么限制?

过期时间最大可以达到30天。memcached把传入的过期时间(时间段)解释成时间点后,一旦到了这个时间点,memcache就把item置为失效状态。这是一个简单但 obscure的机制。

Q:
memcached最大能存储多大的单个item?

1MB。如果数据大于1MB,可以考虑在客户端压缩或拆分到多个key中。

Q:
memcached的多线程是什么?如何使用它们?

memcached1.2及更高版本拥有了多线程模式。多线程模式允许 memcached能够充分利用多个CPU,并在CPU之间共享所有的缓存数据。memcached使用一种简单的锁机制来保证数据更新操作的互斥。相比在同一个物理机器上运行多个 memcached实例,这种方式能够更有效地处理 multi gets。
如果系统负载并不重,也许不需要启用多线程工作模式。如果您在运行一个拥有大规模硬件的、庞大的网站,将会看到多线程的好处。

简单地总结一下:命令解析,memcached在这里花了大部分时间可以运行在多线程模式下。memcached内部对数据的操作是基于很多全局锁的(因此这部分工作不是多线程的)。未来对多线程模式的改进,将移除大量的全局锁,提高 memcached在负载极高的场景下的性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值