您现在的位置是:主页 > Web前端技术 > Web前端技术

怎么进行memcache内核的原理分析开发技术

IDCBT2021-12-29服务器技术人已围观

简介这期内容当中小编将会给大家带来有关怎么进行memcache内核的原理分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 memcache是互联网分层架

这期内容当中小编将会给大家带来有关怎么进行memcache内核的原理分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

memcache是互联网分层架构中,使用最多的的KV缓存。面试的过程中,memcache相关的问题几乎是必问的,关于memcache的面试提问,你能回答到哪一个层次呢?

第一类问题:知道不知道

这一类问题,考察用没用过,知不知道,相对比较好回答。

关于memcache一些基础特性,使用过的小伙伴基本都能回答出来:

    mc的核心职能是KV内存管理,value存储***为1M,它不支持复杂数据结构(哈希、列表、集合、有序集合等);

    mc不支持持久化;

    mc支持key过期;

    mc持续运行很少会出现内存碎片,速度不会随着服务运行时间降低;

    mc使用非阻塞IO复用网络模型,使用监听线程/工作线程的多线程模型;

    面对这类封闭性的问题,一定要斩钉截铁,毫无犹豫的给出回答。

    第二类问题:为什么(why),什么(what)

    这一类问题,考察对于一个工具,只停留在使用层面,还是有原理性的思考。

    (1) memcache为什么不支持复杂数据结构?为什么不支持持久化?

    业务决定技术方案,mc的诞生,以“以服务的方式,而不是库的方式管理KV内存”为设计目标,它颠覆的是,KV内存管理组件库,复杂数据结构与持久化并不是它的初衷。

    当然,用“颠覆”这个词未必不合适,库和服务各有使用场景,只是在分布式的环境下,服务的使用范围更广。设计目标,诞生背景很重要,这一定程度上决定了实现方案,就如redis的出现,是为了有一个更好用,更多功能的缓存服务。

    画外音:我很喜欢问这个问题,大部分候选人面对这个没有标准答案的问题,状态可能是蒙圈。

    (2) memcache是用什么技术实现key过期的?

    懒淘汰(lazy expiration)。

    (3) memcache为什么能保证运行性能,且很少会出现内存碎片?

    提前分配内存。

    (4) memcache为什么要使用非阻塞IO复用网络模型,使用监听线程/工作线程的多线程模型,有什么优缺点?

    目的是提高吞吐量。

    多线程能够充分的利用多核,但会带来一些锁冲突。

    面对这类半开放的问题,有些并没有标准答案,一定要回答出自己的思考和见解。

    第三类问题:怎么做(how) | 文本刚开始

    这一类问题,探测候选人理解得有多透,掌握得有多细,对技术有多刨根究底。

    画外音:所谓“好奇心”,真的很重要,只想要“一份工作”的技术人很难有这种好奇心。

    (1) memcache是什么实现内存管理,以减小内存碎片,是怎么实现分配内存的?

    开讲之前,先解释几个非常重要的概念:

    标签:

    很赞哦! ()

本栏推荐