美文网首页memcache源代码研究
memcache源代码研究 - overview

memcache源代码研究 - overview

作者: 羽寒 | 来源:发表于2015-04-07 23:28 被阅读90次

    线程模型

      首先,memcache 在启动的时候会初始化一组 worker 线程,主线程接收到的请求都会转给 worker 线程去处理。需要多提一句的是,主线程与各 worker 线程之间是通过 libevent 通信的, memcache 处理各种 IO 操作都基于的 libevent。

    线程模型.png线程模型.png

    处理流程

      当主线程接收到请求连接(connection)的时候,会将请求转发给 worker 线程。请求的处理流程集中在memcache.c文件里的drive_machine方法当中。drive_machine其实是一个大号的状态机,处理流程经历的状态如一下代码所示:

    /**
     * Possible states of a connection.
     */
    enum conn_states {
        conn_listening, 
        conn_new_cmd, 
        conn_waiting, 
        conn_read, 
        conn_parse_cmd,
        conn_write,
        conn_nread,
        conn_swallow,
        conn_closing,
        conn_mwrite,
        conn_closed,
        conn_max_state
    };
    

      其中解析、处理请求是在conn_parse_cmd开始进行的,主要的逻辑是在process_command函数当中,里面含有对不同命令的处理函数,函数名一般叫process_xxx_command

    关联数组

      memache 使用 Associative Array 来实现的缓存功能。主要的逻辑在assoc.hassoc.c代码文件中。worker 线程接到请求的时候会根据命令类型(set,get etc)对关联数组做不同的操作。

    相关文章

      网友评论

        本文标题:memcache源代码研究 - overview

        本文链接:https://www.haomeiwen.com/subject/kipzxttx.html