linux socket高性能服务器处理框架】的更多相关文章

这个博客很多东西 http://blog.csdn.net/luozhonghua2014/article/details/37041765   思考一种高性能的服务器处理框架 1.首先需要一个内存池,目的在于:·减少频繁的分配和释放,提高性能的同时,还能避免内存碎片的问题:·能够存储变长的数据,不要很傻瓜地只能预分配一个最大长度:·基于SLAB算法实现内存池是一个好的思路:分配不同大小的多个块,请求时返回大于请求长度的最小块即可,对于容器而言,处理固定块的分配和回收,相当 容易实现.当然,还要…
第八章 高性能服务器编程框架 这一章主要介绍服务器的三个主要模块: I/O处理单元.逻辑单元.存储单元.另外服务器的模型有:C/S模型和P2P模型.虽然服务器模型比较多,但是其核心框架都一样,只是在于逻辑处理方面.如下图简单的介绍一台服务器或服务器机群模型的基本框架: 1.I/O模型 I/O处理单元:I/O处理单元是服务器管理客户连接的模块.主要是等待并受理新的客户连接接收客户数据,将服务器响应数据返回给客户端. 逻辑单元:就是一个个进程或者线程.用于处理客户数据,将结果传递给I/O处理单元或者…
很多人学习编程技术一般都通过一本编程语言的入门书籍,然后尝试做一些例子和小项目.但是这些都不能让我们深入的学习很多的编程技巧和高深技术,当然这个时候很多有经验的学习人员就会告诉大家,找一个好的开源软件理解它的设计与实现原理,阅读开源项目的源代码,都知道源码之前了无秘密.我也承认读源码能够快速提高我们的编程能力和编程思维,我也经常研究很多项目的源代码,有些是工作需要,有些是兴趣.但是我今天想说的都不是这些,我想说的是更高一层的学习方案,就是通过自己的实践实现一个开源软件,也许这个开源软件没有任何人…
问题聚焦:     核心章节.     服务器一般分为如下三个主要模块:I/O处理单元(四种I/O模型,两种高效事件处理模块),逻辑单元(两种高效并发模式,有效状态机)和存储单元(不讨论). 服务器模型 C/S模型 结构: 特点: 逻辑简单. 工作流程: I/O复用技术:select,同时监听多个客户请求. 优点:适合资源相对集中的场合. 缺点:当访问量过大,可能所有客户都将得到很慢的相应. P2P模型 结构:两种结构 结构b比结构a增加了发现服务器,用于主机之间的互相发现,尽快找到自己需要的资…
服务器有三个主要模块: (1)I/O处理单元 (2)逻辑单元 (3)存储单元 1.服务器模型 C/S模型 逻辑:服务器启动后,首先创建一个或多个监听socket,并调用bind函数将其绑定到服务器感兴趣的端口上,然后调用listen函数等待客户连接. 服务器运行稳定后,客户端就可以调用connect函数向服务器发起连接了. P2P模型 P2P模型使得每台机器在消耗服务的同时也给别人提供服务,这样资源能够充分.自由的共享. 2.服务器编程框架 包含: I/O处理单元  请求队列   逻辑单元  …
在使用select管理服务器连接的时候: 注意1:select是可中断睡眠函数,需要屏蔽信号 注意2:必须获取select的返回值nread,每次处理完一个事件,nread需要-1 注意3:如果客户端的连接超过连接池的大小,需要关闭客户端连接 注意4:获取最大套接字的方法是每次有客户端连接过来时,在和maxfd比较,这样就不用每次select之前都遍历池,查找最大值 服务器 //serhelp.h #ifndef _vxser #define _vxser #ifdef __cplusplus…
客户端未解决Bug:子进程或者父进程退出的时候,我无法做到两个进程都调用clt_socket_Destory()方式释放socket句柄, 但是进程退出后,相应的资源也会释放,有一定影响,但是不大,以后我想到办法再优化.重点:客户端connect服务器方法需要单独分离出来,方便用户自己断线重连. 客户端 //clthelp.h #include <stdio.h> #include "commsocket.h" #ifndef _vxclt #define _vxclt #…
重点:socket共用方法中错误码的定义以及错误码的解析 底层辅助代码 //serhelp.h #ifndef _vxser #define _vxser #ifdef __cplusplus extern "C" { #endif /** * sersocket_init - socket初始化 * @listenfd:文件描述符 * 成功返回0,失败返回错误码 * */ int sersocket_init(int *listenfd); /** * listen_socket -…
1. 高性能定时器:时间轮,时间堆 (處理超時時間,如nginx使用紅黑樹,找出最可能超時的事件) 2. 高性能服务器程序框架:(nginx 使用的是基於事件模型,epoll,不阻塞,異步處理) 两种高效的事件处理模式: Reactor模式 Proactor模式 两种高效的并发模式:半同步/半异步模式 领导者/追随者模式 有限状态机 提高服务器性能的其他建议:池(如nginx,在得到一個連接時,會創建ngx_connection_t;  在得到一份請求的時,會創建ngx_request_t; 這…
问题聚焦:     在简单地介绍线程的基本知识之后,主要讨论三个方面的内容:    1 创建线程和结束线程:    2 读取和设置线程属性:    3 线程同步方式:POSIX信号量,互斥锁和条件变量. Linux线程概述 线程模型 程序中完成一个独立任务的完整执行序列,即一个可调度的实体. 分为内核线程和用户线程 当进程的一个内核线程获得CPU的使用权时,它就加载并运行一个用户线程,可见,内核线程相当于用户线程运行的"容器". 一个进程可以拥有M个内核线程和N个用户线程, M<…