案例:LVS负载均衡群集(NAT模式)

news2024/12/22 14:40:15

目录

集群

集群的含义

集群分类

类型

负载均衡集群(Load Balance Cluster)

高可用集群(High Availability Cluster)

高性能运算集群(High Performance Computer Cluster)

负载均衡集群架构

第一层,负载调度器(Load Balancer或Director)

第二层,服务器池(Server Pool)

第三层,共享存储(Share Storage)

结构

LVS集群的工作模式

NAT模式

源地址和目标地址转换的过程

DR模式(直接路由)

源地址和目标地址转换的过程

TUN模式(IP隧道)

源地址和目标地址转换的过程

LVS

示例步骤

集群环境

基本环境设置

调度器

客户端

网站服务

测试

修改网关

安装LVS

基于NAT模式设置LVS

添加调度策略

调度算法

轮询(Round Robin)

加权轮询(Weighted Round Robin)

查看LVS策略

导出LVS策略

删除条目

删除群集

删除后端服务器

LVS常用选项

测试

共享存储

安装并配置NFS

启动NFS服务

在Web服务器挂载共享目录

测试


集群

在互联网应用中,随着站点对硬件的性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器越来越力不从心

集群的含义

  • Cluster,集群也叫群集
  • 由多台主机构成,但对外只表现为一个整体

集群分类

类型

  • 负载均衡集群(高并发)
  • 高可用集群(避免单点故障)
  • 高性能运算集群
负载均衡集群(Load Balance Cluster)
  • 提高应用系统的响应能力,因可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
  • LB的负载均衡依赖于主节点的分流算法
高可用集群(High Availability Cluster)
  • 以提高系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用的容错效果
  • HA的工作方式包括双工和主从两种模式
高性能运算集群(High Performance Computer Cluster)
  • 以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
  • 高性能依赖于"分布式运算"、"并行计算",通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力

负载均衡集群架构

第一层,负载调度器(Load Balancer或Director)
  • 当用户向服务器发送一个访问请求时,不让用户直接访问服务器,而是访问一个独立的调度器服务器,它的任务是接收用户的访问请求,把请求按照调度策略分配给后端的服务器
  • 调度器不负责数据的解析,只是一个中转站,因此调度器的并发能力很强
第二层,服务器池(Server Pool)
  • 调度器分配请求的目的地就是服务器池,负责向用户提供服务
  • 在集群中,服务器池内的任意一个单台服务器,都可以单独运行业务产品,只是压力比负载均衡的环境更大而已
第三层,共享存储(Share Storage)
  • 让服务器池中的每个Web服务器都挂载同一个存储池,假如网站内容更新,不需要在每个Web服务器上都更新一遍

结构

LVS集群的工作模式

本次只演示地址转换的示例步骤

  • 负载均衡集群是目前企业用的最多的集群类型
  • 集群的负载调度技术有三种工作模式
    • 地址转换
    • IP隧道
    • 直接路由

NAT模式

  • Network Address Translation,简称NAT模式
  • 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,作为外网的访问入口,内网的应答出口
  • 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
  • 外网的请求和内网的响应都需要经过调度器,所以内网服务器的网关地址应该是调度器
  • 针对中小型的集群环境
源地址和目标地址转换的过程
  1. 当外网客户端访问业务而发送请求时,调度器根据策略选择一个可用的后端服务器来处理请求
  2. 然后调度器通过DNAT把目标地址转换为后端服务器的地址,并传递给该服务器
  3. 后端服务器收到请求后,生成响应,然后返回给调度器,此时响应的源地址是后端服务器的IP地址
  4. 调度器收到响应后,通过SNAT把源地址修改为自己与外网通信的公有IP地址
  5. 然后返回给客户端

DR模式(直接路由)

  • Direct Routing,简称DR模式
  • 采用半开放式的网络结构,与TUN模式的结构类似,但内网服务器并不是分散在各地,而是与调度器位于同一个物理网络
  • 负载调度器与内网服务器通过本地网络连接,不需要建立专用的IP隧道
  • 因为调度器只接收外网的请求,内网服务器的响应则是直接由网关路由出去,所以减轻了调度器的压力
  • 针对大规模集群
源地址和目标地址转换的过程
  1. 当外网客户端需要访问业务而发送请求时
  2. 通过DNAT修改目标地址为调度器的地址,然后传递给内网调度器
  3. 调度器收到请求后,根据调度策略选择一个可用的后端服务器,再通过DNAT把目标地址转换为内网服务器的地址,然后把请求传递给内网服务器
  4. 内网服务器收到请求后,生成响应直接返回给网关,此时的源地址是内网服务器的IP地址
  5. 网关收到后端服务器的响应后,进行SNAT地址转换,把源地址转换为网关的公有IP地址,然后返回给客户端

TUN模式(IP隧道)

  • IP Tunnel,简称TUN模式
  • 采用开放式的网络结构,调度器和内网设备不在同一物理网络
  • 负载调度器仅作为外网的访问入口,内网服务器通过各自的Internet连接直接回应外网请求,而不再经过调度器
  • 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信
  • 由于调度器和服务器都部署在公网,所以它们之间的通信都通过ip-ip的加密算法来加密通信
源地址和目标地址转换的过程
  1. 外网请求首先到达调度器的外网接口
  2. 调度器收到这些请求后,根据预设的路由规则将请求打包封装进IP隧道中,然后发送到内网
  3. 数据在IP隧道中传输时,隧道设备会将原始数据包头部封装,这个头部包含的是隧道设备的公共IP地址和内网目标服务器的私有IP地址
  4. 当内网服务器收到请求后,生成响应,响应首先到达隧道设备。
  5. 隧道设备会解析响应,去除隧道头部,然后根据记录的信息将响应返回到发起请求的外网客户端
  6. 外网客户端最终接收到的响应来自调度器,因为调度器会将来自内网服务器的响应经过隧道的IP地址转换,使得外网客户端看到的是调度器的公共IP地址作为源地址。

LVS

本章学习常见的一种集群技术 —— LVS(Linux Virtual Server;Linux虚拟服务器)

LVS是针对Linux内核开发的一个负载均衡的项目,由我国的章文嵩博士在1998年5月创建

LVS实际上是相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决办法

LVS现在已经成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用。

示例步骤

集群环境

本次的集群案例是一个使用NAT模式来实现集群的案例

主机

操作系统

IP 地址

角色

服务器

CentOS7.9

192.168.10.101

调度器

服务器

CentOS7.9

192.168.10.102

Web服务器

服务器

CentOS7.9

192.168.10.103

Web服务器

服务器

CentOS7.9

192.168.10.104

NFS共享存储

测试机

CentOS7.9 带桌面端

172.16.16.200

客户端,测试机

实验终端除了带桌面的客户端,其他最小安装的虚拟机统一使用XShell连接

基本环境设置

调度器

因为调度器需要有两个网卡接口,一个连外网一个连内网,所以先为101主机添加一块网卡

调度器新加的网卡客户端的网卡都设为VMnet1模式,模拟外网通信

先进入存放网卡配置文件的目录,使用ip a命令查看新加网卡的标识,然后为该网卡配置对应文件

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

拷贝配置文件,修改以下内容

[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36
IPADDR=172.16.16.172
NETMASK=255.255.255.0
#GATEWAY=192.168.10.254    # 连接外网的网卡不需要网关,这里注释掉

NAME=ens36
DEVICE=ens36

保存并退出,重启网络服务,使用ip a命令查看ens36网卡的IP是否被改变

[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ip a
3: ens36: 
    inet 172.16.16.172/24

客户端

修改客户端的IP为集群环境示例图中的IP

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-ens33
IPADDR=172.16.16.200
PREFIX=24
#GATEWAY=192.168.10.254
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ip a
2: ens33: 
    inet 172.16.16.200/24

在101(调度器)操作

然后在调度器主机尝试ping外网的客户端,要确保能ping通

[root@localhost network-scripts]# ping 172.16.16.200
PING 172.16.16.200 (172.16.16.200) 56(84) bytes of data.
64 bytes from 172.16.16.200: icmp_seq=1 ttl=64 time=0.434 ms
64 bytes from 172.16.16.200: icmp_seq=2 ttl=64 time=0.217 ms
64 bytes from 172.16.16.200: icmp_seq=3 ttl=64 time=0.268 ms

网站服务

右键XShell终端空白处,为两个内网服务器开启会话同步(102、103),其他的都单独关闭会话同步,准备快速部署网站服务

101、104都关闭会话同步

在102(Web服务器①)操作

安装Apache,为了方便实验关闭防火墙,关闭内核安全机制,开启Apache服务

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start httpd

关闭会话同步

为了区分两个Web服务器,所以修改两个Web服务器的网页内容,因此也需要关闭全部的会话同步

在102(Web服务器①)操作

创建网页文件,添加下方内容

[root@localhost ~]# vim /var/www/html/index.html
Test Web 01

在103(Web服务器②)操作

创建网页文件,添加下方内容

[root@localhost ~]# vim /var/www/html/index.html
Test Web 02
测试

使用调度器进行测试,确保能够访问到网页内容

在101(调度器)操作

[root@localhost ~]# curl 192.168.10.102
Test Web 01
[root@localhost ~]# curl 192.168.10.103
Test Web 02
修改网关

根据刚才的集群图,102和103两个Web服务器的应答应该都是经过调度器服务器的,所以调度器就是这两个Web服务器的网关

这里修改两个Web服务器的网管为调度器

在102(Web服务器①)操作

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.10.101
[root@localhost ~]# systemctl restart network

在103(Web服务器②)操作

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.10.101
[root@localhost ~]# systemctl restart network

安装LVS

在101(调度器)操作

为了方便实验,先关闭防火墙和内核安全机制

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

实际上LVS已经被集成到内核里了,所以这里安装的其实是LVS的管理工具

[root@localhost ~]# yum -y install ipvsadm
基于NAT模式设置LVS

本次案例我们使用NAT模式来管理LVS,那么调度器就需要有一个IP转发功能,既作为网关又作为调度器

修改内核配置文件,添加以下内容

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1

使用sysctl -p命令,在不重启系统的情况下,使内核配置文件中新加的参数生效

[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1

LVS并没有配置文件,但是可以使用ipvsadm-save命令来查看当前的策略信息

还可以加上-C选项来清理当前策略

[root@localhost ~]# ipvsadm-save
[root@localhost ~]# ipvsadm -C
添加调度策略

使用-A选项添加群集服务,再指定虚拟服务器的IP和端口,然后指定调度算法为权重轮询

然后使用-a选项向指定的虚拟服务器中添加一个后端服务器(192.168.10.102和103),启用地址伪装,指定权重为2

  • -m:启用地址伪装模式:对后端服务器的响应进行SNAT(源地址转换)
  • -w:指定后端服务器的权重值

w:权重,分发请求时根据权重的值来分发请求数量

rr:轮询(请求依次轮流)

[root@localhost ~]# ipvsadm -A -t 172.16.16.172:80 -s wrr
[root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.102:80 -m -w 2
[root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.103:80 -m -w 1
调度算法
  • 轮询(Round Robin)
    • 将受到的访问请求按照顺序轮流分配给群集中的各节点,(真实服务器),均等的对待每一台服务器,而不管服务器实际的连接数和系统负载
  • 加权轮询(Weighted Round Robin)
    • 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求书越多
    • 保证性能强的服务器承担更多的请求数量

查看LVS策略

添加过策略后,可以使用ipvsadm-save命令来查看现有的策略

[root@localhost ~]# ipvsadm-save
-A -t localhost.localdomain:http -s wrr
-a -t localhost.localdomain:http -r 192.168.10.102:http -m -w 2
-a -t localhost.localdomain:http -r 192.168.10.103:http -m -w 1

或者还可以使用ipvsadm -ln也可以查看现有策略

[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.16.172:80 wrr
  -> 192.168.10.102:80            Masq    2      0          0         
  -> 192.168.10.103:80            Masq    1      0          0
  • Masq:NAT模式
  • ActiveConn:活跃的连接数(正在连接)
  • InActConn:不活跃的连接数(断开连接)

导出LVS策略

通过重定向,导出策略内容到文本中,可以实现策略的保存

[root@localhost ~]# ipvsadm-save > /opt/save.txt

删除条目
删除群集

如果要删除一个群集服务,可以使用-D选项来删除

[root@localhost ~]# ipvsadm -D -t 172.16.16.172:80
删除后端服务器

如果要删除一个群集中的后端服务器,可以使用-d选项来删除群集中的指定后端服务器

[root@localhost ~]# ipvsadm -d -t 192.168.10.172:80 -r 192.168.10.103
LVS常用选项

选项

说明

-s

指定调度算法

rr:轮询

wrr:加权轮询

lc:最小链接数

wlc:加权最小连接数

-A

添加一个新的集群服务

-E

修改一个己有的集群服务

-D

删除指定的集群服务

-S

保存ipvsadm设定的规则策略,默认保存在/etc/sysconfig/ipvsadm中

-R

载入己保存的规则策略,默认加载/etc/sysconfig/ipvsadm

-C

清除所有集群服务

-Z

清除所有记数器

-L

显示当前己有集群服务,能通过相应的options查看不同状态信息

-a

向指定的集群服务中添加RS及属性

-e

修改RS属性

-t

指定为tcp协议

-u

指定为udp协议

-s

调度方法,默认为wlc

-w

指定权重,默认为1

-g

Gateway, DR模型

-i

ipip, TUN模型

-m

masquerade, NAT模型

-r

指定后端服务器的地址


测试

在172.16.16.200(外网客户端)操作

通过for循环使用curl访问内网的Web服务,由于我们刚才指定了权重轮询的算法,所以每3次请求会有2个请求分发给102,1个请求分发给103

[root@localhost ~]# for i in $(seq 1000);do curl 172.16.16.172;done

在101(调度器)操作

此时如果在调度器查看策略信息和状态,可以看到:断开连接的数量,根据客户端的访问次数发生了变化

[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.16.172:80 wrr
  -> 192.168.10.102:80            Masq    2      0          674       
  -> 192.168.10.103:80            Masq    1      0          336

共享存储

作为共享存储的服务器不需要连接到外网中(不需要上网),这里使用NFS作为共享存储的技术

NFS服务器是存储内网服务器网页文件或者数据,如果能够上网,那么安全性也有所降低。

所以NFS服务器不需要设置网关

在104(共享存储服务器)操作

安装并配置NFS

为了方便实验关闭防火墙和内核安全机制

安装NFS共享存储所需的两个软件包

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install nfs-utils rpcbind

打开NFS的配置文件,指定共享目录的路径,和能够挂载该目录的网络范围,然后指定读写权、同步等选项

并创建出在配置文件中指定用于共享的目录

[root@localhost ~]# vim /etc/exports
/opt/wwwroot 192.168.10.0/24(rw,sync,no_root_squash)
[root@localhost ~]# mkdir /opt/wwwroot
  • rw:可读写的权限
  • ro:只读的权限
  • no_root_squash:使用该共享目录时相当于该目录的拥有者,如果是root使用这个共享的目录来说,他就具有root的权限,这个参数不安全,谨慎使用
  • root_squash:使用该共享目录时相当于该目录的拥有者。如果以root身份使用这个共享目录的时候,那么这个使用者(root)的权限将被压缩成为匿名使用者,通常他的UID与GID都会变成nobody
  • all_squash:不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,也就是nobody
  • sync:资料同步写入到内存与硬盘当中(同步)
  • async:资料会先暂存于内存当中,而非直接写入硬盘,减少了硬盘IO(异步)
  • insecure:允许从这台机器过来的非授权访问
启动NFS服务
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
在Web服务器挂载共享目录

在102(Web服务器①)操作

Linux 系统需要安装nfs-utils软件包来支持NFS文件系统,所以需要先安装所需软件包

然后使用mount命令挂载指定IP的指定目录,再指定挂载位置

最后使用df命令查看挂载是否成功

[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# mount -t nfs 192.168.10.104:/opt/wwwroot /var/www/html/
[root@localhost ~]# df -h
文件系统                     容量  已用  可用 已用% 挂载点
192.168.10.104:/opt/wwwroot  195G  1.9G  194G    1% /var/www/html

在103(Web服务器②)操作

步骤同上,确保挂载成功

[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# mount -t nfs 192.168.10.104:/opt/wwwroot /var/www/html/
[root@localhost ~]# df -h
文件系统                     容量  已用  可用 已用% 挂载点
192.168.10.104:/opt/wwwroot  195G  1.9G  194G    1% /var/www/html

cd进入挂载的位置,因为/var/www/html目录下之前是有网页文件的,挂载上共享目录后,共享目录会覆盖该目录,所以该目录目前是空的

因此我们创建一个网页文件用于测试

网页内容如下(代码块内最后一行)

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# vim index.html
NFS Test

测试

在172.16.16.200(外网客户端)操作

还是使用for循环多次访问Web服务测试

[root@localhost ~]# for i in $(seq 100);do  curl 172.16.16.172;done
NFS Test
NFS Test
NFS Test
...

至此,LVS基于NAT模式的集群部署完成

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

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

相关文章

【练习】使用DevEco Studio编写计数器案例

效果展示 默认状态 点击加号 点击减号 知识点 类型转换(数字 和 字符串) 字符串转数字 方法说明例子Number()字符串 直接转数字,转换失败返回NaN(字符串包含非数字) let str1: string 1.1 console.log(Number(str1)…

游戏服务架构之 网关

游戏服务架构 长连接 游戏服务的一个特点是,需要维护大量的长连接来保证用户与游戏间的通信,比如tcp长连接、websocket双工通信等。 多服务 游戏类服务器,为了各个模块之间不相互影响,一般都是微服务的方式实现,比…

二叉树前序后序中序遍历

二叉树前序后序中序遍历 创建二叉树代码 private static class TreeNode {public final int value;public TreeNode left;public TreeNode right;public TreeNode(int value) {this.value value;} }public static TreeNode createTree(int[] treeArr) {TreeNode[] root new…

HarmonyOS应用开发者高级认证多选题答案(95%高正确率,8.3更新)

【多选题分数占比高,多选高分,单选稍微做下就能考试通过!】 【多选题分数占比高,多选高分,单选稍微做下就能考试通过!】 【多选题分数占比高,多选高分,单选稍微做下就能考试通过&a…

MongoDB聚合操作详解

文章目录 聚合操作聚合管道管道(Pipeline)和阶段(Stage)常用的聚合阶段运算符准备数据集,执行脚本$project$match$count$group$unwind$limit$skip$sort$lookup聚合操作案例1聚合操作案例2 聚合优化执行顺序内存排序 整…

2024有哪些开放式耳机值得入手!开放式耳机推荐!

耳机基本上已经成为我们日常生活中的必需品,开放式蓝牙耳机以其独特的设计,提供了更为自然和安全的听音体验,为了帮助大家更好的选择开放式耳机,我挑选了几个小技巧以及我自用过后觉得还不错的五款耳机推荐给大家。 一、耳机佩戴…

Day6

模板的继承 在一个网页中,可能会出现几个页面样式几乎不变的情况。 确实是可以在每个html文件中写重复代码,但是,假如说后期运维的话,如果需要在某一处修改数据,那用过这个代码的都得逐一修改,这样的运维…

端到端自动驾驶:挑战与前沿

End-to-end Autonomous Driving: Challenges and Frontiers 端到端自动驾驶:挑战与前沿 Abstract The autonomous driving community has witnessed a rapid growth in approaches that embrace an end-to-end algorithm framework, utilizing raw sensor input …

Wiley 旗下一区 Top 期刊编委集体辞职!难道OA真的才是大势所趋?

【SciencePub学术】Wiley作为和Springer Nature、Elsevier并驾齐驱的三大出版商之一,在不久前又被爆出,其旗下一本稳定检索了53年的老牌期刊《Philosophy & Public Affairs》,编委集体辞职! 其实,这已经不是Wiley出…

CmsEasy逻辑漏洞--零元购

CmsEasy逻辑漏洞--零元购 选择购买MackBook 购买成功后会员中心发现多出8100快钱 然后就可以正常购买了

@antv/x6 利用interacting方法来设置禁止结点移动的方法实现。

1、官网有个设置说明。 https://x6.antv.antgroup.com/api/graph/graph 2、然后有可行的方法一: let graph new Graph({container: document.getElementById(container),interacting: function (cellView) {if (cellView.cell.getData() ! undefined && …

行为型设计模式2:观察者/职责链/中介者/访问者

设计模式:观察者/职责链/中介者/访问者 (qq.com)

【Android Studiio】default activity 原生安卓和uniapp默认启动分析(uniapp添加MainActivity)

文章目录 思路: 一、原生安卓二、uniapp三、在uni-app项目中,如果你想要加入自定义的MainActivity(例如Android平台) 探究方向:找到Default Activity 思路: 在Android开发中,"default ac…

谷粒商城实战记录-虚拟机开启密码认证登录

文章目录 一,虚拟机无法用用户名密码登录二,解决方案1,修改配置2,重启sshd服务3,测试SSH登录注意事项结论 参考文献 一,虚拟机无法用用户名密码登录 当使用Vagrant创建和管理虚拟机时,通常会通…

以太网ICMP测试实验

目录 一.概述 1.1IP协议 1.1.1IP协议简介 1.1.2IP协议首部报文格式 1.2ICMP协议 1.2.1ICMP协议简介 1.2.2ICMP报文格式 二.实验任务 三.模块设计 3.1总体模块设计 3.2ICMP模块设计 3.2.1icmp_rx 模块 3.2.2icmp_tx模块 四.modelsim仿真 4.1icmp_rx模块仿真 4.2i…

完美平替navicat的数据库软件DBeaver,免费开源,功能强大,使用简单

DBeaver Community 是一个免费的跨平台数据库工具,适用于开发人员、数据库管理员、分析师和所有与数据打交道的人。它支持所有流行的 SQL 数据库,如 MySQL、MariaDB、PostgreSQL、SQLite、Apache Family 等 1.到官网下载win版本直接安装 https://dbeav…

从一到无穷大 #32 TimeCloth,云上的快速 Point-in-Time Recovery

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言解决方案FAST FINE-GRAINED PITRLog FilterInter-Record Dependency ResolutionL…

全球氢燃料电池汽车市场规划预测:未来六年CAGR为44.4%

一、引言 随着全球能源转型和环保意识的提升,氢燃料电池汽车作为清洁能源汽车的重要组成部分,其市场潜力日益凸显。本文旨在探索氢燃料电池汽车行业的发展趋势、潜在商机及其未来展望。 二、市场趋势 全球氢燃料电池汽车市场的增长主要受全球环保政策推…

springboot辽B代驾管理系统论文源码调试讲解

2 相关技术 2.1 MySQL数据库 本研究与开发的应用程序在数据操作中难以预料,有时候甚至产生变化。没有办法直接在Word中写数据信息,这不但不安全,并且难以达到应用程序的功能。想要实现所需要的文档存储功能,务必选择专业数据库存…

奥运会Ⅲ--AI风险矩阵

问满屋子的人工智能专家:“我们如何知道我们的人工智能是否安全可靠?”你可能会得到十几个不同的答案,每个答案都比上一个更复杂。似乎不知何故,在 OpenAI 成为地球上增长最快的公司一年零几个月后,每个人都是 LLM&…