摘要: 举个例子 现在你写好了一个牛逼的cache服务,但是这个是单机版本。给你十台机器,让你做均衡。 你可能会想到 hash(request)%N来决定分到哪个机器。 理论知识 一致性:我又把它叫做可加性,就是你的哈希算法得能允许这样的情况。为了扩容我加了一个cache机器进来,你得让原来哈希到老机器上的流量能够分流到新机器上来 平衡性:算法得让流量尽可能的分到各个cache上 为了解决什么问... 阅读全文
posted @ 2014-11-13 17:23 stevinwang 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 理论: 一个程序90%时间运行在10% 的代码上 时间局部性原理 近期被引用过的内存,未来会被多次引用 空间局部性原理 存储器附近的内容被访问,未来附近很可能也会被访问 考虑因素,其实都是为了用更少的内存缓存更多的结果更快的取到 时间效率 空间利用率 命中率 实现难易 这么几种策略 随机替换,达到替换条件的时候生成随机数 FIFO,先进先出策略,不符合局部性原理 LRU,最近最常访问元素提前,... 阅读全文
posted @ 2014-11-13 15:59 stevinwang 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 关键数据结构 /* 主哈希表 */ static item** primary_hashtable = 0; /* 哈希表扩容的前期表,存储还没来得及移动到主哈希表的key */ static item** old_hashtable = 0; /* 哈希表中的item数 */ static int hash_items = 0; /* Flag: Are we in the middl... 阅读全文
posted @ 2014-11-13 15:33 stevinwang 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 每个thread一个连接队列,conn很庞大,你可以理解它囊括了连接包含的所有信息,小宇宙。typedef struct { pthread_t thread_id; /* unique ID of this thread */ struct event_base *base; /* libeven... 阅读全文
posted @ 2014-11-13 00:38 stevinwang 阅读(162) 评论(0) 推荐(0) 编辑