【Linux】Linux小结

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:临时重定向。请求的资源临时移动到新URL4xx(客户端错误状态码):表示客户端发送的请求有错误
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/rtfGIF 图形 .gif: image/gif
JPEG 图形 .jpeg、.jpg: image/jpegau 声音文件 .au: audio/basic
MIDI 音乐文件 mid、.midi: audio/midi、audio/x-midi
RealAudio 音乐文件 .ra、.ram: audio/x-pn-realaudioMPEG 文件 .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.mzph.cn/news/741003.shtml

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

相关文章

基于springboot+vue实现药品信息管理系统项目【项目源码+论文说明】计算机毕业设计

基于springbootvue实现药品信息管理系统演示 摘要 本文介绍了一种基于SpringBoot的药品信息管理系统的设计与实现。该系统旨在提高药品管理的效率和准确性,包括药品信息的录入、修改、查询和删除、药品入库、出库等功能。该系统采用了SpringBoot框架、MySQL数据库、…

[GPU]2.编译.cu文件

在编译.cu文件的时候,需要先确定自己已经安装了CUDA,并将其配置到系统环境中。 当然这个的前提是——你的显卡得是nvida的,你才能安装这个工具 如果你完成了这些的话,编译.cu文件就比较容易了,比如这个文件&#xff…

金三银四,求职攻略:解锁面试密码,赢在职场起跑线

春风拂面,金三银四的求职季如期而至。 你是否已经准备好在这场求职大战中脱颖而出,斩获心仪的职位?是不是还在为如何准备一份吸引人的简历而犯愁?是不是担心自己在面试中紧张失言,错失良机?是不是对如何了…

从入门到入魔,100个Python实战项目练习(附答案)!

大家好,我是彭涛。 之前给大家整理的资料,都是理论性的,虽然每一个知识点都给出了对应的示例代码,但是好多人还是感觉有一点点杂乱,如果有系统的实战项目练习就好了。 所以,应大家的需求,我们为…

HarmonyOS应用开发-Stage模型开发概述

基本概念 UI框架 HarmonyOS提供了一套UI开发框架,即方舟开发框架(ArkUI框架)。提供了应用UI开发所必需的能力:多种组件、布局计算、动画能力、UI交互、绘制。 方舟开发框架针对开发者提供了两种开发范式: 基于ArkTS…

【yolov8和yolov5】用命令快速着手训练

文章目录 1.yolov81.1.创建conda环境1.2.下载代码和环境1.3.YOLOv8训练、自测和预测的代码及解释1.3.1. YOLOv8 训练代码:1.3.2.yolov8 自测代码:1.3.3.yolov8 推理代码:1.3.4.注意: 2.yolov52.1.创建conda环境2.2.下载代码和环境…

简单聊一聊项目中用反射来做过啥【Java基础题】

1.什么是反射机制 反射允许(在运行时动态地)对封装类的字段、方法、构造函数的信息进行编程访问 在我们的代码中,使用构造器直接生成对象、直接访问对象、对象的成员等方式,是清晰直观的。但在有些场景中,需要在运行时动态地操作这些成员&…

Cisco Packet Tracer模拟器实现路由器的路由配置及网络的安全配置

1. 内容 1. 配置路由器实现多个不同网络间的通信,路由器提供的路由协议包括静态路由协议、RIP动态路由、OSPF动态路由协议等等,训练内容包括路由器的静态路由配置、路由器的RIP动态路由配置、路由器的OSPF动态路由配置以及路由器的路由重分布配置。 2.…

LaneNet 论文阅读

论文链接 Towards End-to-End Lane Detection: an Instance Segmentation Approach 0. Abstract 在本文中,将车道检测问题转化为实例分割问题——其中每个车道形成自己的实例——可以进行端到端训练为了在拟合车道之前对分段车道实例进行参数化,应用基…

Seata源码流程图

1.第一阶段分支事务的注册 流程图地址:https://www.processon.com/view/link/6108de4be401fd6714ba761d 2.第一阶段开启全局事务 流程图地址:https://www.processon.com/view/link/6108de13e0b34d3e35b8e4ef 3.第二阶段全局事务的提交 流程图地址…

Kafka生产消费实战-JAVA

Kafka生产消费实战-JAVA 文章目录 Kafka生产消费实战-JAVA生产者代码消费者代码消费者代码扩展Consumer消费offset查询Consumer消费顺序Kafka的三种语义 生产者代码 public static void main(String[] args) {Properties prop new Properties();// 指定broker地址prop.put(&q…

Qt教程 — 1.1 Linux下安装Qt

目录 1 下载Qt 1.1 官方下载 1.2 百度网盘下载 1.3 Linux虚拟机终端下载 2 Qt安装 3 安装相关依赖 4 测试安装 1 下载Qt 1.1 官方下载 通过官网下载对应版本,本文选择的版本为qt-opensource-linux-x64-5.12.12,Qt官方下载链接:htt…

微信小程序(一)

WebView app.是全局配置&#xff0c;app.json是全局配置文件&#xff0c;在页面的.json配置文件中的配置会覆盖我们全局的配置 快捷键&#xff1a; .box 敲回车 ----- <view class"box"></view> .row*8 敲回车&#xff1a; .row{$}*8 敲回车 案例1&…

自然语言处理(NLP)—— 语义关系提取

语义关系是指名词或名词短语之间的联系。这些关系可以是表面形式&#xff08;名词性实体&#xff09;之间的联系&#xff0c;也可以是知识工程中概念之间的联系。在自然语言处理&#xff08;NLP&#xff09;和文本挖掘领域&#xff0c;识别和理解这些语义关系对于信息提取、知识…

力扣每日一题 在受污染的二叉树中查找元素 哈希 DFS 二进制

Problem: 1261. 在受污染的二叉树中查找元素 思路 &#x1f468;‍&#x1f3eb; 灵神题解 &#x1f496; 二进制 时间复杂度&#xff1a;初始化为 O ( 1 ) O(1) O(1)&#xff1b;find 为 O ( m i n ( h , l o g 2 t a r g e t ) O(min(h,log_2target) O(min(h,log2​targ…

数字孪生与智慧城市:实现城市治理现代化的新路径

随着信息技术的迅猛发展&#xff0c;智慧城市已成为城市发展的必然趋势。数字孪生技术作为智慧城市建设的重要支撑&#xff0c;以其独特的优势为城市治理现代化提供了新的路径。本文将探讨数字孪生技术在智慧城市中的应用&#xff0c;以及如何实现城市治理的现代化。 一、数字…

Python 导入Excel三维坐标数据 生成三维曲面地形图(体) 5-3、线条平滑曲面且可通过面观察柱体变化(三)

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

C#,红黑树(Red-Black Tree)的构造,插入、删除及修复、查找的算法与源代码

1 红黑树(Red-Black Tree) 如果二叉搜索树满足以下红黑属性,则它是红黑树: 每个节点不是红色就是黑色。根是黑色的。每片叶子(无)都是黑色的。如果一个节点是红色的,那么它的两个子节点都是黑色的。对于每个节点,从节点到后代叶的所有路径都包含相同数量的黑色节点。红…

机密计算:为云数据提供强大的安全性

在人工智能应用中&#xff0c;数据隐私是一个重要关注问题。在AI模型训练过程中&#xff0c;特别是在联邦学习等分布式学习场景中&#xff0c;云数据可能分布在不同的地方&#xff0c;包括用户设备、边缘服务器和云服务。机密计算是为人工智能开发中的安全和隐私保护提供基础的…

使用endnote插入引用文献导致word英文和数字变成符号的解决方案

使用endnote插入引用文献导致word英文和数字变成符号的解决方案 如图使用endnote插入引用文献导致word英文和数字变成符号字体Wingdings Wingdings 是一个符号字体系列&#xff0c;它将许多字母渲染成各式各样的符号&#xff0c;用途十分广泛。 **解决方法&#xff1a;**直接通…