linux高性能服务器读书笔记之服务器模型

简介:
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的支持

本文转自 jackdongting 51CTO博客,原文链接:http://blog.51cto.com/10725691/2069312


相关文章
|
13天前
|
缓存 安全 Linux
Linux 五种IO模型
Linux 五种IO模型
|
18天前
|
安全 Linux 调度
在Linux中,如何实现,每星期天早8点服务器定时重启?
在Linux中,如何实现,每星期天早8点服务器定时重启?
|
18天前
|
网络协议 Linux Docker
在Linux中,如何指定dns服务器,来解析某个域名?
在Linux中,如何指定dns服务器,来解析某个域名?
|
13天前
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
20 1
Linux 服务器下载百度网盘文件
|
5天前
|
存储 安全 Linux
离线Linux服务器环境搭建
【9月更文挑战第3天】在离线环境下搭建Linux服务器需按以下步骤进行:首先确定服务器用途及需求,准备安装介质与所需软件包;接着安装Linux系统并配置网络;然后设置系统基础参数,如主机名与时区;安装必要软件并配置服务;最后进行安全设置,包括关闭非必要服务、配置防火墙、强化用户认证及定期备份数据。整个过程需确保软件包的完整性和兼容性。
|
7天前
|
存储 监控 Linux
监控Linux服务器
详细介绍了如何监控Linux服务器,包括监控CPU、内存、磁盘存储和带宽的使用情况,以及使用各种系统监控工具如vmstat、iostat、sar、top和dstat来分析系统性能,并推荐了一些开源监控系统。
18 0
监控Linux服务器
|
13天前
|
Shell Linux Perl
linux服务器自动生成本地快照
【8月更文挑战第28天】本文介绍了在Linux服务器上通过两种常见方式创建本地快照的方法:Btrfs文件系统与LVM。Btrfs原生支持快照功能,操作简单快捷;LVM则提供了灵活的逻辑卷管理,可在不影响原始数据的情况下创建快照。文章详细列出了创建、查看、挂载及清理快照的具体步骤,并提供了一个自动化的Shell脚本示例,便于用户根据需求定期创建快照并清理过期快照。
17 3
|
18天前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
18天前
|
负载均衡 网络协议 Linux
在Linux中,常用WEB服务器负载架构有哪些?
在Linux中,常用WEB服务器负载架构有哪些?
|
18天前
|
网络协议 Linux 数据安全/隐私保护
在Linux中,TCP/IP 的七层模型有哪些?
在Linux中,TCP/IP 的七层模型有哪些?
下一篇
DDNS