
网络io
文章平均质量分 90
Linux服务器开发
C/C++Linux后台服务器开发高级架构师内容包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,音视频开发,Linux内核,TCP/IP,协程,DPDK多个高级知识点。
展开
-
阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一文搞定
关于IO会涉及到阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO等几个知识点。知识点虽然不难但平常经常容易搞混,特此Mark下,与君共勉。阻塞IO情况下,当用户调用read后,用户线程会被阻塞,等内核数据准备好并且数据从内核缓冲区拷贝到用户态缓存区后read才会返回。可以看到是阻塞的两个部分。CPU把数据从磁盘读到内核缓冲区。CPU把数据从内核缓冲区拷贝到用户缓冲区。非阻塞IO发出read请求后发现数据没准备好,会继续往下执行,此时应用程序会不断轮询polling内核询问数据是否准备好,当数据没原创 2022-06-23 15:17:09 · 328 阅读 · 0 评论 -
C++后台开发—网络IO模型与Reactor模式
一、三种网络IO模型:分类:BIO 同步的、阻塞式 IO NIO 同步的、非阻塞式 IO AIO 异步非阻塞式 IO推荐视频:C++架构师学习地址:C/C++Linux服务器开发高级架构师/Linux后台架构师-学习视频epoll原理剖析以及reactor模型应用linux epoll网络编程细节处理阻塞和同步的概念:阻塞:若读写未完成,调用读写的线程一直等待 非阻塞:若读写未完成,调用读写的线程不用等待,可以处理其他工作 异步:读写过程完全托管给操作系统完成,操作系统原创 2021-09-29 17:09:38 · 717 阅读 · 0 评论 -
服务端的网络并发,详细解读网络io与线程进程的关系
服务端的网络并发,详细解读网络io与线程进程的关系丨后端开发丨C/C++Linux服务器开发丨网络编程丨epoll的实现丨网络编程视频讲解如下,点击观看:服务端的网络并发,详细解读网络io与线程进程的关系丨后端开发丨C/C++Linux服务器开发丨网络编程丨epoll的实现|网络协议栈丨tcp/ip|ntycoC/C++Linux服务器开发高级架构师知识点精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,L原创 2021-06-28 15:39:17 · 252 阅读 · 0 评论 -
后端开发程序员须彻底搞懂的 IO 底层原理
一、混乱的 IO 概念IO是Input和Output的缩写,即输入和输出。广义上的围绕计算机的输入输出有很多:鼠标、键盘、扫描仪等等。而我们今天要探讨的是在计算机里面,主要是作用在内存、网卡、硬盘等硬件设备上的输入输出操作。谈起IO的模型,大多数人脑子里肯定是一坨混乱的概念,“阻塞”、“非阻塞”,“同步”、“异步”有什么区别?很多同学傻傻分不清,有尝试去搜索相关资料去探究真相,结果又被淹没在茫茫的概念之中。这里尝试简单地去解释下为啥会出现这种现象,其中一个很重要的原因就是大家看到的资料对概念的解原创 2021-06-04 20:34:58 · 457 阅读 · 0 评论 -
Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了?
Redis是目前广为人知的一个内存数据库,在各个场景中都有着非常丰富的应用,前段时间Redis推出了6.0的版本,在新版本中采用了多线程模型。因为我们公司使用的内存数据库是自研的,按理说我对Redis的关注其实并不算多,但是因为Redis用的比较广泛,所以我需要了解一下这样方便我进行面试。总不能候选人用过Redis,但是我非要问人家阿里的Tair是怎么回事吧。所以,在Redis 6.0 推出之后,我想去了解下为什么采用多线程,现在采用的多线程和以前版本有什么区别?为什么这么晚才使用多线程?R原创 2021-05-26 21:06:40 · 169 阅读 · 0 评论 -
五种网络IO模型详解
一 IO操作本质数据复制的过程中不会消耗CPU# 1 内存分为内核缓冲区和用户缓冲区# 2 用户的应用程序不能直接操作内核缓冲区,需要将数据从内核拷贝到用户才能使用# 3 而IO操作、网络请求加载到内存的数据一开始是放在内核缓冲区的文章相关视频讲解:C/C++ Linux服务器开发高级架构学习视频点击:C/C++Linux服务器开发高级架构/Linux后台架构师-学习视频90分钟搞定底层网络IO模型,必须要懂得10种模型epoll原理剖析以及reactor模型应用.原创 2021-05-25 17:31:01 · 349 阅读 · 0 评论 -
Redis为什么是单线程?高并发响应快?
文章相关视频讲解:网路io底层epoll,单线程redi,多线程memcached,多进程Nginxepoll的网络模型,从redis,memcached到nginx如何高效学习使用redis为什么 redis 单线程却能支撑高并发?纯内存操作核心是基于非阻塞的 IO多路复用机制 单线程反而避免了多线程的频繁上下文切换问题一、Redis的高并发和快速原因1.redis是基于内存的,内存的读写速度非常快(纯内存); 数据存在内存中,数据结构用HashMap.原创 2021-04-22 16:35:24 · 225 阅读 · 0 评论 -
【详解文件IO系列】讲讲 MQ 消息中间件 (Kafka,RocketMQ等)与 MMAP、PageCache 的故事
网络io相关视频讲解:网路io底层epoll网络编程相关视频讲解:详解网络编程相关的细节处理Linux服务器开发高级架构学习视频:C/C++Linux服务器开发/Linux后端开发架构师一般的IO调用首先来看一下一般的IO调用。在传统的文件IO操作中,我们都是调用操作系统提供的底层标准IO系统调用函数 read()、write() ,此时调用此函数的进程(在JAVA中即java进程)由当前的用户态切换到内核态,然后OS的内核代码负责将相应的文件数据读取到内核的IO缓冲区,然后再把数据从内核I原创 2021-04-16 16:10:58 · 333 阅读 · 0 评论 -
详解从网络IO到IO多路复用
一、前言这篇文章,会重点介绍linux的BIO、NIO和IO多路复用。二、Netcat软件的基本使用Netcat(简写nc)是一个强大的网络命令工具,能够在linux中执行与TCP、UDP相关的操作,例如端口扫描,端口重定向、端口监听甚至远程连接在这里,我们使用 nc 来模拟一台接收message的服务器,和一台发送message的客户端1、安装 nc 软件sudo yum install -y nc2、使用 nc 创建一台监听9999端口的服务器nc -l -p 999原创 2021-03-05 21:28:14 · 367 阅读 · 0 评论 -
服务器并发IO性能提升之路 — 从网络编程基础到epoll
从网络编程基本概念说起 我们常常使用HTTP协议来传输各种格式的数据,其实HTTP这个应用层协议的底层,是基于传输层TCP协议来实现的。TCP协议仅仅把这些数据当做一串无意义的数据流来看待。所以,我们可以说:客户端与服务器通过在建立的连接上发送字节流来进行通信。 这种C/S架构的通信机制,需要标识通信双方的网络地址和端口号信息。对于客户端来说,需要知道我的数据接收方位置,我们用网络地址和端口来唯一标识一个服务端实体;对于服务端来说,需要知道数据从哪里来,我们同样用网络地址和端口来唯...原创 2020-12-30 17:45:05 · 1337 阅读 · 4 评论 -
网络IO模型的介绍引出nginx的网络IO模型
1. 什么是IO? 简单来说就是输入输出2. 网络IO经历步骤用户在获取网络资源是在进入网卡,经过网络七层模型将请求交给nginx用户进程 用户进程无法直接获取磁盘上的资源,会将请求获取什么资源翻译并转发给内核,内核驱动磁盘寻道找到文件(最耗时间的环节) 文件同样也不能直接交给用户进程,首先磁盘将文件放至内核缓冲区,然后内核告知用户进程请求的资源结果已准备好(耗时比较短) 内核缓冲区将文件拷贝一份至用户进程缓冲区,用户进程拿到文件 构建响应报文,通过http回传给用户总结:.原创 2020-12-26 16:48:47 · 260 阅读 · 2 评论 -
使用异步 I/O 大大提高应用程序的性能
AIO 简介Linux 异步 I/O 是 Linux 内核中提供的一个相当新的增强。它是 2.6 版本内核的一个标准特性,但是我们在 2.4 版本内核的补丁中也可以找到它。AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成的通知时,进程就可以检索 I/O 操作的结果。I/O 模型在深入介绍 AIO API 之前,让我们先来探索一下 Linux 上可以使用的不同 I/O 模型。这并不是一个详尽的介绍,但是我们将试图介绍最常用的一些原创 2020-12-24 16:45:20 · 375 阅读 · 2 评论 -
epoll的具体实现与epoll线程安全,互斥锁,自旋锁,CAS,原子操作
互斥锁,自旋锁,原子操作,CAS1.互斥锁的原理2.自旋锁的使用场景3.三种操作的使用场景与区别【技术分享篇】epoll的具体实现与epoll线程安全,互斥锁,自旋锁,CAS,原子操作更多Linux服务器开发高阶完整视频分享,点击链接即可观看:https://ke.qq.com/course/417774?flowToken=1013189内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Do...原创 2020-11-28 15:09:15 · 360 阅读 · 0 评论 -
Netty框架-IO模型(Linux五大网络IO模型)
一、 IO读写的基础原理:read、write1、编程模型一致性以及底层系统调用的理解(缓冲区与直接调用):1.1、无论是Socket的读写还是文件的读写,在Java层面的应用开发或者是linux系统底层开发,都属于输入input和输出output的处理,简称为IO读写。在原理上和处理流程上,都是一致的。区别在于参数的不同。1.2、用户程序进行IO的读写,基本上会用到read&write两大系统调用。可能不同操作系统,名称不完全一样,但是功能是一样的。1.3、read系统调用,...原创 2020-11-13 15:34:06 · 399 阅读 · 0 评论 -
网络IO模型的介绍引出nginx的网络IO模型
1. 什么是IO?简单来说就是输入输出2. 网络IO经历步骤 用户在获取网络资源是在进入网卡,经过网络七层模型将请求交给nginx用户进程 用户进程无法直接获取磁盘上的资源,会将请求获取什么资源翻译并转发给内核,内核驱动磁盘寻道找到文件(最耗时间的环节) 文件同样也不能直接交给用户进程,首先磁盘将文件放至内核缓冲区,然后内核告知用户进程请求的资源结果已准备好(耗时比较短) 内核缓冲区将文件拷贝一份至用户进程缓冲区,用户进程拿到文件 构建响应报文,通过ht...原创 2020-11-10 15:13:55 · 205 阅读 · 0 评论