高性能网络设计专栏-网络原理
文章平均质量分 95
路飞H
这个作者很懒,什么都没留下…
展开
-
epoll的实现原理
当发数据的时候,协议栈是知道的,但是应用程序是不知道的,epoll的作用就是在协议栈和应用层之间做到对应的连接有没有数据的检测,并且epoll会管理众多的fd。epoll其实就相当于协议栈和应用程序之间的一个组件。应用程序通过调用epoll的三个接口跟epoll交互,而协议栈所做的事情就是当协议栈触发收或者发数据的时候,就将红黑树的节点添加到就绪队列当中,这里面会做一个回调,由协议栈callback到epoll,使得epoll_wait能够拷贝到数据. 实现自定义epoll时,需要实现哪些东西呢?原创 2023-09-02 23:57:19 · 79 阅读 · 0 评论 -
posix_api与网络协议栈
本文详细介绍 Posix API 与 网络协议栈之间的关系;三次握手、数据传输、四次挥手的过程。上下文耦合性较高,不建议跳跃阅读。原创 2023-08-27 12:10:05 · 94 阅读 · 0 评论 -
redis、memcached、nginx网络组件
1、多线程epoll情况下,epoll_wait或者accept的惊群问题应该怎么解决?惊群问题其实在内核中已经处理了(通过增加互斥锁的方式),不过内核中只能保证最终只有一个线程能接收到这条连接,其他线程的accept可能返回-1并且errno被置为ewouldblock,所以我们用户态不需要特殊的处理;但在nginx中,它是一种多进程方式使用的epoll,nginx通过在多个进程之间加锁的方式在用户态解决惊群,目的是为了在用户层处理连接的负载均衡。原创 2023-08-05 23:41:42 · 46 阅读 · 0 评论