068期分布式面试题三分布式Memachche

2020-08-29 21:50 Java最全面试题库

  点击上方蓝色字体,关注我吧

2020年百日百更原创Java最全面试题库之往期回顾

【000期】Java最全面试题库思维导图

【020期】JavaSE系列面试题汇总(共18篇)

【028期】JavaWeb系列面试题汇总(共10篇)

【042期】JavaEE系列面试题汇总(共13篇)

【049期】数据库系列面试题汇总(共6篇)

【053期】中间件系列面试题汇总(共3篇)

【065期】数据结构与算法面试题汇总(共11篇)

【066期】分布式面试题(一):分布式锁

【067期】分布式面试题(二):分布式Redis


开篇介绍

大家好,我是Java最全面试题库提裤姐,今天这篇是分布式技术的第三篇,主要总结了分布式Memcached相关的问题;在后续,会沿着第一篇开篇的知识线路一直总结下去,做到日更!如果我能做到百日百更,希望你也可以跟着百日百刷,一百天养成一个好习惯。


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在负载极高的场景下的性能。










“一个专注于分享各类Java面试题的号主,长按二维码关注我吧 ”

祝大家都能拿到心仪的offer!







长按识别二维码

等风也等你



文章都看完了不点个 吗

本文章转载自公众号:tikujie

首页 - Java 相关的更多文章: