多路复用

day34-2 多路复用之epoll

。_饼干妹妹 提交于 2020-01-19 07:54:28
epoll select存在的问题 select,需要遍历socket列表,频繁的对等待队列进行添加移除操作 数据到达后还需要遍历所有的socket才能获知哪些socket有数据 两个操作消耗的时间随着要监控的socket的数量增加而大大增加,所以最大只能监视1024个socket。 于是就推出了epoll,epoll对问题一方案是把等待队列的维护与阻塞进程这两个操作分开了 对问题2是自己维护了一个等待队列,避免了遍历所有的socket。需要注意:epoll仅能在linux中使用 epoll相关函数 import select # 导入select模块 epoll = select.epoll() # 创建一个epoll对象 epoll.register(文件句柄,事件类型) # 注册要监视的文件句柄和事件 # 事件类型: select.EPOLLIN # 可读事件 select.EPOLLOUT # 可写事件 select.EPOLLERR # 错误事件 select.EPOLLHUP # 客户端断开事件 epoll.unregister(文件句柄) # 销毁文件句柄 epoll.poll(timeout) # 当文件句柄发生变化,则会以列表的形式主动报告给用户进程,timeout为超时时间,默认为-1,即一直等待直到文件句柄发生变化,如果指定为1

计网期末复习(名词解释)

佐手、 提交于 2020-01-18 09:34:26
名词解释背诵 一、物理层 多路复用 FDM TDM CDMA PCM 二、数据链路层 奇偶校验码 海明距离 纠错码 检错码 校验码位数(开环、闭环) 成帧 CRC 三、MAC子层 CSMA/CD 隐藏终端问题和暴露终端 四、网络层 网络地址转换协议(NAT) 拥塞控制 地址解析协议(ARP) MTU 广播、多播 子网掩码 CIDR 五、 传输层 六、其他 网络协议(Protocol) 网关 一、物理层 多路复用 物理信道被多个信号所共享,这种共享形式被称为多路复用技术。常用的多路复用技术有时分复用、频分复用、码分复用。 FDM FDM是 频分多路复用 ,在物理信道的可用带宽超过单个原始信号所需带宽的情况下,可将该物理信道的 总带宽分割 为若干个与传输单个信号带宽相同(或略宽)的子信道,每个子信道传输一路信号。 TDM TDM是 时分多路复用 ,在这种方式下,每个用户轮流地在一个非常短的时间内占用整个带宽,以循环的方式轮流工作。 CDMA PCM PCM(Pulse Code Modulation)是脉冲编码调制技术,是一种将模拟信号数字化的技术,将连续变化的模拟信号进行抽样、量化和编码产生数字信号。 二、数据链路层 奇偶校验码 奇偶校验码是数据链路层中差错处理机制中的一种检错码,通过增加1位冗余位使得码字中“1”的个数恒为奇数或偶数的编码方法。 海明距离

网络I/O模型--5种常见的网络I/O模型

爱⌒轻易说出口 提交于 2020-01-17 06:51:34
阻塞与非阻塞   阻塞就是卡在那儿什么也不做,双方之间也没有信息沟通。   非阻塞就是即使对方不能马上完成请求,双方之间也有信息的沟通。 同步与异步   同步就是一件事件只由一个过程处理完成,不论阻塞与非阻塞,最后完成这个事情的都是同一个过程   异步就是一件事由两个过程完成,前面一个过程通知,后面一个过程接受返回的结果。 异步和事件驱动(multi IO)   异步是指数据准备好并且已经拷贝到用户空间,在通知用户来取数据 事件驱动理解为准备好数据了但是没有拷贝到用户空间,这个时候去通知用户,用户再去取数据,经过拷贝过程取得数据。 5种常见的网络I/O模型 blocking I/O -- 阻塞类型的I/O nonblocking I/O -- 非阻塞类型的I/O I/O Multiplexing -- 多路复用型I/O  Signal-Driven I/O -- 信号驱动型I/O Asynchronous I/O -- 异步I/O       1. blocking I/O -- 阻塞类型的I/O   流程图如下:        linux下socket默认是阻塞的,阻塞模式在准备数据和拷贝数据两个过程都是阻塞的,在这期间客户端一直卡着,双方也没有数据交流。 2.nonblocking I/O -- 非阻塞类型的I/O   流程图:       

《【面试突击】— Redis篇》-- Redis的线程模型了解吗?为啥单线程效率还这么高?

老子叫甜甜 提交于 2020-01-17 02:23:15
1、面试题 Redis和Memcached有什么区别? Redis的线程模型是什么? 为什么Redis是单线程的但是还可以支撑高并发? 2、面试官心理分析 问这个的时候就是问你Redis的原理了,看你是不是思考过,研究过。Redis最基本的一个内部原理和特点,就是Redis实际上是个单线程工作模型。你要是连这个都不知道,那后面在使用Redis的时候,如果出了问题岂不是什么都不知道,无从下手? 还有可能面试官会问问你Redis和Memcached的区别。不过说实话,近几年,面试官都不太喜欢这么问了。因为memcached是早些年各大互联网公司常用的缓存方案,但是现在近几年基本都是Redis,没什么公司用memcached了。 3、温馨提醒 如果你要是现在还不知道redis和memcached是啥,那你赶紧百度一下redis入门和memcahced入门,找两篇博客教程什么的简单启动一下,然后试一下几个简单操作,先感受一下,跟这个博客跟着教程做个demo程序,1小时以内就搞定了,就能初步了解和入门了。然后接着回来继续看。 另外一个友情提示,要弄明白redis的线程模型的话,前提是你需要了解socket网络相关的基本知识。如果你socket都不了解的话那我觉得你java没学好吧。初学者都该学习java的socket网络通信相关知识的。 4、面试题剖析 (1

计算机网络随堂小测试试题及答案(最新)

眉间皱痕 提交于 2020-01-14 02:10:49
计算机网络试题及答案 计算机网络试题及答案 二、选择题 三、名词解释题 三、简答题 答案: 一、填空 二、选择 三、名词解释 上一版本地址https://blog.csdn.net/CSDNWuZhiChun/article/details/103455968 计算机网络试题及答案 1、在计算机网络的定义中,一个计算机网络包含多台具有____ 自主 _ ____ 功能的计算机;把众多计算机有机连接起来要遵循规定的约定和规则,即_ 通信协议 _____ ; 计算机网络的最基本特征是 _ 资源共享 _______。 2、常见的计算机网络拓扑结构有:_ 总线型结构 ____ 、 ___ 星型结构 _______ 、 ____ 环型结构 ____ 和 _ 、 _ __ _ 树型结构和混合型结构 _ _ _ 。 3、常用的传输介质有两类:有线和无线。有线介质有____ 双绞线 __ 、 同轴电缆 ___、 ____ 光纤 ____。 4、网络按覆盖的范围可分为广域网、_ 局域网 、___ 城域网 __。 5、TCP/IP协议参考模型共分了_ 4 _ 层,其中3、4层是 传输层 、 运用层 _。 6、电子邮件系统提供的是一种__ 存储转发式 ____ 服务,WWW服务模式为__ B/S ____。 7、B类IP地址的范围是____ 128.0.0.0----191.255.255.255 __

物理层

时光总嘲笑我的痴心妄想 提交于 2020-01-10 15:15:09
1 what:提供透明的比特流传输。 透明传输的含义:不关系比特流里携带的信息是什么,只关心比特流的正确搬运。 信号在信道上传输会发生衰减和变形。 奈奎斯特定理( 理想信道 ):当物理带宽为BHz,信号离散等级为V级,该信道能提供的最大传输速率(数字带宽)为2BlogV。 推论:任何一个信号通过一个物理带宽为B的低通滤波器只要进行每秒2B次的采样就可完全重构出被滤掉的信号,任何高于2B次的采样都毫无意义。 香农定理( 有噪声信道 ):当物理带宽为BHz,信噪比为S/N(分贝值=10log(S/N),以10为底),那么最大的传输速率(数字带宽)为Blog(1+S/N)。 奈奎斯特定义和香农定义都描述了数字带宽和物理带宽之间的关系。 2 物理层的设备:收发器、中继器、集线器 中继器功能:再生信号(去噪、放大),不能过滤 集线器:多端口的中继器,去噪和放大,不能过滤,广播(泛洪) 3 复用技术:多个用户公用一个信道 频分多路复用: 正交平分多路复用: 波分多路复用: 时分多路复用:时间片 统计时分多路复用 码分多路复用(CDMA):提取出需要的信号 4 公共交换电话网络(PSTN) 主要构成:本地回路、干线、交换局 调制解调:数字信号和模拟信号的转换 来源: CSDN 作者: cxycxycxyfighting 链接: https://blog.csdn.net/weixin

Redis 单线程却能支撑高并发 - 简书 https://www.jianshu.com/p/2d293482f272

时间秒杀一切 提交于 2020-01-09 18:14:33
小结: 1、 在 I/O 多路复用模型中,最重要的函数调用就是 select,该方法的能够同时监控多个文件描述符的可读可写情况; 2、 Redis 服务采用 Reactor 的方式来实现文件事件处理器(每一个网络连接其实都对应一个文件描述符); 3、 虽然整个文件事件处理器是在单线程上运行的,但是通过 I/O 多路复用模块的引入,实现了同时对多个 FD 读写的监控,提高了网络通信模型的性能,同时也可以保证整个 Redis 服务实现的简单 4、 Redis 会优先选择时间复杂度为 O(1) 的 I/O 多路复用函数作为底层实现,包括 Solaries 10 中的 evport、Linux 中的 epoll 和 macOS/FreeBSD 中的 kqueue,上述的这些函数都使用了内核内部的结构,并且能够服务几十万的文件描述符。 但是如果当前编译环境没有上述函数,就会选择 select 作为备选方案,由于其在使用时会扫描全部监听的描述符,所以其时间复杂度较差 O(n),并且只能同时服务 1024 个文件描述符,所以一般并不会以 select 作为第一方案使用。 https://mp.weixin.qq.com/s/ySG2Qtitr6b8Zcb-SAMnGQ Redis 和 I/O 多路复用 https://draveness.me/redis-io-multiplexing

GRPC连接池的设计与实现

混江龙づ霸主 提交于 2019-12-30 16:20:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 在分布式高并发服务器中,client到server以及server中的多个节点之间的连接往往使用连接池来管理。简单来说就是将提前创建好的连接保存在池中,当有请求到来时,直接使用连接池中的连接对server端访问,省去了创建连接和销毁连接的开销(TCP建立连接时的三次握手和释放连接时的四次挥手),从而提高了性能。 目录 设计原则 基本原理 GRPC特性 GRPC调优 实现细则 延伸阅读 <a name="chapter1"></a>设计原则 连接池的扩缩容 空闲连接的超时与保活 池满的处理机制 连接池的扩缩容 通常连接池属性包含最大空闲连接数和最大活跃连接数。 最大空闲连接数 :连接池一直保持的连接数,无论这些连接被使用与否都会被保持。如果客户端对连接池的使用量不大,便会造成服务端连接资源的浪费。 最大活跃连接数 :连接池最多保持的连接数,如果客户端请求超过次数,便要根据 池满的处理机制 来处理没有得到连接的请求。 扩容 :当请求到来时,如果连接池中没有空闲的连接,同时连接数也没有达到最大活跃连接数,便会按照特定的增长策略创建新的连接服务该请求,同时用完之后归还到池中,而不是关闭连接。 缩容 :当连接池一段时间没有被使用,同时池中的连接数超过了最大空闲连接数,那么便会关闭一部分连接

【转载】HTTP1.0、HTTP1.1和HTTP2.0的区别

痞子三分冷 提交于 2019-12-24 07:19:16
一、HTTP的历史 早在HTTP建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的web服务器上,用户端通过浏览器访问url地址来获取网页的显示内容,但是到了WEB2.0以来,我们的页面变得复杂,不仅仅单纯的是一些简单的文字和图片,同时我们的HTML页面有了CSS,Javascript,来丰富我们的页面展示,当ajax的出现,我们又多了一种向服务器端获取数据的方法,这些其实都是基于HTTP协议的。同样到了移动互联网时代,我们页面可以跑在手机端浏览器里面,但是和PC相比,手机端的网络情况更加复杂,这使得我们开始了不得不对HTTP进行深入理解并不断优化过程中。 二、HTTP的基本优化 影响一个HTTP网络请求的因素主要有两个: 带宽 和 延迟 。 带宽 如果说我们还停留在拨号上网的阶段,带宽可能会成为一个比较严重影响请求的问题,但是现在网络基础建设已经使得带宽得到极大的提升,我们不再会担心由带宽而影响网速,那么就只剩下延迟了。 延迟 浏览器阻塞(HOL blocking):浏览器会因为一些原因阻塞请求。浏览器对于同一个域名,同时只能有 4 个连接(这个根据浏览器内核不同可能会有所差异),超过浏览器最大连接数限制,后续请求就会被阻塞。 DNS 查询(DNS Lookup)