个人简介

Echo Blog


江湖无名 安心练剑
  • Netty-08-数据传输之 BIO NIO
    基础知识 Internet(全球互联网)是无数台机器基于TCP/IP协议族相互通信产生的。TCP/IP协议族分了四层实现,链路层、网络层、传输层、应用层。 与我们应用开发者接触最多的应该是应用层了,例如web应用普遍使用HTTP协议,HTTP协议帮助我们开发者做了非常多的事情,通过HTTP足以完成大部分的通信工作了,但是有时候会有一些特殊的场景出现,使得HTTP协议并不能得心应手的完成工...
    2017-11-16 11:23:06 | Netty
  • Netty-08-数据传输之 Netty
    模型 NIO模型 同步非阻塞 NIO有同步阻塞和同步非阻塞两种模式,一般讲的是同步非阻塞,服务器实现模式为一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。 AIO模型 异步非阻塞 服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,注:AIO又称为N...
    2017-11-16 11:23:06 | Netty
  • Netty-08-linux 通讯模型之 Reactor
    Reactor 模式是什么 白皮书 libevent 的设计是一个典型的Reactor模型,理解Reactor模型是理解libevent的基石,因此本节主要介绍典型的事件驱动设计模式—Reactor模式 The Reactor design pattern handles service requests that are delivered concurrently to an ap...
    2017-11-16 11:23:06 | Netty
  • Netty-08-linux 通讯模型之 epoll
    文章会从网卡接收数据的流程讲起,串联起 CPU 中断、操作系统进程调度等知识; 再一步步分析阻塞接收数据、select 到 epoll 的进化过程; 最后探究 epoll 的实现细节。 一、从网卡接收数据说起 下边是一个典型的计算机结构图,计算机由 CPU、存储器(内存)与网络接口等部件组成,了解 epoll 本质的第一步,要从硬件的角度看计算机怎样接收网络数据。 下图展示了网...
    2017-11-16 11:23:06 | Netty
  • Netty-08-linux 通讯模型之 epoll
    epoll 直到Linux2.6才出现了由内核直接支持的实现方法,那就是epoll,被公认为Linux2.6下性能最好的多路IO就绪通知方法。epoll可以同时支持水平触发和边缘触发(Edge Triggered,只告诉进程哪些文件描述符刚刚变为就绪状态,它只说一遍,如果我们没有采取行动,那么它将不会再次告知,这种方式称为边缘触发),理论上边缘触发的性能要更高一些,但是代码实现相当复杂。e...
    2017-11-16 11:23:06 | Netty
  • Netty-08-linux 通讯模型之 poll
    Poll poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态,如果设备就绪则在设备等待队列中加入一项并继续遍历,如果遍历完所有fd后没有发现就绪设备,则挂起当前进程,直到设备就绪或者主动超时,被唤醒后它又要再次遍历fd。 这个过程经历了多次无谓的遍历。 它没有最大连接数的限制,原因是它是基于链表来存储的,但是同样有一个缺点: 1、大...
    2017-11-16 11:23:06 | Netty
  • Netty-08-linux 通讯模型之 select
    概览 epoll跟select都能提供多路I/O复用的解决方案。 在现在的Linux内核里有都能够支持,其中epoll是Linux所特有,而select则应该是POSIX所规定,一般操作系统均有实现。 select select 与 poll 工作原理: 1、select 主要是采用轮询的方式来实现对就绪的 fd 处理: 2、poll 和 select 基本相同,主要不同在于 p...
    2017-11-16 11:23:06 | Netty
  • Netty-08-linux 通讯模型概览
    IO模型 linux系统IO分为内核准备数据和将数据从内核拷贝到用户空间两个阶段。 从硬盘==》内核空间缓冲区==》用户空间缓冲区 基本概念 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。 操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。 ...
    2017-11-16 11:23:06 | Netty