Server
2016-01-01 10:26:24 0 举报
服务器是一种高性能计算机,用于存储、处理和传输数据。它通常被安装在数据中心或企业网络中,为其他计算机提供各种服务。服务器的主要功能包括文件存储、数据库管理、电子邮件服务、网站托管等。它们通常具有高速处理器、大量内存和硬盘空间,以支持高负载的数据处理和并发访问。此外,服务器还具有高度可靠性和安全性,以确保数据的完整性和保密性。随着云计算技术的发展,越来越多的企业选择将数据和应用迁移到云端,从而降低硬件成本并提高灵活性。总之,服务器是现代信息技术基础设施的核心组成部分,对于支持各种在线业务和服务至关重要。
作者其他创作
大纲/内容
T1
T2
cTcpSocket.doSend
产生内部通知
YES
m_EventTaskQueue.PushEvent
cLogicWorker
ThreadType2
ThreadType1
epoll线程实际是可以同时存在多个的,如果有多个epoll线程的话,可以提高服务端的处理速度为了能够实现多个epoll线程的,线程池必须要有能力知道fd对应在哪个epoll线程中,才能正确的将发送请求放到对应的fd所在的epoll线程的内部事件队列中在整个流转过程中,SOCKET_KEY结构始终自底向上传递,一个SOCKET_KEY标示一个客户端fd和与之相对应的epoll线程
cTcpEpollWorker
SendMsg设置fd为EPOLLOUT
EPOLLOUT
DoOnListen
LogicWorkerType1.PushTask
CreateThead(type)
cTcpSocket(listner socket)
LogicWorkerType2.PushTask
内部通知
HandleEvent
cTcpSocket.doRead
1. 蓝色为侦听链接线程,使用select,跑accept。当有新连接时,产生一个内部事件,随后由黄色线程将fd加入到epoll中2. 黄色是主要的网络线程,采用epoll,负责接收数据,发送数据 a. 采用一个EventTaskQueue来进行事件通知 b. 内部通知其实是给服务器自己send一个消息 c. EventTaskQueue中的任务可能是来自客户端的新连接、内部事件、发送请求、新数据接收等 d. 接收数据后,通过解码后,分配一个空闲的逻辑线程处理业务逻辑 e. 发送数据时,先产生一个内部事件,将数据放到cTcpSocket的发送缓冲中,然后设置EPOLLOUT,黄色线程随后得到一个EPOLLOUT的写准备通知,随后cTcpSocket真正调用send3. 线程(worker)统一有cThreadPoolMan管理
AddSocketToRecv
cTcpSocketListen
MainProc
Run
uuu
CreateConnect
ThreadType3
AddEpollEvent
decode
cTaskQueue
WaitClientSocket(select)
T3
EPOLLIN
0 条评论
下一页