文档章节

memcached连接处理过程

有理想的猪
 有理想的猪
发布于 2014/11/07 16:59
字数 264
阅读 46
收藏 0

以TCP监听为例

1、启动时memcached调用server_socket函数创建事件监听:
main() -> server_sockets() -> server_socket()

conn_new(sfd, conn_listening,
                                             EV_READ | EV_PERSIST, 1,
                                             transport, main_base)))

第二个参数为连接的初始状态,第五个参数为监听协议,目前支持三个:Unix Socket、TCP、UDP,其中UDP与TCP可同时监听,但他们不可与Unix Socket并存,main函数可以看到此代码。

2、在conn_new()中可以看到处理监听事件的函数为 event_handler,经过简单判断之后调用drive_machine()

3、drive_machine中因为此时连接为 conn_listening状态,后续动作接受(accept)连接,然后由dispatch_conn_new()处理

4、dispatch_conn_new()中向我们上一篇博文提到的管道对中的send端发送消息触发对应线程中的事件处理函数thread_libevent_process()
更多信息请查阅管道定义函数 pipe 的文档

5、线程的事件处理函数定义在 thread.c 中,系统初始化时定义线程函数(setup_thread)也在此

© 著作权归作者所有

共有 人打赏支持
有理想的猪
粉丝 136
博文 91
码字总数 32273
作品 0
红挢
高级程序员
私信 提问
服务器高并发网络设计模型

Nginx网络模型 一、进程模型 Nginx之所以为广大码农喜爱,除了其高性能外,还有其优雅的系统架构。与Memcached的经典多线程模型相比,Nginx是经典的多进程模型。Nginx启动后以daemon的方式在...

满小茂
2016/08/28
155
0
缓存-memcache

memcache是c语言编写的内存缓存,常见同php协同应用,支持多种语言。对于java web有三种常用的client Memcached客户端程序 Memcached的java客户端已经存在三种了: 官方提供的基于传统阻塞i...

HZCoder
2016/02/18
109
1
redis介绍、主从配置

NoSQL之redis介绍: remote rerictionry server 是一个基于key-value键值对的持久化数据库存储系统,redis和memcached缓存服务很像。 但是redis支持的数据存储类型更丰富,包括string、list、...

yacai1990
2016/07/11
0
0
Httpd+Tomcat+memcached实现session server

何为会话保持 会话保持是负载均衡最常见的问题之一,也是一个相对比较复杂的问题。会话保持有时候又叫做粘滞会话(Sticky Sessions)。会话保持是指在负载均衡器上的一种机制,可以识别客户端与...

择一城
06/26
0
0
Mcrouter 介绍 —— 来自 Facebook 的 memcached 协议路由器

大多数Web服务开始于前端负载均衡、中间业务服务及后端数据库服务的架构。当业务发展到一定阶段,通常会引入一组缓存服务缓存数据库的数据,减少数据库的压力以提高性能。对一个提供Web服务的...

oschina
2014/09/16
7.7K
19

没有更多内容

加载失败,请刷新页面

加载更多

FTP 协议 1.0

自己制作的FTP协议:

Explorer0
20分钟前
1
0
Android 通过DrawableInflater加载自定义Drawable

一、Drawable 在Android系统张,图形图像的绘制需要在画布上进行操作和处理,但是绘制需要了解很多细节以及可能要进行一些复杂的处理,因此系统提供了一个被称之为Drawable的类来进行绘制处理...

IamOkay
31分钟前
1
0
灵活无处安放,所以选择流浪....《漆黑的空间》& 《灰色轨迹》

灵活无处安放,所以选择流浪....《漆黑的空间》& 《灰色轨迹》

yizhichao
38分钟前
1
0
Kafka+Flink 实现准实时异常检测系统

1.背景介绍 异常检测可以定义为“基于行动者(人或机器)的行为是否正常作出决策”,这项技术可以应用于非常多的行业中,比如金融场景中做交易检测、贷款检测;工业场景中做生产线预警;安防...

架构师springboot
今天
7
0
DecimalFormat 类基本使用

/* * DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度 * 0 表示如果位数不足则以 0 填充 * # 表示只要有可能就把数字拉上这个位置 * */ public static void main(String[] args){...

嘴角轻扬30
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部