linux高性能服务器读书笔记之服务器模型
admin
2023-03-13 20:41:10
0次
1.模型一:C/S(经典的)
起因:TCP/IP协议是没有客户和服务端的区别。但是资源(视频,新闻,软件)都是被数据提供者所垄断
逻辑:服务器启动后,首先创建一个或多个监听socket,并且调用bind函数将其绑定到需要(自定义)的端口,然后调用listen函数等待客户连接
特点:客户连接是随机事件,需要某种I/O模型来监听连接。
例子:服务器I/O复用技术之一的select系统调用
(当监听接收到连接 ,服务器用accept来接收,并且分配一个逻辑单元为它服务,(fork系统产生逻辑单元,逻辑单元处理好一切返回给客户端,逻辑单元可以是新创建的子进程,子线程或其他)))

2.接下来就是宅男熟悉的P2P模型

优势:就是去掉通信的中心
特点;就是每台机器在消耗服务的时候也会给别人提供服务
例子:迅雷,云计算机群
问题:主机相互之间很难发现(发现服务器来解决这个问题)
但是本质还是CS,只是一个变相的扩展

I/O处理单元--------》逻辑单元---------》网络存储单元 
中间都是由请求队列(通信方式,一般是永久的tCP连接)
2.1I/O处理单元:管理客户连接的模块,等待并且接受新的连接,接受客户的数据,将服务器的相应的数据返回客户端。数据的收发不一定在这里,也可能在逻辑单元,(取决于事件处理模式)

2.2逻辑单元:分析并且处理数据,然后将结果传递给I/O处理单元或者直接发送给客户端(对于机器群来说,一个逻辑单元也许就是一台逻辑服务器)
2.3.网络储存:可以是数据库,缓存和文件,或者一台服务器(有些是不需要的,如ssh,telnet)
2.4.请求队列:各个单元之间通讯方式的抽象
两个方面:I/O处理单元通知逻辑单元的方式,逻辑单元访问存储单元的机制
这里就会涉及到池的概念,这个TCP理解一般是事先建立好的永久高效的TCP连接

3.I/O模型
3.1阻塞和非阻塞可以用于所有的文件描述符,不仅仅是socket,
3.2阻塞是可能是无法立即完成而被操作系统挂起,知道等待完成事件发生。
3.3非阻塞是系统的调用总是立即返回。,所以如果完成世家没有发生,就会返回和错误一样的标记。(errno可以区分)
要求:我们需要在完成世家发生的情况下,操作非阻塞,才能实现高效率。
例子:I/O复用(最常用的通知机制,还有SIGIO信号)
含义:有个函数叫I/O复用函数,他可以向内核注册一组事件,内核可以将已经完成的事件通知给应用程序。
例子:I/O复用函数:select,poll,epoll_wait
原理:本身每个函数都是阻塞的,但是他们都具有监听多个I/O事件 的能力
备注:SIGIO的信号处理以后再说
备注2:上述的阻塞I/O,I/O复用和信号驱动I/O都是同步I/O模型。
原理:I/O读写操作都是在I/O事件发生之后
异步I/O:(POSIX规范)用户可以直接对I/O进行读写操作,这些操作会告诉用户读写缓冲区的位置,以及操作完成后内核通知应用程序的方式

二者核心区别:同步是用户自己处理I/O操作,异步I.O是内核执行I/O操作。
区别2:同步向应用程序通知二是I/O就绪事件,异步是I/O完成事件。

linux下,aio.h 提供了对异步I/O的支持

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...