负载均衡集群——LVS

news2024/11/24 16:35:03

目录

1.LVS简介

2.LVS体系结构

3.LVS相关术语

4. LVS工作模式

5. LVS调度算法

6.LVS集群介绍

6.1 LVS-DR模式

6.2  LVS – NAT 模式

 6.3 LVS – TUN 模式

7.LVS 集群构建

7.1 LVS/NAT 模式配置

实验操作步骤

步骤 1 Nginx1 和 Nginx2 配置

步骤 2 安装和配置 LVS

步骤 3 检查验证 LVS 配置

附加任务:尝试将 LVS 的算法修改加权轮询。

步骤 1 修改 LVS 配置

步骤 2 修改两台 RS 的权重

7.2LVS/DR 模式配置

步骤 1 Nginx1 和 Nginx2 配置

步骤 2 LVS 预配置

步骤 3 LVS 配置

步骤 4 检查验证 LVS 配置


1.LVS简介

        LVS是 Linux Virtual Server 的简称,也就是 Linux 虚拟服务器 , 是一个由章文嵩博士发起的自由软件项 目,它的官方站点是 www.linuxvirtualserver.org 。现在 LVS 已经是 Linux 标准内核的一部分,在 Linux2.4内核以前,使用 LVS 时必须要重新编译内核以支持 LVS 功能模块,但是从 Linux2.4 内核以后,已 经完全内置了LVS 的各个功能模块,无需给内核打任何补丁,可以直接使用 LVS 提供的各种功能。 使用LVS 技术要达到的目标是:通过 LVS 提供的负载均衡技术和 Linux 操作系统实现一个高性能、高可用 的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
        LVS自从 1998 年开始,发展到现在已经是一个比较成熟的技术项目了。可以利用 LVS 技术实现高可伸缩 的、高可用的网络服务,例如WWW 服务、 Cache 服务、 DNS 服务、 FTP 服务、 MAIL 服务、视频 / 音频点 播服务等等,有许多比较著名网站和组织都在使用LVS 架设的集群系统,例如: Linux 的门户网站( www.linux.com )、向 RealPlayer 提供音频视频服务而闻名的 Real 公司、( www.real.com )、全球最大的开 源网站(sourceforge.net )等。

2.LVS体系结构

        使用LVS 架设的服务器集群系统有三个部分组成:最前端的负载均衡层,用 Load Balancer 表示,中间的服务器群组层,用Server Array 表示,最底端的数据共享存储层,用 Shared Storage 表示。
        Load Balancer层:位于整个集群系统的最前端,有一台或者多台负载调度器( Director Server ) 组成,LVS 模块就安装在 Director Server 上,而 Director 的主要作用类似于一个路由器,它含有完成 LVS 功能所设定的路由表,通过这些路由表把用户的请求分发给Server Array 层的应用服务( Real Server)上。同时,在 Director Server 上还要安装对 Real Server 服务的监控模块 Ldirectord ,此模块用于监测各个Real Server 服务的健康状况。在 Real Server 不可用时把它从 LVS 路由表中剔除,恢复时重新加入。
        Server Array层:由一组实际运行应用服务的机器组成, Real Server 可以是 WEB 服务器、 MAIL 服务器、FTP 服务器、 DNS 服务器、视频服务器中的一个或者多个,每个 Real Server 之间通过高速的 LAN 或分布在各地的WAN 相连接。在实际的应用中, Director Server 也可以同时兼任 Real Server 的角色。
        Shared Storage层:是为所有 Real Server 提供共享存储空间和内容一致性的存储区域,在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性,一般可以通过NFS 网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如 Red hat GFS 文件系统,oracle 提供的 OCFS2 文件系统等。

3.LVS相关术语

为了方便大家探讨 LVS 技术, LVS 社区提供了一个命名的约定,内容如下表

 

4. LVS工作模式

        当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server 节点,而 Real Server节点如何返回数据给用户,是 IPVS 实现的重点技术, IPVS 实现负载均衡机制有三种,分别是NAT、 TUN DR
        VS/NAT: 即( Virtual Server via Network Address Translation 也就是网络地址翻译技术实现虚拟服务器,当用户请求到达调度器时,调度器将请求报文的目标地址 (即虚拟IP 地址)改写成选定的 Real Server 地址,同时报文的目标端口也改成选定的 Real Server 的相应端口,最后将报文请求发送到选定的Real Server 。在服务器端得到数据后, Real Server 返回数据给用户 时,需要再次经过负载调度器将报文的源地址和源端口改成虚拟 IP 地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。
        VS/TUN :即( Virtual Server via IP Tunneling 也就是IP 隧道技术实现虚拟服务器。它的连接调度和管理与 VS/NAT 方式一样,只是它的报文转发方法不同,VS/TUN 方式中,调度器采用 IP 隧道技术将用户请求转发到某个 Real Server ,而这个 Real Server将直接响应用户的请求,不再经过前端调度器,此外,对Real Server 的地域位置没有要求,可以和Director Server位于同一个网段,也可以是独立的一个网络。因此,在 TUN 方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。
        VS/DR: 即( Virtual Server via Direct Routing 也就是用直接路由技术实现虚拟服务器。它的连接调度和管理与VS/NAT VS/TUN 中的一样,但它的报文转发方法又有不同,VS/DR 通过改写请求报文的 MAC 地址,将请求发送到 Real Server ,而 Real Server将响应直接返回给客户,免去了VS/TUN 中的 IP 隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server Real Server 都有一块网卡连在同一物理网段上。

5. LVS调度算法

固定调度算法: rr wrr dh sh
动态调度算法: wlc lblc lblcr SED NQ (后两种官方站点没提到)
详细讲述最常用的四种调度算法:
        轮询调度(Round Robin “轮询 调度也叫 1:1 调度,调度器通过 轮询 调度算法将外部用户请求按顺序 1:1 的分配到集群中的每个Real Server上,这种算法平等地对待每一台 Real Server ,而不管服务器上实际的负载状况和连接状态。
        加权轮询调度(Weighted Round Robin “加权轮询 调度算法是根据 Real Server 的不同处理能力来调度访问请求。可以对每台 Real Server 设置不同的调度权值,对于性能相对较好的Real Server 可以设置较高的权值,而对于处理能力较弱的 Real Server,可以设置较低的权值,这样保证了处理能力强的服务器处理更多的访问流量。充分合理的利用了服务器资源。同时,调度器还可以自动查询Real Server 的负载情况,并动态地调整其权值。
        最少链接调度(Least Connections 最少连接 调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“ 最小连接 调度算法可以较好地均衡负载。
        加权最少链接调度(Weighted Least Connections 加权最少链接调度 最少连接调度 的超集,每个服务节点可以用相应的权值表示其处理能力,而系统管理员可以动态的设置相应的权值,缺省权值为1 ,加权最小连接调度在分配新连接请求时尽可能使服务节点的已建立连接数和其权值成正比。

6.LVS集群介绍

6.1 LVS-DR模式

LVS-DR模式工作原理   

        首先,来自客户端计算机CIP 的请求被发送到 Director VIP 。然后 Director 使用相同的 VIP 目的 IP 地址将请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(不经过director ),并且以此回复数据包使用的目的 VIP 地址作为源 IP 地址。因此,实际上是客户计算机被“ 欺骗 了,客户计算机始终认为它正与同一台计算机对话,而实际上它正在发送请求数据包给一台计算机(LB ),并从另一台计算机( RS )接收回复的数据包。

6.2  LVS – NAT 模式

(a). 当用户请求到达 Director Server ,此时请求的数据报文会先到内核空间的 PREROUTING 链。 此时报文的源IP CIP ,目标 IP VIP
(b). PREROUTING 检查发现数据包的目标 IP 是本机,将数据包送至 INPUT
(c). IPVS 比对数据包请求的服务是否为集群服务,若是,修改数据包的目标 IP 地址为后端服务器 IP ,然后将数据包发至POSTROUTING 链。 此时报文的源 IP CIP ,目标 IP RIP
(d). POSTROUTING 链通过选路,将数据包发送给 Real Server
(e). Real Server 比对发现目标为自己的 IP ,开始构建响应报文发回给 Director Server 。 此时报文的源 IP为RIP ,目标 IP CIP
(f). Director Server 在响应客户端前,此时会将源 IP 地址修改为自己的 VIP 地址,然后响应给客户端。 此时报文的源IP VIP ,目标 IP CIP

 6.3 LVS – TUN 模式

(a) 当用户请求到达 Director Server ,此时请求的数据报文会先到内核空间的 PREROUTING 链。 此时报文的源IP CIP ,目标 IP VIP
(b) PREROUTING 检查发现数据包的目标 IP 是本机,将数据包送至 INPUT
(c) IPVS 比对数据包请求的服务是否为集群服务,若是,在请求报文的首部再次封装一层 IP 报文,封装源IP为为 DIP ,目标 IP RIP 。然后发至 POSTROUTING 链。 此时源 IP DIP ,目标 IP RIP
(d) POSTROUTING 链根据最新封装的 IP 报文,将数据包发至 RS (因为在外层封装多了一层 IP 首部,所以可以理解为此时通过隧道传输)。 此时源IP DIP ,目标 IP RIP
(e) RS 接收到报文后发现是自己的 IP 地址,就将报文接收下来,拆除掉最外层的 IP 后,会发现里面还有一层IP 首部,而且目标是自己的 lo 接口 VIP ,那么此时 RS 开始处理此请求,处理完成之后,通过 lo 接口送给eth0网卡,然后向外传递。 此时的源 IP 地址为 VIP ,目标 IP CIP
(f) 响应报文最终送达至客户端

7.LVS 集群构建

7.1 LVS/NAT 模式配置

        本实验由四台 Linux构成,分别是 Client、LVS、Ngxin1 和 Nginx2,其中 LVS 的 VIP 为192.168.186.50/24、DIP 为 192.168.186.100/24,Nginx1 的 RIP 为 192.168.186.101/24,Nginx2 的 RIP 为192.168.186.102/24

实验操作步骤

步骤 1 Nginx1 和 Nginx2 配置

[root@Nginx2 ~]# yum install nginx -y
[root@Nginx2 ~]# systemctl start nginx
[root@Nginx2 ~]# mkdir -p /data/nginx
[root@Nginx2 ~]# touch  /data/nginx/index.html
[root@Nginx1 ~]# cat /etc/nginx/conf.d/vhost.conf 
server{
 listen 80;
 server_name www.test.com;
 root /data/nginx;
 index index.html;

}
[root@Nginx1 ~]# curl 192.168.186.102
hello,nginx2
[root@Nginx2 ~]# curl 192.168.186.101
hello,nginx1

在 LVS 虚拟机上开启路由转发功能,具体参考命令如下:
 sed -i "s/ip_forward=0/ip_forward=1/g" /etc/sysctl.conf
  sysctl -p | grep net.ipv4.ip_forward
  sysctl -a | grep net.ipv4.ip_forward
配置完成后,测试是否能够正常访问 Nginx1 和 Nginx2,具体如下:
[root@LVS ~]# curl 192.168.186.101
hello,nginx1
[root@LVS ~]# curl 192.168.186.102
hello,nginx2

步骤 2 安装和配置 LVS

yum install -y ipvsadm
等待安装完成后,创建 ipvsadm 启动时所需的配置文件:
 touch /etc/sysconfig/ipvsadm
然后使用启动该服务,并查看该服务是否启动正常,具体如下:
[root@LVS ~]# systemctl enable ipvsadm --now
[root@LVS ~]# systemctl status ipvsadm

如果服务启动正常,使用以下命令创建算法为轮询的集群:
ipvsadm -A -t 192.168.186.50:80 -s rr
再将 Nginx1 和 Nginx2 添加为后端 RS,具体命令如下:
ipvsadm -a -t 192.168.186.50:80 -r 192.168.186.101 -m
ipvsadm -a -t 192.168.186.50:80 -r 192.168.186.102 -m
配置完成后,检查和核实配置是否生效:
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.186.50:80 rr
  -> 192.168.186.101:80           Masq    1      0          0         
  -> 192.168.186.102:80           Masq    1      0          0  

步骤 3 检查验证 LVS 配置

在 LVS 所在的 ECS 上,多次通过 LVS VIP 访问 web 服务,可以查看到以下现象

附加任务:尝试将 LVS 的算法修改加权轮询。

步骤 1 修改 LVS 配置

使用以下命令将当前 LVS 的算法修改为加权轮询:
 ipvsadm -E -t 192.168.186.50:80 -s wrr
修改完成后,查看是否生效,具体如下:

步骤 2 修改两台 RS 的权重

使用以下命令,将 Nginx1 的权重修改为 2:
[root@LVS ~]# ipvsadm -e -t 192.168.186.50:80 -r 192.168.186.101 -m -w 2
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.186.50:80 wrr
-> 192.168.186.101:80 Masq 2 0 0
-> 192.168.186.102:80 Masq 1 0 0

步骤 3 检查验证 LVS 配置
登录 Client 虚拟机,多次通过 LVS VIP 访问 web 服务,可以查看到以下现象:

 

根据上图,可得出 LVS 的算法已修改为加权轮询

7.2LVS/DR 模式配置

        本实验共使用四台虚拟机,其中一台配置为 LVS 服务器,两台用于 Nginx 服务器的搭建,剩余一台为 Client。其中 Nginx 服务器可以和上一实验复用,两台 Nginx 服务器和 LVS 服务器处于同一子网中,客户端 处于另外一个子网。Nginx 服务器和 LVS 服务器配置 dummy 类型的接口接口用于承载 VIP

步骤 1 Nginx1 Nginx2 配置

Nginx1 Nginx2 中的 Nginx 服务相关配置和上实验保持一致即可。
两台 Nginx 上都需完成以下网络相关的配置。
网络需增加 VIP 的相关配置,具体命令如下:
[root@Nginx1 ~]# nmcli connection add type dummy ifname dummy2 ipv4.method manual
ipv4.addresses 192.168.186.50/32
[root@Nginx2 ~]# nmcli connection add type dummy ifname dummy2 ipv4.method manual
ipv4.addresses 192.168.186.50/32
将 RIP 的网关地址修改为路由器接口地址,参考命令如下:
[root@Nginx1 ~]# nmcli connection modify ens33 ipv4.gateway 192.168.186.1
[root@Nginx1 ~]# nmcli connection down ens33
[root@Nginx1 ~]# nmcli connection up ens33
[root@Nginx2 ~]# nmcli connection modify ens33 ipv4.gateway 192.168.186.1
[root@Nginx2 ~]# nmcli connection down ens33
[root@Nginx2 ~]# nmcli connection up ens33
完成网络配置后,修改相应的 arp 内核配置,具体命令如下:
[root@Nginx1 ~]# cat >> /etc/sysctl.conf << EOF
> net.ipv4.conf.all.arp_ignore = 1
> net.ipv4.conf.all.arp_announce = 2
> net.ipv4.conf.dummy2.arp_ignore = 1
> net.ipv4.conf.dummy2.arp_announce = 2
> EOF
[root@Nginx2 ~]# cat >> /etc/sysctl.conf << EOF
> net.ipv4.conf.all.arp_ignore = 1
> net.ipv4.conf.all.arp_announce = 2
> net.ipv4.conf.dummy2.arp_ignore = 1
> net.ipv4.conf.dummy2.arp_announce = 2
> EOF

步骤 2 LVS 预配置

如果本实验中的 LVS 服务器和上实验复用,则需删除残留配置。
删除上实验中增加的 LVS 相关配置,具体命令为:
[root@LVS ~]# ipvsadm -D -t 192.168.186.50:80
清理完成后,新增 VIP 相关配置,具体命令如下:
[root@LVS ~]# nmcli connection add type dummy ifname dummy2 ipv4.method manual
ipv4.addresses 192.168.186.50/32
如果需要,请将 DIP 网关配置为路由器接口地址,参考命令如下:
[root@LVS ~]# nmcli connection modify ens33 ipv4.gateway 192.168.186.1
[root@LVS ~]# nmcli connection down ens33
[root@LVS ~]# nmcli connection up ens33
如果是新创建的 LVS 服务器,则仅需要添加 VIP 和修改网关地址即可

步骤 3 LVS 配置

然后使用以下命令,添加相关配置:
[root@LVS ~]# ipvsadm -A -t 192.168.186.50:80 -s rr
[root@LVS ~]# ipvsadm -a -t 192.168.186.50:80 -r 192.168.186.101
[root@LVS ~]# ipvsadm -a -t 192.168.186.50:80 -r 192.168.186.102
添加完成后,查看具体配置,具体如下:
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.186.50:80 rr
-> 192.168.186.101:80 Route 1 0 0
-> 192.168.186.102:80 Route 1 0 0

步骤 4 检查验证 LVS 配置

登录 Client 虚拟机,多次通过 LVS VIP 访问 web 服务,可以查看到以下现象:
可以看出, LVS 服务器以轮询方式分别向 Nginx1 Nginx2 转发请求,并将页面返回给客户端。

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

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

相关文章

R语言使用installr包对R包进行整体迁移

今天分享一个R语言的实用小技巧&#xff0c;如果咱们重新安装了电脑&#xff08;我重装了电脑&#xff09;或者因为需要卸载旧版本的R软件&#xff0c;安装新版本的R&#xff0c;那么必然会造成R包的库缺失&#xff0c;需要重新下载&#xff0c;有些还不是官方的R包&#xff0c…

如何从零开始创建React应用:简易指南

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

认识异常(1)

❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&a…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十三 简单去除图片水印效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十三 简单去除图片水印效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十三 简单去除图片水印效果 一、简单介绍 二、简单去除图片水印效果实现原理 三、简单去除图片水印效果案例…

stm32实现hid键盘

前面的cubelmx项目配置参考 stm32实现hid鼠标-CSDN博客https://blog.csdn.net/anlog/article/details/137814494?spm1001.2014.3001.5502两个项目的配置完全相同。 代码 引用 键盘代码&#xff1a; 替换hid设备描述符 先屏蔽鼠标设备描述符 替换为键盘设备描述符 修改宏定…

Springboot框架——3.整合SpringMVC

1.修改端口号&#xff1a; 在application.properties中添加如下配置即可&#xff1a; server.port8088 2.静态资源访问&#xff1a; 首先打开ResourceProperties这个类的源码&#xff1a; 将静态资源放到类中默认位置即可实现访问&#xff1a; http://localhost:8088/erth.jp…

Docker安装xxl-job分布式任务调度平台

文章目录 Docker安装xxl-job分布式任务调度平台1.xxl-job介绍2. 初始化“调度数据库”3、docker挂载运行xxl-job容器3.1、在linux的opt目录下创建xxl_job文件夹&#xff0c;并在里面创建logs文件夹和application.properties文件3.2、配置application.properties文件&#xff0c…

springboot整合dubbo实现RPC服务远程调用

一、dubbo简介 1.什么是dubbo Apache Dubbo是一款微服务开发框架&#xff0c;他提供了RPC通信与微服务治理两大关键能力。有着远程发现与通信的能力&#xff0c;可以实现服务注册、负载均衡、流量调度等服务治理诉求。 2.dubbo基本工作原理 Contaniner:容器Provider&#xf…

安全中级-环境安装(手动nginx以及自动安装php,mysql)

为了方便大家跟bilibili课程&#xff0c;出了第一节环境 bilibili搜凌晨五点的星可以观看相关的教程 一、环境 ubentu 二、nginx手动安装 2.1第一步 wget https://nginx.org/download/nginx-1.24.0.tar.gz 2.2下载好安装包以后解压 tar -zxvf nginx-1.21.6.tar.gz2.3安…

Python零基础从小白打怪升级中~~~~~~~TCP网络编程

TCP网络编程 一、什么是TCP协议 TCP( Transmission control protocol )即传输控制协议&#xff0c;是一种面向连接、可靠的数据传输协议&#xff0c;它是为了在不可靠的互联网上提供可靠的端到端字节流而专门设计的一个传输协议。 面向连接 &#xff1a;数据传输之前客户端和…

文心一言用户数突破2亿 百度官宣三大AI开发神器

在日益激烈的竞争中&#xff0c;百度正在中国AI市场努力保持领导者地位&#xff0c;文心一言用户规模突破2亿&#xff0c;较去年年底翻了一番。 4月16日周二&#xff0c;以“创造未来”为主题的Create 2024百度AI开发者大会在深圳国际会展中心举办。百度CEO李彦宏在会议上指出…

如何用JAVA如何实现Word、Excel、PPT在线前端预览编辑的功能?

背景 随着信息化的发展&#xff0c;在线办公也日益成为了企业办公和个人学习不可或缺的一部分&#xff0c;作为微软Office的三大组成部分&#xff1a;Word、Excel和PPT也广泛应用于各种在线办公场景&#xff0c;但是由于浏览器限制及微软Office的不开源等特性&#xff0c;导致…

PLSQL中文乱码问题 + EZDML导入数据库模型乱码

PLSQL中文乱码问题 EZDML导入数据库模型乱码 查询数据库字符集 select userenv(language) from dual;查询本地字符集编码 select * from V$NLS_PARAMETERS;理论上 数据库字符集 跟 本地字符集编码 是一致的 本地字符集编码需要拼接字段值 NLS_LANGUAGE NLS_TERRITORY NLS…

PySpark预计算ClickHouse Bitmap实践

1. 背景 ClickHouse全称是Click Stream&#xff0c;Data WareHouse&#xff0c;是一款高性能的OLAP数据库&#xff0c;既使用了ROLAP模型&#xff0c;又拥有着比肩MOLAP的性能。我们可以用ClickHouse用来做分析平台快速出数。其中的bitmap结构方便我们对人群进行交并。Bitmap位…

【muzzik 分享】关于 MKFramework 的设计想法

MKFramework是我个人维护持续了几年的项目&#xff08;虽然公开只有一年左右&#xff09;&#xff0c;最开始由于自己从事QP类游戏开发&#xff0c;我很喜欢MVVM&#xff0c;于是想把他做成 MVVM 框架&#xff0c;在论坛第一个 MVVM 框架出来的时候&#xff0c;我的框架已经快完…

uniapp--登录和注册页面-- login

目录 1.效果展示 2.源代码展示 测试登录 login.js 测试请求 request.js 测试首页index.js 1.效果展示 2.源代码展示 <template><view><f-navbar title"登录" navbarType"4"></f-navbar><view class"tips"><…

基于JSP的电器网上订购系统

本系统利用现在比较广泛的JSP结合后台SpringMybatisAjax编写程序的方式实现的。 在意见箱板块中&#xff0c;运用JSP通过JDBC技术和后台的数据库进行交互的方式将数据信息反馈给用户和管理员&#xff1b;在登录系统中&#xff0c;使用Ajax技术实现异步交互&#xff0c;在不更新…

VulBG: 构建行为图加强基于深度学习的漏洞检测模型

近年来&#xff0c;人们提出了基于深度学习&#xff08;DL&#xff09;的漏洞检测系统&#xff0c;用于从源代码中自动提取特征。这些方法在合成数据集上可以实现理想的性能&#xff0c;但在检测真实世界的漏洞数据集时&#xff0c;准确率却大幅下降。此外&#xff0c;这些方法…

基于Zookeeper 简单实现分布式任务协调组件

一、什么是 Zookeeper ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是Hadoop和Hbase的重要组件。 它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维…

Java复习第二十天学习笔记(过滤器Filter),附有道云笔记链接

【有道云笔记】二十 4.8 过滤器Filter https://note.youdao.com/s/dSofip3f 一、为什么要使用过滤器 项目开发中&#xff0c;经常会用到重复代码的实现。 1、请求每个servlet都要设置编码 2、判断用户是否登录&#xff0c;只有登录了才有操作权限。 二、过滤器相关Api int…