服务端网络处理 | Redis 笔记

网络服务器:mysql, redis, Memcached【缓存、存储】,Nginx,ZeroMQ, Fastdfs, Haproxy,kafka【消息队列服务器】 leveIDB

 

【都有相应的网络处理层】

底层IO:  网络IO--->socket     epoll检测哪个端口有数据 [epoll + 单线程/多线程/多进程]

每个客户端与网络服务器通信的通道: socket

哪些才是真正的技术点:

例如,文件传输,1 能够同时支持多少客户端同时传输,2 网络IO是如何处理的,epoll 是使用单线程还是多线程【有没有加速,线程同步】,3 文件传输使用的协议是什么?TCP + 应用协议【应用协议文件存储格式是什么】,4 数据怎么存储到磁盘,格式是什么?

 

Redis--单线程异步

简单理解为非阻塞,

客户端 1 建立新连接  2 客户端发送set key value 请求  【readable, 新建一个新socket】  3返回OK

事件驱动服务器:每个客户端都给服务器发送数据,就会有很多相应的IO 就变为可读事件,通过epoll来触发可读事件,服务器作为整个事件底层的驱动,事件轮询[多长时间轮询一次]是事件驱动,成千上万的客户端连接,形成反应堆,reactor 模式,while循环不断检测所有IO。一堆IO直接送达内存,在内存中处理。【epoll out/in error】

epoll_wait: 事件轮询,多长时间轮询一次,哪些IO处于可读状态,哪些IO处于可写状态。

events: 记录所有有反应的IO

 

 

 

 

你可能感兴趣的:(服务端网络处理 | Redis 笔记)