- 博客(10)
- 收藏
- 关注
原创 十、任务调度(二)
Eb32treeEb32tree是Ebtree32位版本的一个具体实现。[ebtree/eb32tree.h]/* This structure carries a node, a leaf, and a key. It must start with the * eb_node so that it can be cast into an eb_node. We could al
2013-05-31 20:52:58
1018
原创 九、任务调度(一)
Haproxy的任务调度机制使用的数据结构为弹性二叉树(Ebtree),从源文件中的介绍,应该是作者自己创作并命名的。本节将会介绍Ebtree的基本概念以及作者实现的一些通用操作。概念对于Ebtree的描述如下[ebtree/ebtree.h]/* General idea: ------------- In a radix binary tree, we m
2013-05-29 21:58:39
973
原创 八、Session的处理
在event_accept小节曾经说过task的process成员是来自于listener的handler成员,而listener的handler成员是在解析配置文件时设置为process_session的。那么接下来就看看Haproxy最主要的任务处理过程是怎么样的。[sec/sessiom.c]process_session()/* Processes the client, serv
2013-05-01 23:38:19
1289
原创 七、Tcpv4_connect_server函数
[src/proto_tcp.c] tcpv4_connect_server()int tcpv4_connect_server(struct stream_interface *si, struct proxy *be, struct server *srv, struct sockaddr *srv_addr, struct sockaddr *from_addr)
2013-05-01 23:08:04
1001
原创 六、event_accept函数
此函数对应于Listner在有新链接的时候调用的read函数。[src/client.c]event_accept()int event_accept(int fd) { struct listener *l = fdtab[fd].owner;//这个值从前一部分可知 struct proxy *p = (struct proxy *)l->private; //这是在解析配置文
2013-04-28 00:24:28
1285
原创 五、listener fd的初始化
Listener fd的创建以及监听代码位于[src/proto_tcp.c]的tcp_bind_listener函数中。[src/proto_tcp.c] tcp_bind_listener()int tcp_bind_listener(struct listener *listener, char *errmsg, int errlen){ __label__ tcp_retu
2013-04-28 00:11:58
1211
原创 四、时间
对于一个服务器来说,它对时间的要求并不是特别高,因此可以在程序中维护一个时间,然后在某些条件触发时对这个时间进行更新,程序中的时间均使用这个维护的时间量,这样做能避免每次需要时间的时候进行一次耗时的系统调用,提升程序性能。在Haproxy中,作者正是这样做的。数据结构[src/time.c]unsigned int curr_sec_ms; /* millisecond
2013-04-28 00:02:08
921
原创 三、I/O模型
数据结构[include/types/fd.h]/* info about one given fd */struct fdtab { struct { int (*f)(int fd); /* read/write function */ struct buffer *b; /* read/write buffer */ } cb
2013-04-27 23:57:00
1269
原创 二、信号
数据结构[include/types/signal.h]struct signal_descriptor { int count; /* number of times raised */ void (*handler)(int sig);};struct signal_descriptor signal_state[MAX_SIGNAL];int signal_qu
2013-04-27 23:34:03
1222
原创 一、概述
在具体的分析程序源代码之前,我准备先看一下Haproxy的doc目录下的architecture.txt文件。作者在此文件中说,由于涉及到解释性的脚本语言,一个网络应用程序的前端服务器SERVER往往都会承受非常大的压力;当然这也可能依赖于相对压力不是很大的后端的数据库服务器DB。(对于后者,我的理解是当DB慢一点的话,SERVER对于请求的响应就没那么快,新的请求又来到,又要分配新的资源,造
2013-04-22 21:24:32
1643
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅