memcache的一致性hash算法使用
摘要:一、概述 1、我们的memcache客户端(这里我看的spymemcache的源码),使用了一致性hash算法ketama进行数据存储节点的选择。与常规的hash算法思路不同,只是对我们要存储数据的key进行hash计算,分配到不同节点存储。一致性hash算法是对我们要存储数据的服务器进行hash计
阅读全文
posted @
2016-01-22 09:32
duanxz
阅读(557)
推荐(1) 编辑
Linux下的Memcache安装,启动
摘要:一、linux安装memcache 1. 如果通过下载源码进行安装,则需要下载最新版本http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz。 如果通过apt-get方式安装,则无需下载。 2. 进行memcache的安装: 1).
阅读全文
posted @
2016-01-21 20:26
duanxz
阅读(4530)
推荐(0) 编辑
memcache常见问题及解答
摘要:memcached的cache机制是怎样的? Memcached主要的cache机制是LRU(最近最少用)算法+超时失效。当您存数据到memcached中,可以指定该数据在缓存中可以呆多久Which is forever, or some time in the future。如果memcached
阅读全文
posted @
2016-01-21 20:26
duanxz
阅读(615)
推荐(0) 编辑
Memcache技术分享:介绍、使用、存储、算法、优化、命中率
摘要:1、memcached 介绍 1.1 memcached 是什么? memcached 是以LiveJournal旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal 等众
阅读全文
posted @
2016-01-21 19:49
duanxz
阅读(704)
推荐(0) 编辑
memcache两种客户端比较
摘要:1.memcached client for java 客户端API:memcached client for java 网址:http://www.whalin.com/memcached(我从 https://github.com/gwhalin/Memcached-Java-Client/do
阅读全文
posted @
2016-01-21 19:09
duanxz
阅读(3945)
推荐(0) 编辑
让memcached分布式
摘要:memcached是应用最广的开源cache产品,它本身不提供分布式的解决方案,我猜想一方面它想尽量保持产品简单高效,另一方面cache的key-value的特性使得让memcached分布式起来比较简单。memcached的分布式主要在于客户端,通过客户端的路由处理来搭建memcached集群环境
阅读全文
posted @
2016-01-21 18:33
duanxz
阅读(695)
推荐(0) 编辑
分布式缓存系统 Memcached 基本配置与命令
摘要:为了方便测试,给出一个C客户端libmemcached链接:https://launchpad.net/libmemcached/ 以及memcacheclient-2.0 : http://code.jellycan.com/files/memcacheclient-2.0.zip(已生成 sln
阅读全文
posted @
2016-01-17 23:47
duanxz
阅读(946)
推荐(0) 编辑
分布式缓存系统 Memcached CAS协议
摘要:Memcached在1.2.4版本后新增了CAS(Check and Set)协议,主要用于并发控制:memcached中同一个item同时被多个线程(多个客户端)更改的并发问题。CAS协议最本质的东西——版本号,即将每个item都关联一个全局唯一的编号,从而利用该唯一的编号来判断item数据在某个
阅读全文
posted @
2016-01-17 23:46
duanxz
阅读(1891)
推荐(0) 编辑
分布式缓存系统 Memcached 状态机之SET、GET命令
摘要:首先对状态机中的各种状态做个简单总结,具体可见状态转换示意图: 1.listening:这个状态是主线程的默认状态,它只有这一个状态:负责监听socket,接收客户连接,将连接socket派发给工作线程。 2.conn_new_cmd:每个工作线程的接收到新连接的初始状态,为处理该连接socket准
阅读全文
posted @
2016-01-17 23:45
duanxz
阅读(728)
推荐(0) 编辑
分布式缓存系统 Memcached 状态机之socket连接与派发
摘要:上节已经分析到了主线程中监听socket注册事件和工作线程中连接socket注册事件的回调函数都是event_handler,且event_handler的核心部分都是一个有限状态机:drive_machine。因此接下来将对该状态机具体的业务处理进行深入的剖析。 memcached将每个socke
阅读全文
posted @
2016-01-17 23:44
duanxz
阅读(726)
推荐(0) 编辑
分布式缓存系统 Memcached 状态机之网络数据读取与解析
摘要:整个状态机的基本流程如下图所示,后续分析将按该流程来进行。 接上节分解,主线程将接收的连接socket分发给了某工作线程,然后工作线程从任务队列中取出该连接socket的CQ_ITEM,开始处理该连接的所有业务逻辑。这个过程也就是上图中的第一个状态conn_listening。 而工作线程首先进入的
阅读全文
posted @
2016-01-17 23:44
duanxz
阅读(688)
推荐(0) 编辑
分布式缓存系统 Memcached 半同步/半异步模式
摘要:在前面工作线程初始化的分析中讲到Memcached采用典型的Master_Worker模式,也即半同步/半异步的高效网络并发模式。其中主线程(异步线程)负责接收客户端连接,然后分发给工作线程,具体由工作线程完成客户端的求情任务。 在memcached中,主线程负责监听所有socket上的事件,当so
阅读全文
posted @
2016-01-17 23:43
duanxz
阅读(902)
推荐(0) 编辑
分布式缓存系统 Memcached 主线程之main函数
摘要:前两节中对工作线程的工作流程做了较为详细的分析,现把其主要流程总结为下图: 接下来本节主要分析主线程相关的函数设计,主函数main的基本流程如下图所示: 对于主线程中的工作线程的初始化到启动所有的工作线程前面已经做了分析,后面的创建监听socket、注册监听socket的libevent事件、启动主
阅读全文
posted @
2016-01-17 23:43
duanxz
阅读(626)
推荐(0) 编辑
分布式缓存系统 Memcached slab和item的主要操作
摘要:上节在分析slab内存管理机制时分析Memcached整个Item存储系统的初始化过程slabs_init()函数:分配slabclass数组空间,到最后将各slab划分为各种级别大小的空闲item并挂载到对应大小slab的空闲链表slots上。本节将继续分析对slab和item的主要操作过程。 s
阅读全文
posted @
2016-01-17 23:42
duanxz
阅读(639)
推荐(0) 编辑
分布式缓存系统 Memcached 内存管理机制
摘要:在前面slab数据存储部分分析了Memecached中记录数据的具体存储机制,从中可以看到所采用的内存管理机制——slab内存管理,这也正是linux所采用的内存高效管理机制,对于Memchached这样的内存cache服务器,内存高效管理是其最重要的任务之一。 Linux 所使用的 slab 分配
阅读全文
posted @
2016-01-17 23:41
duanxz
阅读(636)
推荐(0) 编辑
分布式缓存系统 Memcached 工作线程初始化
摘要:Memcached采用典型的Master-Worker模式,其核心思想是:有Master和Worker两类进程(线程)协同工作,Master进程负责接收和分配任务,Worker进程负责处理子任务。当各Worker进程将各个子任务处理完成后,将结果返回给Master进程,由Master进程做归纳和汇总
阅读全文
posted @
2016-01-17 23:40
duanxz
阅读(644)
推荐(0) 编辑
分布式缓存系统 Memcached 数据存储slab与hashtable
摘要:缓存数据以item为基本单元,以双链表形式存放在对应级别大小的slabclass结构的chunk中。同时该item还存放在链式hashtable中bucket中,用于提供快速查找的索引。 首先是理解缓存的基本数据单元item结构: typedef struct _stritem { struct _
阅读全文
posted @
2016-01-17 23:39
duanxz
阅读(849)
推荐(0) 编辑
分布式缓存系统 Memcached 哈希表操作
摘要:memcached 中有两张hash 表,一个是“主hash 表”(primary_hashtable),另外一个是“原hash 表”(old_hashtable)。一般情况下都在主表中接受操作,在插入新item时判断是否需要进行扩;每次操作的时候,先会检测表是否正处于扩展(expanding)状态
阅读全文
posted @
2016-01-17 23:39
duanxz
阅读(766)
推荐(0) 编辑
分布式缓存系统 Memcached 整体架构
摘要:分布式缓存出于如下考虑,首先是缓存本身的水平线性扩展问题,其次是缓存大并发下的本身的性能问题,再次避免缓存的单点故障问题(多副本和副本一致性)。分布式缓存的核心技术包括首先是内存本身的管理问题,包括了内存的分配,管理和回收机制。其次是分布式管理和分布式算法,其次是缓存键值管理和路由。 什么是Memc
阅读全文
posted @
2016-01-17 23:38
duanxz
阅读(1430)
推荐(0) 编辑
数据分析与处理之二(Leveldb 实现原理)
摘要:郑重声明:本篇博客是自己学习 Leveldb 实现原理时参考了郎格科技系列博客整理的,原文地址:http://www.samecity.com/blog/Index.asp?SortID=12,只是为了加深印象,本文的配图是自己重新绘制的,大部分内容与原文相似,大家可以浏览原始页面 :-),感兴趣的
阅读全文
posted @
2016-01-17 22:58
duanxz
阅读(424)
推荐(0) 编辑