E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
memcached源码分析
Memcached源码分析
之Hash表扩容
Hash表是Memcached里面最重要的结构之一,其采用链接法来处理Hash冲突,当Hash表中的项太多时,也就是Hash冲突比较高的时候,Hash表的遍历就脱变成单链表,此时为了提供Hash的性能,Hash表需要扩容,Memcached的扩容条件是当表中元素个数超过Hash容量的1.5倍时就进行扩容,扩容过程由独立的线程来完成,扩容过程中会采用2个Hash表,将老表中的数据通过Hash算法映射
u013702678
·
2014-03-24 19:00
Memcached源码分析
之状态机(三)
按前面2篇文章的分析可以知道,从网络读取了数据之后,将会进入conn_parse_cmd状态,该状态是按协议来解析读取到的网络数据。caseconn_parse_cmd: //解析数据 if(try_read_command(c)==0) { //如果读取到的数据不够,我们继续等待,等读取到的数据够了,再进行解析 conn
u013702678
·
2014-03-24 19:00
memcached
memcached源码分析
memcached状态机
memcached解析协议
Memcached源码分析
之状态机(二)
通过前面一篇文章分析得知,conn_wating状态是在等待读取数据,conn_wating通过修改libevent事件(修改为读事件)之后就进入了conn_read状态,该状态就是从网络中读取数据,下面我们详细分析conn_read状态。caseconn_read: res=IS_UDP(c->transport)?try_read_udp(c):try_read_network(c);//判断
u013702678
·
2014-03-24 13:00
memcached
memcached源码分析
memcached有限状态机
memcached状态机
Memcached源码分析
之状态机(一)
按我们之前的描述,Master线程建立连接之后,分发给Worker线程,而Worker线程处理业务逻辑时,会进入状态机,状态机按不同的状态处理业务逻辑,我们在分析连接分发时,已经看到了Master线程进入状态机时在有新连接建立的时候,后续的状态都是业务逻辑的状态,其处理流程如下图所示:总共有10个状态(代码中的状态不止这些,有些没什么用,此处就没展现),状态listenning状态是Master建
u013702678
·
2014-03-23 17:00
memcached
memcached源码分析
memcached状态机
Memcached源码分析
之网络连接建立
接着上一篇博客继续分析,上一篇博客请参考Memcached源码阅读之网络监听的建立,这篇博客主要分析TCP的连接建立(从前面的代码分析可以看出,这个过程是由主线程驱动的),UDP没有连接建立的过程,所以之间进行连接分发,我们后续分析,现在直接上代码进行讲解。conn*conn_new(constintsfd,enumconn_statesinit_state,constintevent_flags
u013702678
·
2014-03-20 19:00
memcached
memcached源码分析
memcached网络
memcached连接建立
Memcached源码分析
——连接状态变化分析(drive_machine)
这篇文章主要介绍Memcached中,基于libevent构造的主线程和worker线程所处理连接的状态互相转换的过程(不涉数据的存取等操作),也就是drive_machine的主要业务逻辑了。状态转换过程没有涉及所有状态,同时,由于自己能力问题,一些状态转换还可能有错,还请各位前辈指正。转换条件限定:TCP,ASCII协议。(状态不包括conn_swallow,二进制协议才会用到此状态)1总揽首
诶露基基(LGG)
·
2014-03-20 15:00
Memcached源码阅读之服务器资源调整
本篇博客作为
Memcached源码分析
的开篇,这次阅读的源码版本为:1.4.15,开源软件各个版本之间差异比较大,同学们学习时,记得核对版本。
u013702678
·
2014-03-18 20:00
源码
memcached
memcached源码分析
之线程池机制(二)
在上一篇中已分析了memcached线程池的创建流程,由于上篇篇幅较长,因此将memcached线程池中线程的调度流程另立一篇。先让我们把目光转到主函数中,主线程在调用thread_init函数创建好线程池后,就开始创建监听套接字,memcached支持TCP,UDP,UNIX域套接字,因此相应的要创建三种监听套接字这里我们只分析TCPlisteningsocket的创建(UDP与TCP的创建采用
wangfaqiang
·
2014-01-27 15:00
memcached源码分析
之线程池机制(一)
已经个把月没有写长篇博文了,最近抽了点时间,将
memcached源码分析
系列文章的线程机制篇给整出来,在分析源码的过程中参考了网上的一些资源。
wangfaqiang
·
2014-01-27 15:00
Memcached 学习的感想
a:
Memcached源码分析
(线程模型):讲的比较全面,但是感觉贴的代码有点多(数据结构的代码)。b:memcache线程模型。总体下来觉得:1.基于libevent实现事件的异步处理,性
hjxhjh
·
2013-11-16 17:00
Memcached源码分析
(线程模型)
(转)目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析 有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之 先看下memcahced启动时线程处理的流程 memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和n个workers线程 无论是主线程还是workers线程全
lizhiqingli
·
2013-11-05 22:00
memcached
Memcached源码分析
(线程模型)
http://www.iteye.com/topic/344172目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析 有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之 先看下memcahced启动时线程处理的流程 memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和n
ywh147
·
2013-07-04 17:00
memcached源码分析
之线程模型 【转】
memcahced启动时线程处理的流程memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和n个workers线程无论是主线程还是workers线程全部通过libevent管理网络事件,实际上每个线程都是一个单独的libevent实例主线程负责监听客户端的建立连接请求,以及accept连接workers线程负责处理已经建立好的连接的读写等事件先看一下大致的图示:首
ferrarild
·
2013-01-14 18:00
Memcached源码分析
之内存管理 【转】
使用命令set(key,value)向memcached插入一条数据,memcached内部是如何组织数据呢 一把数据组装成itemmemcached接受到客户端的数据后,把数据组装成item,item的格式如下: 图1structitem的结构 源码中这样定义structitem: C代码 /** * Structure for storing items within memcached
ferrarild
·
2013-01-14 18:00
spymemcached源码中Reactor模式分析
spy
memcached源码分析
:http://my.oschina.net/astute/blog/93492Reactor模式介绍所谓reactor模式,其实是event-drivenpattern
yychaov5
·
2013-01-04 14:00
nio
Reactor
spymemcached
Memcached源码分析
之内存管理篇之item结构图及slab结构图
.
Memcached源码分析
之内存管理篇博客分类:linuxc .使用命令set(key,value)向memcached插入一条数据,memcached内部是如何组织数据呢 一把数据组装成itemmemcached
yxnyxnyxnyxnyxn
·
2012-08-15 16:00
list
cache
memcached
null
search
Memcached源码分析
之内存管理篇
使用命令set(key,value)向memcached插入一条数据,memcached内部是如何组织数据呢 一把数据组装成itemmemcached接受到客户端的数据后,把数据组装成item,item的格式如下: 图1structitem的结构 源码中这样定义structitem: C代码 收藏代码 /** *Structureforstoringitemswithinmemc
haibo600
·
2012-08-14 10:04
源码
内存
memcache
Memcached源码分析
(线程模型)
目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之先看下memcahced启动时线程处理的流程memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和n个workers线程无论是主线程还是workers线程全部通过libeve
yxnyxnyxnyxnyxn
·
2012-08-13 13:00
memcached源码分析
之hashtable
memcached中hashtable部分的源码主要分布在assoc.h/c、hash.h/c中,总得来说代码比较简单,这里就稍微介绍一下。 hashtable通常包括哈希函数和解决冲突的方法两个最主要的因素,memcached使用的哈希函数为BobJenkins在1996年发明的,定义位于hash.h中,实现在hash.c中,作者与2006年时提出另一个新的hash算法
houzengjiang
·
2012-07-05 11:00
thread
cache
memcached
delete
insert
扩展
Memcached源码分析
之内存管理
使用命令set(key,value)向memcached插入一条数据,memcached内部是如何组织数据呢 一把数据组装成itemmemcached接受到客户端的数据后,把数据组装成item,item的格式如下: 图1structitem的结构 源码中这样定义structitem: C代码 /** * Structure for storing items within memcached
houzengjiang
·
2012-07-05 11:00
memcached源码分析
之线程模型
memcahced启动时线程处理的流程memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和n个workers线程无论是主线程还是workers线程全部通过libevent管理网络事件,实际上每个线程都是一个单独的libevent实例主线程负责监听客户端的建立连接请求,以及accept连接workers线程负责处理已经建立好的连接的读写等事件先看一下大致的图示:首
houzengjiang
·
2012-07-05 11:00
Memcached源码分析
之网络模型篇
memcached采用多线程的工作方式,主线程接收连接,然后把连接平摊给工作线程,工作线程处理业务逻辑, memcached使用libevent处理网络事件,主线程和工作线程都有一个eventbase,这是libevent 的核心数据结构,eventbase能够监听多个socket的网络事件,概括起来,memcached大体框架如图1 所示. 图1memcached的多线程模型 主线程的初始
kenby
·
2012-03-02 01:00
memcached
Memcached源码分析
之内存管理篇
使用命令set(key,value)向memcached插入一条数据,memcached内部是如何组织数据呢 一把数据组装成itemmemcached接受到客户端的数据后,把数据组装成item,item的格式如下: 图1structitem的结构 源码中这样定义structitem: /** *Structureforstoringitemswithinmemcached. */ typ
kenby
·
2012-02-26 15:00
memcached
Memcached源码分析
--线程模型(三)
原文:http://www.iteye.com/topic/344172最后看看memcached网络事件处理的最核心部分-drive_machine 需要铭记于心的是drive_machine是多线程环境执行的,主线程和workers都会执行drive_machine static void drive_machine(conn *c) { bool stop =
MichaelChenl
·
2012-01-05 13:26
源码
线程
职场
memcached
休闲
Memcached源码分析
--线程模型(三)
原文:http://www.iteye.com/topic/344172最后看看memcached网络事件处理的最核心部分-drive_machine需要铭记于心的是drive_machine是多线程环境执行的,主线程和workers都会执行drive_machinestatic void drive_machine(conn *c) { bool stop = false;
MichaelChenl
·
2012-01-05 13:26
职场
线程
休闲
memcached
Memcached源码分析
--线程模型(二)
原文:http://www.iteye.com/topic/344172下面看看thread_init是怎样启动所有workers线程的,看一下thread_init里的核心代码void thread_init(int nthreads, struct event_base *main_base) { //。。。省略 threads = malloc(sizeof(LIBEVENT
MichaelChenl
·
2012-01-05 13:35
职场
线程
休闲
memcached
Memcached源码分析
--线程模型(二)
原文: http://www.iteye.com/topic/344172下面看看thread_init是怎样启动所有workers线程的,看一下thread_init里的核心代码 void thread_init(int nthreads, struct event_base *main_base) { //。。。省略 threads = malloc(s
MichaelChenl
·
2012-01-05 13:35
源码
线程
职场
memcached
休闲
Memcached源码分析
--线程模型(一)
原文:http://www.iteye.com/topic/344172下面对memcached的线程模型做下简单分析,先看下memcahced启动时线程处理的流程。memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和n个workers线程无论是主线程还是workers线程全部通过libevent管理网络事件,实际上每个线程都是一个单独的libevent实例主线
MichaelChenl
·
2012-01-05 13:04
职场
线程
休闲
memcached
Memcached源码分析
--线程模型(一)
原文:http://www.iteye.com/topic/344172下面对memcached的线程模型做下简单分析,先看下memcahced启动时线程处理的流程。 memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和n个workers线程 无论是主线程还是workers线程全部通过libevent管理网络事件,实际上每个线程都是一个单独的libevent实
MichaelChenl
·
2012-01-05 13:04
源码
线程
职场
memcached
休闲
[原创+转载] memcached源码学习-多线程模型
本来计划研究memcached的多线程模型,后来发现网上博文《
Memcached源码分析
(线程模型)》写的非常好,因此,也省去了我的大部分时间,这里并不打算自己再重新总结。
tankles
·
2011-12-02 19:00
Memcached源码分析
(线程模型)
http://www.iteye.com/topic/344172目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析 有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之 先看下memcahced启动时线程处理的流程 memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和n
chenwenshi
·
2011-08-19 17:00
thread
多线程
c
socket
memcached
buffer
Memcached源码分析
(线程模型)
转自:http://www.iteye.com/topic/344172 目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之先看下memcahced启动时线程处理的流程memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和
lyjtynet
·
2011-04-11 14:00
Memcached源码分析
(线程模型)
目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之先看下memcahced启动时线程处理的流程memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和n个workers线程无论是主线程还是workers线程全部通过libeve
bachmozart
·
2009-03-05 19:00
多线程
thread
C++
C#
memcached
上一页
1
2
3
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他