深入理解与应用Keepalive机制

news2024/11/18 6:03:27

目录

引言

一、VRRP协议

(一)VRRP概述

1.诞生背景

2.基本理论

(二)VRRP工作原理

(三)VRRP相关术语

二、keepalive基本理论

(一)基本性能

(二)实现原理

(三)抢占模式

三、keepalive服务

(一)安装keepalive

(二)全局配置

(三)VRRP实例

(四)服务器配置

四、实际操作

(一)web服务器

(二)LVS集群服务器

五、keepalive管理

(一)主从更替

(二)单播组播

1.指定组播地址

2.设置单播

(三)日志功能

六、keepalive实现高可用

(一)基本理论

(二)实现nginx高可用


引言

基于VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)的Keepalive机制是为了解决网络中静态默认网关单点故障的问题。在传统的网络架构中,如果作为默认网关的路由器出现故障,会导致整个子网失去对外通信的能力。而VRRP则通过引入主备模式来提供高可用性。

一、VRRP协议

(一)VRRP概述

1.诞生背景

终端设备访问不同网段设备的时候,必须经过网关。如果只有1个网关,那么网络就存在 单点故障,所以为了避免单点故障导致网络的通信中断, 所以,我们建议在一个网段中,可以同时添加多个网关,从而增加网关的冗余性和网络的可靠性; 但是,多网关的部署会带来其他的问题:
1.网关IP地址冲突
2.终端用户需要频繁的切换网关IP地址 
针对上述两个问题,提出了:
在同网段的多个网关之间运行VRRP,形成1个虚拟网关,终端用户都配置和使用虚拟网关就可以了。

其作用为

在同一个网段的多个真实网关之间配置和运用,形成层一个虚拟路由器, 从而实现网关的冗余和负载均衡

2.基本理论

VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)是一种网络层的容错协议。它的主要目的是在多个物理路由器之间提供一个虚拟路由器服务,以实现默认网关的高可用性。在传统的网络环境中,如果静态配置的默认网关出现故障,则会导致网络中的所有主机失去对外通信的能力。VRRP通过将多台路由器联合起来形成一个虚拟路由器,并选举出一台主路由器来处理所有的流量转发,而其他的备份路由器则随时待命,一旦主路由器出现故障,备份路由器能够迅速接替工作,从而确保网络连通性的持续性和可靠性。

(二)VRRP工作原理

(1) 虚拟路由器中的路由器根据优先级(priority)选举出Master。Master路由器通过发送免费ARP报文,将自己的虚拟MAC地址通知给与它连接的设备或者主机,从而承担报文转发任务;

(2) Master路由器周期性发送VRRP报文(心跳线),以公布其配置信息(优先级等)和工作状况;

(3) 如果Master路由器出现故障,虚拟路由器中的Backup路由器将根据优先级重新选举新的Master;

(4) 虚拟路由器状态切换时,Master路由器由一台设备切换为另外一台设备,新的Master路由器只是简单地发送一个携带虚拟路由器的MAC地址和虚拟IP地址信息的免费ARP报文,这样就可以更新与它连接的主机或设备中的ARP相关信息。网络中的主机感知不到Master路由器已经切换为另外一台设备。

(5) Backup路由器的优先级高于Master路由器时,由Backup路由器的工作方式(抢占方式和非抢占方式以及延时抢占)决定是否重新选举Master。

(三)VRRP相关术语

虚拟路由器:Virtual Router 不是真实存在 ,虚构出来的

虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器

VIP:Virtual IP 192.168.91.100 路由1 路由2

VMAC:Virutal MAC (00-00-5e-00-01-VRID)

物理路由器:

master:主设备

backup:备用设备

priority:优先级

二、keepalive基本理论

Keepalive机制是网络通信中一种重要的保持连接健康状态的方法,有助于优化网络资源使用,提高服务稳定性和响应速度

常见的keepalive版本

VRRP Keepalive:虚拟路由冗余协议(VRRP)中的心跳检测机制,用于选举和维护路由器的主备状态,确保网络高可用性。

TCP Keepalive:是一种内置于TCP协议中的功能,用于检测并维持连接的活跃状态。当两个端点间存在一个已建立的TCP连接,但在一段时间内没有数据传输时,启用Keepalive的一方会周期性地发送特殊的探测报文(通常是一个空TCP段)给对方。如果接收方没有回应足够数量的Keepalive探测报文,发送方就会认为连接已经断开,并关闭该连接。

HTTP Keepalive:允许HTTP客户端与服务器之间复用同一TCP连接来发送多个请求和响应,以减少TCP连接建立和销毁带来的开销。

应用程序级Keepalive:许多应用程序和服务也有自己的Keepalive机制,比如MySQL数据库的连接保活、WebSocket的ping/pong消息等。

主要学习VRRP Keepalive

(一)基本性能

keepalive是专门为LVS与HA设计的一款健康检查软件

支持故障自动切换(Failover)

支持节点健康状态检查(Health Checking)判断 LVS 负载调度器、节点服务器的可用性,当 master 主机出现故障及时切换到backup 节点保证业务正常,当 master故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。

官方网站:Keepalived for Linux

(二)实现原理

实现原理与虚拟路由一致

1.首先根据优先级选出Master提供服务

2.Master默认每间隔1秒向Baskup发送一次VRRP报文,告知Baskup自己处于工作状态,并公布配置信息(优先级等)情况

3. 如果Master路由器出现故障,Backup将根据优先级重新选举为新的Master

4.当原Master恢复工作时,将根据抢占模式(抢占方式和非抢占方式以及延时抢占)决定是否重新成为Master

(三)抢占模式

1.抢占式
主服务器宕机,过了一段时间修好了,直接把主权抢过来

2.非抢占式
主服务器宕机,过了一段时间修好了,原来的主就作为备了

3延迟抢占
主修好后,等待一定的时间后再次成为主

三、keepalive服务

keepalive服务可以使用yum安装、以及编译安装

本地yum源自带的版本比较旧

编译安装可以从官网下载较新的安装包进行安装

(一)安装keepalive

使用yum安装:yum  install keepalived.x86_64 -y

默认的主配置文件有157行

(二)全局配置

首先看第一部分3-17行,为全局配置

global_defs
#全局配置

notification_email
#定义当VRRP实例状态发生变化时,系统将通过电子邮件发送通知给指定的收件人列表。

acassen@firewall.loc, failover@firewall.loc, sysadmin@firewall.loc
#邮件通知的接收者。

notification_email_from Alexandre.Cassen@firewall.loc
#设置发送邮件通知时显示的发件人地址,这里是 Alexandre.Cassen@firewall.loc。

smtp_server  192.168.200.1
#指定SMTP服务器地址,本例中为 192.168.200.1,该服务器用于发送邮件通知。

smtp_connect_timeout  30
#设置SMTP服务器连接超时时间,单位为秒,这里为30秒。

router_id LVS_DEVEL
#为当前运行的Keepalived实例设置一个唯一的标识符,用在日志和其他网络通信中

vrrp_skip_check_adv_addr
#跳过对通告地址(advertised address)的检查。如果启用此选项,在某些情况下
#可以避免错误,比如通告地址未在任何接口上配置。

vrrp_strict
#启用严格模式,要求配置必须符合RFC文档的标准规范,否则Keepalived服务可能不会启动。
#建议关闭

vrrp_garp_interval 0
#设置发送GARP(即无请求的ARP响应)消息的时间间隔,默认值通常为1秒。设为0表示禁用GARP功能。

vrrp_gna_interval 0
#设置发送GNA(即IPv6下的无请求邻居通告)消息的时间间隔。设为0表示禁用GNA功能

(三)VRRP实例

第二部分:VRRP实例配置(19-34)

vrrp_instance VI_1
'定义VRRP实例名称。'

state MASTER
'设置当前节点在VRRP组中的初始状态为MASTER。这意味着该节点将优先处理请求,
并拥有VIP(虚拟IP地址)的所有权'

'interface eth0'
'指定VRRP通告报文通过哪个网络接口发送,这里使用的是eth0接口。'

virtual_router_id 51
'每个VRRP实例需要一个唯一的标识符,这里用数字51表示。主备需要在同一个标识符内'

priority 100
'设置本节点在VRRP组中的优先级,数值越高代表优先级越高,优先级最高的节点将成为MASTER'

advert_int 1
'设置VRRP通告消息的时间间隔,单位为秒。此处设置为每秒发送一次心跳消息以确认其是否在线'

authentication:
auth_type PASS  '设置认证类型为密码认证。'
auth_pass 1111  '设置用于身份验证的共享密码。'

virtual_ipaddress
'列出此VRRP实例要管理的一系列虚拟IP地址'

(四)服务器配置

第三部分为服务器配置(36-60)

'虚拟服务器'
virtual_server 192.168.200.100 443
#定义了一个虚拟服务器,对外提供服务的地址为192.168.200.100,监听端口为443(即HTTPS服务)。

delay_loop 6
#健康检查间隔,每隔6秒对后端服务器执行一次健康检查。

lb_algo rr
#负载均衡算法采用轮询(Round Robin)策略。

lb_kind NAT
#负载均衡方式采用NAT,客户端与真实服务器之间的通信通过NAT进行转发。

#persistence_timeout 50
#会话保持超时时间,同一个客户端在50秒内发起的新请求都会被转发到同一台后端服务器上。

protocol TCP
#明确指出虚拟服务器处理的是TCP流量。

'真实服务器配置'

real_server 192.168.201.100 443
#定义一个真实服务器,其IP地址为192.168.201.100,同样监听443端口

weight 1
#权重值为1,表示该服务器在负载均衡中分配请求的相对权重。

SSL_GET
#使用SSL协议发送GET请求来进行健康检查。

url
#定义了两个需要检查的URL路径及其预期的HTTP响应摘要。一般不适用url,需要更改

connect_timeout 3    #设置连接到真实服务器的超时时间为3秒。
nb_get_retry 3       #如果首次请求未能得到正确的摘要,将重试3次。
delay_before_retry   #每次重试前等待3秒。

四、实际操作

LVS + Keepalived 高可用群集

环境设备

LVS1192.168.83.30 (MASTER)
LVS2192.168.83.40 (BACKUP)
web1192.168.83.50
web2192.168.83.60
客户端192.168.83.100
VIP192.168.83.200

(一)web服务器

首先配置web服务

1.下载安装web服务

yum install  httpd  -y

2.建立虚拟IP

3.调整内核参数

net.ipv4.conf.all.arp_ignore 和 net.ipv4.conf.default.arp_ignore
'设置为1表示节点将更严格地处理ARP请求。在某些情况下,系统不会响应非本地IP地址的ARP请求
这有助于防止IP地址冲突,并且可以用于LVS DR模式下的Director节点,以避免对外直接响应ARP请求'
 
net.ipv4.conf.all.arp_announce 和 net.ipv4.conf.default.arp_announce
'设置为2表示节点在发送ARP应答时总是使用其主接口上的最具体的地址(即,优先级最高的源IP地址)
这同样对LVS DR模式很有用,确保Director节点在回应ARP请求时只使用VIP,而不是实际的物理接
口地址。'

调整完毕后开启web服务:systemctl  start  httpd

在站点目录下构建数据文件

两台web服务器同样操作

(二)LVS集群服务器

1.下载服务

yum  install keepalived.x86_64 -y   && yum  install ipvsadm.x86_64 -y

先启动ipvsadm服务

ipvsadm-save >/etc/sysconfig/ipvsadm  #生成配置信息文件
systemctl start ipvsadm.service              #启动服务

2.配置文件

在配置文件之前,最好先进行备份

cp  /etc/keepalived/keepalived.conf   /etc/keepalived/keepalived.conf.bak

删除60行以下的内容

配置全局设置

配置VRRP热备实例

 vrrp_instance VI_1 {
'定义实例名称,默认即可,也可以自定义'
   state MASTER
'设置为MASTER表示为主'
    interface ens33
'指定心跳报文从ens33网卡发送'
    virtual_router_id 51
'实例表示符,默认即可,BACKUP与其一致'
    priority 100
'设置优先级,其值需要比BACKUP高'
    advert_int 1
'每间隔一秒发送一次VRRP报文'
     authentication {
        auth_type PASS
        auth_pass 123123
'定义密码认证方式,并设置密码,BACKUP需要与其一致'
   }   
   virtual_ipaddress {
         192.168.83.200
'设置集群VIP地址'
     }   
}

配置虚拟路由

 virtual_server 192.168.83.200 80 {
  #定义对外提供服务的IP地址,提供服务为80端口,即http服务
     delay_loop 6
     #每6秒对后端服务器进行健康检查
      lb_algo rr 
     #设置调度算法为rr(轮询)
     lb_kind DR
     #负载均衡方式采用DR
     persistence_timeout 0
     #长连接时间为0秒,为体现操作真实性,真实环境建议调高,默认为50秒
    protocol TCP
    #虚拟服务器监听TCP协议的流量
    real_server 192.168.83.50 80 {
    #定义真实服务器,其IP地址为192.168.83.50,监听80端口
        weight 1
      #轮询权重为1
         TCP_CHECK {
        #使用TCP_CHECK模块进行真实服务器的健康状态检测
       connect_port 80
      #通过TCP协议连接到真实服务器的80端口以确认其是否可用
      connect_timeout 3
      #访问超时时间,超过3秒认为该服务器宕机
       nb_get_retry 3
      #重复访问3次
       delay_before_retry 3
       #每次访问间隔3秒
          }   
    }   
     real_server 192.168.83.60 80 {
        weight 1
            TCP_CHECK {
             connect_port 80
              connect_timeout 3
              nb_get_retry 3
             delay_before_retry 3
#原理同上
       }
      }
 }

配置完毕后启动服务:systemctl start  keepalived.service

查看规则情况

另一台服务器与其基本一致

需要修改12,19,22行信息,其余配置与主服务一致

配置完毕后启动服务

ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start  ipvsadm.service
systemctl start  keepalived.service

使用客户端访问进行测试

五、keepalive管理

(一)主从更替

当MASTER关闭后,优先级最高BACKUP会立马变成MASTER继续工作

当主恢复后,立马会变为MASTER,即为抢占模式(默认)

可以通过添加nopreempt参数,设置为非抢占模式

在虚拟服务器段配置

也可以设置延迟抢占,同样在虚拟服务器段配置

(二)单播组播

在Keepalived中,VRRP实例通常通过组播方式来发送心跳和通告消息以实现高可用性和故障切换

组播地址范围为224.0.0.0-239.255.255.255

默认的组播地址为224.0.0.18。如果有多组keepalive服务器,所有的默认心跳线发送路径都为该地址,容易造成混乱,所以需要修改

通过添加vrrp_mcast_group4来指定特定的组播地址,或者改为单播

注意:如果指定组播地址,所有的服务器都要改

1.指定组播地址

当前192.168.83.30为主。可以通过tcpdump抓包来进行查看

可以看到,MASTER发的VRRP包是发往指定的组播地址224.83.83.83

2.设置单播

'MASTER服务器'

unicast_src_ip 192.168.83.30
#该指令指定当前节点作为VRRP通告和心跳消息的发送源地址。
#这意味着所有从这个节点发出的VRRP报文都将使用 192.168.83.30 这个IP地址作为源地址

unicast_peer { 
192.168.83.40 
}
#这部分定义了单播对等体列表,即指定接收VRRP通告和心跳消息的目标地址。
#在这里,仅指定了一个对等体地址 192.168.83.40,表示此节点将直接向 192.168.83.40 
#发送VRRP通信信息,而不是通过组播方式广播到整个网络。

'BACKUP服务器'
#同上

同样抓包查看验证一下

(三)日志功能

因为keepalive服务较为重要,其日志没有独立的文件存在,默认存放在/var/log/messages文件中

为便于分析,需要将它的日志位置,单独存放

在/etc/sysconfig/keepalived文件中第14行有一段信息为:KEEPALIVED_OPTIONS="-D"

这是一个环境变量或启动参数的设置,用于指定Keepalived服务在启动时使用的额外选项。

-D:表示Keepalived以守护进程(daemon)模式运行。这意味着Keepalived会在后台运行,并且         脱离终端控制台

添加-S选项设置日志

-S :代表设置syslog日志设备,它通常与一个数字参数(0-7)结合使用,用于指定syslog记录的         日志设施级别

修改日志管理配置文件/etc/rsyslog.conf

修改完毕后重启日志管理服务与keepalive服务

六、keepalive实现高可用

keepalived利用 VRRP Script 技术,可以调用外部的辅助脚本进行资源监控,并根据监控的结果实现优先动态调整,从而实现其它应用的高可用性功能

(一)基本理论

VRRP Script是Keepalived的一个强大特性,其配置等级global_defs一致,与它允许用户自定义检测脚本,当Keepalived运行时会周期性地执行这些脚本。如果脚本返回成功(通常为0),则认为被监控的服务处于正常状态;如果脚本返回失败(非0值),则Keepalived将根据配置更改VRRP实例的状态,可能导致主备节点的角色切换,从而确保服务的高可用性。

VRRP Script技术实现,需要先定义脚本,而后调用脚本

'定义脚本'
vrrp_script <SCRIPT_NAME> { 			#定义一个检测脚本,在global_defs 之外配置
     script <STRING>|<QUOTED-STRING> 	#shell命令或脚本路径(注意执行权限)
     interval <INTEGER> 				#间隔时间,单位为秒,默认1秒
     timeout <INTEGER> 					#超时时间
     weight  <INTEGER:-254..254> 			
#默认为0,如果设置此值为负数,当上面脚本返回值为非0时,会将此值与本节点权重相加可以降低
#本节点权重,即表示fall. 如果是正数,当脚本返回值为0,会将此值与本节点权重相加可以提高本
#节点权重,即表示 rise.通常使用负值
     fall <INTEGER>       	#执行脚本连续几次都失败,则转换为失败,建议设为2以上
     rise <INTEGER>       	#执行脚本连续几次都成功,把服务器从失败标记为成功
}

'调用脚本'
track_script {
 SCRIPT_NAME_1
 SCRIPT_NAME_2
}


(二)实现nginx高可用

1.下载安装nginx服务

yum  install epel-release.noarch -y  #下载epel源

yum  install  nginx  -y                    #下载nginx

systemctl  stop  ipvsadm.service  #关闭ipvsamd服务

定义一个简单的脚本

脚本表示使用killall -0,这是Linux命令行中用于检查指定进程名是否存在且至少有一个实例在运行的命令。这里的参数 -0 具有特殊含义,它不会发送任何信号给进程,而是仅仅测试这些进程是否存在

修改nginx配置文件,添加反向代理及负载均衡

修改keepalive配置文件,只保留全局配置与实例配置,删除虚拟服务器与真实服务器配置

在全局配置语句块外添加vrrp_script服务

vrrp_script keep
#定义名为 "keep" 的VRRP检查脚本。

script "/data/keep.sh"
#指定要执行的shell脚本路径为 /data/keep.sh。这个脚本应该返回0表示成功,非零值表示失败。

interval 1
#设置每隔1秒执行一次该脚本以检查服务状态。

timeout 30
#如果脚本在30秒内没有响应(即超时),则认为它执行失败。

weight -50
#当脚本执行成功时,VRRP实例的优先级权重减50。

fall 3
#当连续3次检查失败后,将触发VRRP实例状态变更,可能导致主备切换。

rise 3
#当连续3次检查成功后,恢复VRRP实例到正常状态。

配置完毕后重启keepalive服与nginx服务

systemctl restart  keepalived.service

systemctl start  nginx

另一台keepalive配置与其一致

配置完毕后重启服务,使用客户端访问

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

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

相关文章

Hadoop伪分布式配置--没有DataNode或NameNode

一、原因分析 重复格式化NameNode 二、解决方法 1、输入格式化NameNode命令&#xff0c;找到data和name存放位置 ./bin/hdfs namenode -format 2、删除data或name&#xff08;没有哪个删哪个&#xff09; sudo rm -rf data 3、重新格式化NameNode 4、重新启动即可。

Seata 2.x 系列【7】服务端集成 Nacos 2.x

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Seata 版本 2.0.0 本系列Spring Boot 版本 3.2.0 本系列Spring Cloud 版本 2023.0.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 概述2. 安装 N…

Cassandra 集群安装部署

文章目录 一、概述1.官方文档2. 克隆服务器3.安装说明4.安装准备4.1.安装 JDK 114.2.安装 Python4.3.下载文件 二、安装部署1.配置 Cassandra2.启动 Cassandra3.关闭Cassandra4.查看状态5.客户端连接服务器6.服务运行脚本 开源中间件 # Cassandrahttps://iothub.org.cn/docs/m…

校园新闻网站|基于SpringBoot+ Mysql+Java+B/S结构的校园新闻网站设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 摘要 研究…

运放的基础知识

运算放大器&#xff08;Operational Amplifier&#xff0c;简称运放&#xff09;是一种直流耦合、差模&#xff08;差动模式&#xff09;输入的高增益电压放大器&#xff0c;通常具有单端输出。它能产生一个相对于输入端电势差大数十万倍的输出电势&#xff08;对地而言&#x…

爬虫的去重

去重基本原理 爬虫中什么业务需要使用去重 防止发出重复的请求防止存储重复的数据 在爬取网页数据时&#xff0c;避免对同一URL发起重复的请求&#xff0c;这样可以减少不必要的网络流量和服务器压力&#xff0c;提高爬虫的效率&#xff0c;在将爬取到的数据存储到数据库或其…

ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

发生的错误信息&#xff1a; File "C:\Users\malongqiang\.conda\envs\ObjectDetection\lib\ssl.py", line 1309, in do_handshakeself._sslobj.do_handshake() ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。 分析原因&#xff1a; …

网络编程:网络编程基础

一、网络发展 1.TCP/IP两个协议阶段 TCP/IP协议已分成了两个不同的协议&#xff1a; 用来检测网络传输中差错的传输控制协议TCP 专门负责对不同网络进行2互联的互联网协议IP 2.网络体系结构 OSI体系口诀&#xff1a;物链网输会示用 2.1网络体系结构概念 每一层都有自己独…

新生宿舍管理系统|基于springboot框架+ Mysql+Java+B/S架构的新生宿舍管理系统设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 学生功能模块 管理员功能 系统功能设计 数据库E-R图设计 lunwen参考 摘要 研究目的 开发环境 项目部…

全栈的自我修养 ———— js中的复制api

通常用于可以禁止用户复制或者在复制的内容后面添加版权信息等 一、代码二、展示1、访问粘贴板的内容2、替换复制内容3、在复制内容的后面添加版权信息4、监听粘贴事件 一、代码 <body><div class"demo">不可以被复制</div><div class"de…

Linux中mysql的安装、远程访问、基础操作、文件导入

Linux中mysql的安装、远程访问、基础操作、文件导入 cheet card1. 安装1. 使用root账号安装mysql 2. 启动mysql并创建root、管理员两个账号3. 基础操作3.1 数据库的查看、创建、修改、删除3.2 mysql的数据类型3.3 数据表的基本操作3.4 数据表结构的修改3.5 表中数据的增、删、改…

【C++ 学习】程序内存分布

文章目录 1. C 内存分布的引入 1. C 内存分布的引入 ① 栈又叫堆栈&#xff1a;非静态局部变量/函数参数/返回值等等&#xff0c;栈是向下增长的。 ② 内存映射段&#xff1a;是高效的I/O映射方式&#xff0c;用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存…

射影几何 -- 两视点几何 1

1、 基本矩阵 1.1、 极几何 极平面 (Epipolar Plane) 通过两个摄像机光心的平面称为极平面。两个摄像机光心的连线称为基线&#xff0c;任意两张极平面均 相交于基线&#xff0c;所以极平面的全体构成共基线的平面束。 极线 (Epipolar Line) 极平面与摄像机像平面的交线称…

ELK之使用Filebeat插件收集日志到Logstash

对于Springboot项目接入ELK非常方便&#xff0c;对于非maven&#xff0c;非Spring项目来说就比较复杂&#xff0c;这个时候我们就可以使用Filebeat插件还完成日志的收集发送工作。 Filebeat介绍 Filebeat是用于转发和收集数据的轻量级工具&#xff0c;Filebeat可以监视指定的…

3.1_8 两级页表

文章目录 3.1_8 两级页表&#xff08;一&#xff09;单级页表存在的问题&#xff08;二&#xff09;如何解决单级页表的问题&#xff1f;&#xff08;三&#xff09;两级页表的原理、地址结构&#xff08;四&#xff09;如何实现地址变换&#xff08;五&#xff09;需要注意的几…

【Cookie和Session辨析】

1.cookie 1.1什么是cookie Cookie 是一种在客户端&#xff08;通常是 Web 浏览器&#xff09;和服务器之间传递信息的机制&#xff0c;用于在客户端存储少量的数据。它由服务器发送到客户端浏览器&#xff0c;然后浏览器会将这些数据存储在本地&#xff0c;并在后续的请求中将…

全球首个 AI 软件工程师 Devin它来了!

如果您想每日获取AI最新新闻,欢迎关注文章底部的公众号 Cognition AI 发布 AI 软件工程师 Devin 初创公司 Cognition 近日发布公告,宣布推出全球首个 AI 软件工程师 Devin,并号称会彻底改变人类构建软件的方式。Devin 擅长长期推理能力,可以自主规划和完成软件项目,并在此…

Kotlin:为什么创建类不能被继承

一、为什么创建类不能被继承 class或data class 默认情况下&#xff0c;Kotlin 类是最终&#xff08;final&#xff09;的&#xff1a;它们不能被继承。 示例&#xff1a;data class PsersonBean 反编译data class PsersonBean 生成 public final class PsersonBean 示例&…

智慧路灯杆AI监测应用,让高速出行更安全

高速公路是现代交通出行的重要组成&#xff0c;高速公路上的交通安全也一直是人们关注的焦点。针对更好监测和管理高速公路上的交通状况&#xff0c;可以基于智慧路灯杆打造AI交通监测应用&#xff0c;通过智能感知高速路段的路况、车况、环境状况&#xff0c;实现实时风险感知…

基于SpringBoot的“实验室管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“实验室管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 登录界面 注册界面 实验室界面 设备界面图 消耗…