【Linux】Linux小结

news2024/12/24 3:46:06

LVS、Nginx、HAproxy的区别

LVS、Nginx和HAproxy都是常见的负载均衡器,用于将网络负载分散到多个服务器上,以提高系统的可用性和性能

功能不同:
LVS是一个Linux内核模块,在网络层(第四层)运行的。
Nginx和HAproxy则是运行在应用层(第七层)的反向代理服务器,可以实现更精细的负载均衡和流量控制。

支持的协议不同:
LVS支持的协议更多,包括TCP、UDP、FTP等。
Nginx和HAproxy主要支持HTTP和HTTPS协议。

性能不同:
LVS的性能较高,但配置和管理相对复杂。
Nginx和HAproxy的性能也很不错,而且配置和管理比较简单。

高可用性:
LVS可以使用VRRP来实现高可用性,在负载均衡器的背后有多个备用服务器。
Nginx和HAproxy需要配合使用第三方工具来实现高可用性,如Keepalived。

应用场景不同:
LVS适用于高并发、高吞吐量的场景,比如Web服务器。
Nginx和HAproxy适用于处理HTTP流量,并可以进行更细粒度的控制,比如根据URL进行请求分发、负载均衡和流量控制等。

健康检测
lvs没有后端服务器健康性检测,nginx和haproxy有后端服务器健康性检测

选择LVS还是Nginx或HAproxy主要取决于具体的业务需求和系统的规模。
较大规模的系统可以使用LVS,较小规模的系统可以考虑使用Nginx或HAproxy。
调度算法的区别
nginxhaproxylvs

http协议的报文

  1. 请求报文:
    • 请求行:包含请求方法(GET、POST、PUT等)和请求的URI(Uniform Resource Identifier)。
    • 请求头(Headers):包含了请求相关的一些信息,比如请求的主机地址、用户代理、Accept语义等。
    • 请求体(Body):可选的,一般用于传递POST请求的参数和数据。
  2. 响应报文:
    • 状态行:包含了响应的状态码(HTTP状态码)和原因短语。
    • 响应头(Headers):包含了响应相关的一些信息,比如服务器类型、响应时间等。
    • 响应体(Body):用于传输响应的具体内容,比如HTML页面、JSON数据等。

HTTP协议的七个过程

请求连接——建立连接——处理请求——访问资源——构建响应报文——发送响应报文——记录日志

dns解析——三次握手——七个过程——四次挥手

PV和UV

PV(Page View)是页面浏览量的缩写,表示用户在某个网站或者某个页面上的访问次数。

UV(Unique Visitor)是独立访客的缩写,表示一定时间内访问某个网站或页面的独立用户数量。

        PV反映了页面的热度和用户行为,UV反映了网站或者页面的受众规模,通常结合PV和UV来综合评估网站或者页面的流量和用户活跃度

http协议的版本区别

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,常用于在Web浏览器和Web服务器之间进行通信

HTTP/0.9:是最早的HTTP协议版本,只支持GET(下载)请求,没有使用Header和状态码。

HTTP/1.0:在HTTP/0.9的基础上添加了支持POST(上传)请求、Header字段、状态码以及多种文件类型的传输。

HTTP/1.1:在HTTP/1.0的基础上进行了改进,加入了持久连接、管道化、HOST字段、缓存机制、断点续传、PUT和DELETE请求方法等新特性。

HTTP/2:是HTTP/1.1的继任者,引入了二进制传输、多路复用、头部压缩、服务器推送等特性,以提高性能和效率。

HTTP/3:是基于UDP协议的新一代HTTP协议,由于使用的传输层协议变为了QUIC(Quick UDP Internet Connections),支持无连接、低延迟和抗丢包等特性。

PUT和Post
如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的。也就是说:

PUT请求:如果两个请求相同,后一个请求会把第一个请求覆盖掉。(所以PUT用来改资源)
Post请求:后一个请求不会把第一个请求覆盖掉。(所以Post用来增资源)

HTTP状态码

1xx(信息状态码):表示请求已接收,正在继续处理
100 Continue:继续。指示客户端可以继续发送请求
101 Switching Protocols:协议切换。服务器要求客户端切换协议

2xx(成功状态码):表示请求成功被服务器接收、理解和处理
200 OK:请求成功。服务器已成功处理请求
201 Created:已创建。请求已成功并创建了新的资源
202 Accepted:已接受。请求已接受但未完成处理
204 No Content:无内容。服务器成功处理请求,但无返回内容

3xx(重定向状态码):表示需要客户端进一步进行操作才能完成请求
301 Moved Permanently:永久重定向。请求的资源已被永久移动到新URL
302 Found:临时重定向。请求的资源已被临时移动到新URL
307 Temporary Redirect:临时重定向。请求的资源临时移动到新URL

4xx(客户端错误状态码):表示客户端发送的请求有错误
400 Bad Request:错误请求。请求语法错误或无法被服务器理解
401 Unauthorized:未授权。需要身份验证
403 Forbidden:禁止访问。服务器拒绝请求
404 Not Found:未找到。服务器找不到请求的资源
409 Conflict:当请求与服务器的当前状态冲突时,将发送此响应

5xx(服务器错误状态码):表示服务器在处理请求时发生错误
500 Internal Server Error:服务器错误。服务器在处理请求时发生错误
502 Bad Gateway:错误的网关。服务器作为网关或代理,从上游服务器接收到无效的响应
503 Service Unavailable:服务不可用。服务器暂时过载或维护

MIME 类型

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的标准,用来表示文档、文件或字节流的性质和格式。

type/subtype
MIME 的组成结构非常简单,由类型与子类型两个字符串中间用 / 分隔而组成,不允许有空格。type 表示可以被分多个子类的独立类别,subtype 表示细分后的每个类型
常见的 MIME 类型
超文本标记语言文本 .html、.html:text/html
普通文本 .txt: text/plain
RTF 文本 .rtf: application/rtf

GIF 图形 .gif: image/gif
JPEG 图形 .jpeg、.jpg: image/jpeg

au 声音文件 .au: audio/basic
MIDI 音乐文件 mid、.midi: audio/midi、audio/x-midi
RealAudio 音乐文件 .ra、.ram: audio/x-pn-realaudio

MPEG 文件 .mpg、.mpeg: video/mpeg
AVI 文件 .avi: video/x-msvideo
GZIP 文件 .gz: application/x-gzip
TAR 文件 .tar: application/x-tar

apache的工作模式

perfork
prefork模式(默认模式)要求稳定的时候使用
开启子进程,接待http请求(访问的人不多选)
worker
worker模式 访问量多的时候使用
子进程开启线程
event
event模式为了解决keep-alive保持长连接出现的一种工作模式;用来释放keep-alive类型的线程

event模式是不支持用在https上
会话保持

压测工具ab

ab命令是Apache Bench的缩写。

ab命令是Apache自带的压力测试工具。

ab命令非常的实用,因为是基于URL地址测试的,所以它不仅可以对Apache服务器进行压力测试,也可以对Nginx、Tomcat、IIS等WEB服务器进行压力测试

ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。所以测试时需要注意,别上太多负载导致死机

nginx

select、poll和epoll的区别

select

select 的核心功能是调用tcp文件系统的poll函数,不停的查询,如果没有想要的数据,主动执行一次调度(防止一直占用cpu),直到有一个连接有想要的消息为止。从这里可以看出select的执行方式基本就是不停的调用poll,直到有需要的消息为止。

缺点:
1、每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大;
2、同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大;
3、select支持的文件描述符数量太小了,默认是1024。

优点:
1、select的可移植性更好,在某些Unix系统上不支持poll()。
2、select对于超时值提供了更好的精度:微秒,而poll是毫秒
poll

poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态,如果设备就绪则在设备等待队列中加入一项并继续遍历,如果遍历完所有fd后没有发现就绪设备,则挂起当前进程,直到设备就绪或者主动超时,被唤醒后它又要再次遍历fd。这个过程经历了多次无谓的遍历。poll还有一个特点是“水平触发”,如果报告了fd后,没有被处理,那么下次poll时会再次报告该fd

缺点:
1、大量的fd的数组被整体复制于用户态和内核地址空间之间,而不管这样的复制是不是有意义;
2、与select一样,poll返回后,需要轮询pollfd来获取就绪的描述符。

优点:
1、poll() 不要求开发者计算最大文件描述符加一的大小。
2、poll() 在应付大数目的文件描述符的时候速度更快,相比于select。
3、它没有最大连接数的限制,原因是它是基于链表来存储的。
epoll

epoll同样只告知那些就绪的文件描述符,而且当我们调用epoll_wait()获得就绪文件描述符时, 返回的不是实际的描述符,而是一个代表就绪描述符数量的值,你只需要去epoll指定的一 个数组中依次取得相应数量的文件描述符即可,这里也使用了内存映射技术,这 样便彻底省掉了这些文件描述符在系统调用时复制的开销。

epoll的优点就是改进了前面所说缺点:

1、支持一个进程打开大数目的socket描述符:相比select,epoll则没有对FD的限制,它所支持的FD上限是最大可以打开文件的数目,这个数字一般远大于2048,举个例子,在1GB内存的机器上大约是10万左右,具体数目可以cat /proc/sys/fs/file-max察看,一般来说这个数目和系统内存关系很大。

2、IO效率不随FD数目增加而线性下降:epoll不存在这个问题,它只会对"活跃"的socket进行操作— 这是因为在内核实现中epoll是根据每个fd上面的callback函数实现的。那么,只有"活跃"的socket才会主动的去调用 callback函数,其他idle状态socket则不会,在这点上,epoll实现了一个"伪"AIO,因为这时候推动力在os内核。在一些 benchmark中,如果所有的socket基本上都是活跃的—比如一个高速LAN环境,epoll并不比select/poll有什么效率,相 反,如果过多使用epoll_ctl,效率相比还有稍微的下降。但是一旦使用idle connections模拟WAN环境,epoll的效率就远在select/poll之上了。

3、使用mmap加速内核与用户空间的消息传递:这点实际上涉及到epoll的具体实现了。无论是select,poll还是epoll都需要内核把FD消息通知给用户空间,如何避免不必要的内存拷贝就 很重要,在这点上,epoll是通过内核于用户空间mmap同一块内存实现的
三者对比与区别:

1、select,poll实现需要自己不断轮询所有fd集合,直到设备就绪,期间可能要睡眠和唤醒多次交替。而epoll其实也需要调用epoll_wait不断轮询就绪链表,期间也可能多次睡眠和唤醒交替,但是它是设备就绪时,调用回调函数,把就绪fd放入就绪链表中,并唤醒在epoll_wait中进入睡眠的进程。虽然都要睡眠和交替,但是select和poll在“醒着”的时候要遍历整个fd集合,而epoll在“醒着”的时候只要判断一下就绪链表是否为空就行了,这节省了大量的CPU时间。这就是回调机制带来的性能提升。

2、select,poll每次调用都要把fd集合从用户态往内核态拷贝一次,并且要把current往设备等待队列中挂一次,而epoll只要一次拷贝,而且把current往等待队列上挂也只挂一次(在epoll_wait的开始,注意这里的等待队列并不是设备等待队列,只是一个epoll内部定义的等待队列)。这也能节省不少的开销。

阻塞和非阻塞

零拷贝技术

nginx模块

nginx编译安装脚本

分割日志

新生成的日志是不生效的,需要发送一个信号

server块构建虚拟主机

location语法规则优先级

动静分离

反向代理

重写功能

负载均衡

代理缓存

二叉树⭐

jvm

jre

jdk

tomcat 结合 nginx 实现动静分离(很重要★)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1512687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java错误:微服务报错Cannot execute request on any known serve

🐔问题内容 报Cannot execute request on any known server 这个错:连接Eureka服务端地址不对。 🐔解决方式 检查.yml文件或者.properties文件配置 下划线下划线后面的小写字母等同于去掉下划线大写下划线后面的字母(驼峰原则&am…

一道题学会如何使用哈希表

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入:nums [1,2,3], …

【任务计划程序】打卡签到(自用)

文章目录 前言效果如下: 任务计划程序其他签到代码(更新如下) 前言 【github actionpython】完成定时任务并推送(学会自制)(这里的github上这个glados签到不能用了,glados上的部分功能也变了&a…

学完Efficient c++ (39-40)

条款39:明智而审慎地使用private继承 private继承的特点: 如果类之间是private继承关系,那么编译器不会自动将一个派生类对象转换为一个基类对象。由private继承来的所有成员,在派生类中都会变为private属性,换句话说…

大白话ChatGPT技术

▼最近直播超级多,预约保你有收获 今晚直播:《ChatGPT架构设计与应用案例实践》 —1— ChatGPT 架构设计剖析 ChatGPT 总体架构由三大部分构成:预训练(Pre-training)架构、微调(Fine-tuning)架…

sqllab第五关通关笔记

知识点: 报错注入函数语法(详见第二关笔记)报错注入打印位数最多32位对于大于32位的数据最好使用截取函数进行控制;以保证输出完整mysql表中的重点数据库 information_schema (mysql 5.0以上) schemata …

揭秘 Kubernetes Secret:安全存储敏感信息的秘密武器

Kubernetes Secret Secret 是 Kubernetes 中用于存储敏感信息的资源,例如密码、API 密钥和 SSH 密钥。Secret 可以被 Pod 和其他 Kubernetes 资源使用,而无需将敏感信息暴露在配置文件或环境变量中。 1. Secret 类型 Kubernetes 支持多种类型的 Secre…

智能家居涉及到的12个物联网传感器!

智能家居领域涉及到的物联网传感器种类繁多,下面列举一些常见的物联网传感器: 温度传感器:用于检测室内温度,可以实现智能温控和节能控制。湿度传感器:用于检测室内湿度,可以实现智能湿度控制和防潮功能。…

Python Excel 文本编辑库之xlsxwriter使用详解

概要 在现代数据处理和报表生成中,Excel 文件是一个非常常见的格式。Python XlsxWriter 库是一个强大的工具,可以帮助开发者轻松创建和编辑 Excel 文件,并且具有高度的灵活性和可定制性。本文将全面介绍 XlsxWriter 库的原理、功能、用法,并通过丰富的示例代码来展示其强大…

Linux 安装 Gitblit

1.下载Gitblit 官网地址:Gitblit,目前最新的是1.9.3 2.上传到服务器 ①在服务器上新建目录:/usr/local/gitblit ②将下载的文件上传到服务器:/usr/local/gitblit/gitblit-1.9.3.tar.gz ③解压文件: cd /usr/local…

如何考上东南大学计算机学院?

东南大学招生学院是计算机科学与工程学院、苏州联合研究生院,复试公平,不歧视双非考生,985院校中性价比较高,但近年热度在逐年上涨,需要警惕。 建议报考计算机科学与工程学院081200计算机科学与技术专业目标分数为380…

doris安装(docker方式)

背景 doris有两个进程 fe,处理用户请求,查询,元数据管理,节点管理be,数据存储,查询计划执行 架构图如下: 参考:https://doris.apache.org/zh-CN/docs/get-starting/what-is-apache-doris 1、定义docker-compose文件 version: 3 services:docker-fe:image: "apac…

1137. 第N个泰波那契数- 力扣

1. 题目 泰波那契序列 Tn 定义如下: T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 Tn Tn1 Tn2 给你整数 n,请返回第 n 个泰波那契数 Tn 的值。 2. 示例 3. 分析 1. 状态表示:dp[i]表示:第i个泰波那契数的值 2. 状态转移…

安装配置Redis

Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并…

【网络原理】TCP 协议中比较重要的一些特性(二)

目录 1、TCP 状态转换 1.1、三次握手状态 1.2、四次挥手状态 2、滑动窗口 3、流量控制 1、TCP 状态转换 TCP 状态和“线程状态”是类似的概念,用于描述 TCP 连接过程中正在执行什么操作。 TCP 服务器和客户端都有一定的数据结构来保存连接信息,而…

字节跳动后端工程师实习生笔试题-c++

字节跳动后端工程师实习生笔试题链接 笔试题 1. 最大映射2. 木棒拼图3. 魔法权值4. 或与加 1. 最大映射 有 n 个字符串,每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字,不同字符映射为不同的数字。这样每个字符串就可以看…

[WUSTCTF2020]朴实无华

查看robots.txt 找到/fAke_flagggg.php 显然这是个假的flag&#xff0c;但是我们在header处发现了fl4g.php 近来发现中文全部变成了乱码 插件转成utf8后正常显示 <?php header(Content-type:text/html;charsetutf-8); error_reporting(0); highlight_file(__file__);//leve…

LeetCode - 和为K的子数组

LCR 010. 和为 K 的子数组 看到这道题的时候&#xff0c;感觉还挺简单的&#xff0c;找到数组中和为k的连续子数组的个数&#xff0c;无非就是一个区间减去另一个区间的和等于k&#xff0c;然后想到了用前缀和来解决这道问题。再算连续子数组出现的个数的时候&#xff0c;可以使…

汽车大灯汽车尾灯破裂裂纹破损破洞掉角崩角等问题能修复吗?修复后灯罩颜色和之前相比有什么变化?

答案是肯定的&#xff0c;汽车大灯汽车尾灯破裂裂纹破损破洞掉角崩角等问题是可以修复的。 修复后的汽车灯罩颜色可能会与之前有所不同&#xff0c;这主要取决于修复的方法和使用的材料。 首先&#xff0c;如果修复过程中使用了喷漆翻新&#xff0c;那么灯罩的颜色可能会与原来…

学习笔记-华为IPD转型2020:1,IPD的重要意义

华为产品开发转型&#xff1a;IPD计划 大多数公司发现&#xff0c;当公司大幅增长时&#xff0c;在较小规模上有效的管理实践不再有效。产品开发过程也是如此。随着华为的发展&#xff0c;该公司遇到了产品故障率更高、开发周期更长和研发成本增加等问题。然后&#xff0c;它转…