HAproxy+keepalived高可用配置搭建

news2024/9/23 9:28:17

目录

一、概述

(一)简介

(二)核心功能

(三)关键特性

(四)应用场景

二、安装

1)拓补图

2)配置

(一)内核配置

(二)编译安装

(三)建立配置文件

(四)添加为系统服务

(五)添加3和5运行级别下自启动

(六)启动haproxy   

三、调度算法

四、配置文件

五、负载均衡

(一)7层负载

1、配置负载

2、配置监控页面

(二)4层负载

六、配置syslog日志

七、安装web服务进行访问测试

八、keepalive+haproxy实现高可用

1、实验拓补:

2、实验要求:

3、keepalived配置

4、haproxy配置

5、测试

1)使用命令进行查看

2)使用网页进行测试

3)停掉服务进行查看

4)重启主的服务再次进行检查

总结


一、概述

       HAProxy是一款开源的高性能负载均衡器和代理服务器。它可以将传入的请求分发到多台后端服务器上,以提高系统的负载能力和可用性。HAProxy支持多种负载均衡算法,如轮询、加权轮询、源IP哈希等,可以根据实际需求选择合适的算法。

       HAProxy不仅仅是一个负载均衡器,它还提供了许多其他功能。它可以进行SSL终端代理,实现HTTPS的负载均衡;还可以进行内容转换和过滤,并提供高级的HTTP请求和响应管理功能。HAProxy还支持健康检查,可以自动剔除故障的后端服务器,并动态调整请求的分发策略。

       HAProxy具有高性能和低延迟的优势,可以处理大量的并发请求。它支持多线程和多进程模型,可以利用多核处理器的性能。此外,HAProxy还提供了详细的统计信息和日志记录,以便进行分析和监控。

       由于其可靠性和灵活性,HAProxy被广泛应用于各种场景,包括Web应用程序、API网关、数据库负载均衡、云服务等。它是一个强大而可靠的负载均衡解决方案,为系统的可扩展性和可靠性提供了重要支持。

(一)简介

    HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上(CentOS、Ubuntu、Debian、OpenSUSE、Fedora、麒麟、欧拉、UOS)。

    HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。HAProxy具备媲美商用负载均衡器的性能和稳定性。

(二)核心功能

        负载均衡:L4和L7两种模式,支持RR/静态RR/LC/IP Hash/URI Hash/URL_PARAM Hash/HTTP_HEADER Hash等丰富的负载均衡算法

        健康检查:支持TCP和HTTP两种健康检查模式

        会话保持:对于未实现会话共享的应用集群,可通过Insert Cookie/Rewrite Cookie/Prefix Cookie,以及上述的多种Hash方式实现会话保持

        SSL:HAProxy可以解析HTTPS协议,并能够将请求解密为HTTP后向后端传输
        HTTP请求重写与重定向

        监控与统计:HAProxy提供了基于Web的统计信息页面,展现健康状态和流量数据。基于此功能,使用者可以开发监控程序来监控HAProxy的状态

(三)关键特性

        采用单线程、事件驱动、非阻塞模型,减少上下文切换的消耗,能在1ms内处理数百个请求。并且每个会话只占用数KB的内存。

        大量精细的性能优化,如O(1)复杂度的事件检查器、延迟更新技术、Single-buffereing、Zero-copy forwarding等等,这些技术使得HAProxy在中等负载下只占用极低的CPU资源。

        HAProxy大量利用操作系统本身的功能特性,使得其在处理请求时能发挥极高的性能,通常情况下,HAProxy自身只占用15%的处理时间,剩余的85%都是在系统内核层完成的。

        HAProxy作者在8年前(2009)年使用1.4版本进行了一次测试,单个HAProxy进程的处理能力突破了10万请求/秒,并轻松占满了10Gbps的网络带宽。

(四)应用场景

    高并发要求较高的场合下

  1. 负载均衡:HAProxy是一款高性能的负载均衡器,可以将传入的请求平均分发到多个后端服务器上,以提高系统的可用性和扩展性。它支持多种负载均衡算法,可以根据实际需求选择合适的算法。

  2. 高可用性:通过HAProxy的健康检查和自动剔除故障服务器的功能,可以实现高可用性的系统架构。当后端服务器出现故障时,HAProxy可以自动将请求重新分发到其他正常的服务器上,保证服务的连续性和稳定性。

  3. 代理服务器:HAProxy可以作为代理服务器,提供SSL终端代理和HTTP代理等功能。它可以处理HTTPS流量,对传入或传出的HTTP流量进行内容转换和过滤。这使得HAProxy成为一个强大的代理服务器,可以用于加密传输和安全访问控制。

  4. Web应用程序加速:通过HAProxy的缓存和压缩功能,可以加速Web应用程序的响应速度。HAProxy可以缓存静态内容,减轻后端服务器的负载,并在适当的情况下对传出的内容进行压缩,减少网络传输的时间和带宽消耗。

  5. API网关:HAProxy可以作为API网关,对传入的API请求进行路由、转换和限流等操作。它可以将请求发送到适当的后端服务,并对请求进行验证和授权。这使得HAProxy成为构建可扩展和安全的API架构的理想选择。

二、安装

实验前提:

1)拓补图

2)配置

虚拟机3台

搭建haproxy服务

haproxy:192.168.11.111

搭建web服务

Nginx1:192.168.11.112

Nginx2:192.168.11.112

(一)内核配置

net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65023
net.ipv4.tcp_max_syn_backlog = 10240
net.ipv4.tcp_max_tw_buckets = 400000
net.ipv4.tcp_max_orphans = 60000
net.ipv4.tcp_synack_retries = 3
net.core.somaxconn = 10000

注:在进行实验的环境下可不进行配置,但是在真实环境下,需要更改内核参数进行配置

(二)编译安装

wget https://www.haproxy.org/download/1.7/src/haproxy-1.7.2.tar.gz

tar xf haproxy-1.7.2.tar.gz 
cd haproxy-1.7.2/
ls

 这里可以看到不需要进行配置路径,直接开始编译安装,在编译安装时进行指定路径

make PREFIX=/usr/local/haproxy TARGET=linux2628 && make install PREFIX=/usr/local/haproxy
- linux22     for Linux 2.2
- linux24     for Linux 2.4 and above (default)
- linux24e    for Linux 2.4 with support for a working epoll (> 0.21)
- linux26     for Linux 2.6 and above
- linux2628   for Linux 2.6.28, 3.x, and above (enables splice and tproxy)

 注:这段文本描述的是在编译HAProxy时可以选择的操作系统类型。每个选项对应着不同的Linux内核版本和功能支持。以下是对每个选项的简要解释:

- `linux22`:适用于Linux 2.2版本的内核。
- `linux24`:适用于Linux 2.4版本的内核及以上版本,这也是默认的选项。
- `linux24e`:适用于Linux 2.4版本的内核,并支持工作中的epoll(版本需大于0.21)。
- `linux26`:适用于Linux 2.6版本的内核及以上版本。
- `linux2628`:适用于Linux 2.6.28版本、3.x版本及以上的内核,启用了splice和tproxy功能。

选择合适的操作系统类型可以确保HAProxy在特定的Linux内核上能够正常运行,并充分利用特定版本内核的功能。根据实际情况,你可以选择最适合你的系统的选项来编译HAProxy。 

(三)建立配置文件

    从haproxy的源码包中的examples下的init.haproxy中获得配置文件的路径

vim /root/haproxy-1.7.2/examples/init.haproxy

我们在 /etc/ 下并不存在这个目录和这个文件,所以需要手动对文件进行创建

mkdir /etc/haproxy
vim /etc/haproxy/haproxy.cfg

配置文件内容: 

global #全局属性
    daemon  #以daemon方式在后台运行
    maxconn 256  #这里指最大同时256连接(haproxy最大支持10万并发,256进行实验完全够用)
    pidfile /usr/local/haproxy/run/haproxy.pid  #指定保存HAProxy进程号的文件,路径为编译时指定的路径

defaults #默认参数
    mode http  #http模式
    timeout connect 5000ms  #连接server端超时5s
    timeout client 50000ms  #客户端响应超时50s
    timeout server 50000ms  #server端响应超时50s

frontend Nginx_server #前端服务Nginx_server
    bind *:80  #监听80端口,默认端口即可
    default_backend Nginx_servers  #请求转发至名为"Nginx_servers"的后端服务

backend Nginx_servers #后端服务Nginx_servers
    server server1 192.168.11.112:80 maxconn 32  #backend Nginx_servers中有一个叫server1后端服务,起在本机的80端口,HAProxy>同时最多向这个服务发起32个连接
    server server2 192.168.11.113:80 maxconn 32  #backend Nginx_servers中有一个叫server2后端服务,起在本机的80端口,HAProxy>同时最多向这个服务发起32个连接

(四)添加为系统服务

cp /root/haproxy-1.7.2/examples/haproxy.init /etc/init.d/haproxy 
vim /etc/init.d/haproxy 

 赋予执行权限并查看

chmod +x /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy
chkconfig --list

(五)添加3和5运行级别下自启动

chkconfig --level 35 haproxy on
chkconfig --list 

(六)启动haproxy   

#启动命令
service haproxy start
#停止命令
service haproxy  stop
#重启命令
service haproxy  restart  
#平滑加载配置文件
service haproxy reload

systemctl daemon-reload

命令解析:

systemctl daemon-reload是一个系统命令,用于重新加载systemd单位文件的更改。

当我们对系统服务的配置文件进行修改时,例如在/etc/systemd/system/目录下添加、修改或删除了服务文件,我们需要使用systemctl daemon-reload命令来通知systemd重新加载这些更改,以便systemd可以识别和适用新的配置。这样修改后的配置才会生效。

注意:只有在修改了systemd单位文件后,才需要运行systemctl daemon-reload。

注:除了使用service的方式启动haproxy也可以使用systemctl进行启停

三、调度算法

    roundrobin:表示简单的轮询。

    static-rr:表示根据权重。

    leastconn:表示最少连接者先处理。

    source:表示根据请求的源 IP,类似 Nginx 的 IP_hash 机制。

    ri:表示根据请求的 URI。

    rl_param:表示根据 HTTP 请求头来锁定每一次 HTTP 请求。

    rdp-cookie(name):表示根据据 cookie(name)来锁定并哈希每一次 TCP 请求。

四、配置文件

    配置项解析:

global #全局属性
    daemon  #以daemon方式在后台运行
    maxconn 256  #这里指最大同时256连接(haproxy最大支持10万并发,256进行实验完全够用)
    pidfile /usr/local/haproxy/run/haproxy.pid  #指定保存HAProxy进程号的文件,路径为编译时指定的路径

defaults #默认参数
    mode http  #http模式
    timeout connect 5000ms  #连接server端超时5s
    timeout client 50000ms  #客户端响应超时50s
    timeout server 50000ms  #server端响应超时50s

frontend Nginx_server #前端服务Nginx_server
    bind *:80  #监听80端口,默认端口即可
    default_backend Nginx_servers  #请求转发至名为"Nginx_servers"的后端服务

backend Nginx_servers #后端服务Nginx_servers
    server server1 192.168.11.112:80 maxconn 32  #backend Nginx_servers中有一个叫server1后端服务,起在本机的80端口,HAProxy>同时最多向这个服务发起32个连接
    server server2 192.168.11.113:80 maxconn 32  #backend Nginx_servers中有一个叫server2后端服务,起在本机的80端口,HAProxy>同时最多向这个服务发起32个连接


########################################################################################
最大连接数maxconn
此参数根据应用的实际使用情况进行调整,推荐使用10240,同时“defaults”中的最大连接数的值不能超过“global”段中的定义
守护进程模式daemon
Haproxy 可以使用非守护进程模式启动,生产环境建议使用守护进程模式启动
负载均衡的并发进程数  nbproc
重试次数  retries
主动关闭http 请求选项
option http-server-close
timeout http-keep-alive
优化建议
建议与当前服务器CPU核数相等或为其2倍此参数主要用于对群集节点的检查,如果节点多,且并发量大,设置为2次或3次;在服务器节点不多的情况下,可以设置5次或6次
建议在生产环境中使用此选项,避免由于timeout 时间设置过长导致http连接堆积
长连接超时时间
http 请求超时时间timeout client
timeout http-request

    global:用于配置全局参数

    default:用于配置所有frontend和backend的默认属性

    frontend:用于配置前端服务(即HAProxy自身提供的服务)实例

    backend:用于配置后端服务(即HAProxy后面接的服务)实例组

    listen:frontend+backend的组合配置,可以理解成更简洁的配置方法

五、负载均衡

(一)7层负载

1、配置负载

vim /etc/haproxy/haproxy.cfg 

2、配置监控页面

在上述配置文件中添加如下内容:

listen stats                  #定义监控页面    
bind *:1080                   #绑定端口1080
stats refresh 30s             #每30秒更新监控数据    
stats uri /stats              #访问监控页面的uri    
stats realm HAProxy\ Stats    #监控页面的认证提示    
stats auth admin:admin        #监控页面的用户名和密码

(二)4层负载

        配置负载

global 
    daemon  
    maxconn 256  
    pidfile /usr/local/haproxy/run/haproxy.pid   #pid目录存在变动的话需要进行更改
 
 
defaults 
    mode tcp
    timeout connect 5000ms  
    timeout client 50000ms  
    timeout server 50000ms 
 
 
frontend http-in         #http-in需要更改 
    bind *:8080          #监听IP和端口,如有需要需进行更改
    default_backend servers  
 
 
backend servers
	balance  roundrobin  #轮询
	#balance  source     #保持会话 
    server server1 127.0.0.1:8000 maxconn 32  
server server2 127.0.0.1:8090 maxconn 32

注:需要注意的是在四层负载的情况下是不支持监控状态查询的

六、配置syslog日志

cd /etc/rsyslog.d/
ls

 

在这里可以看到没有存在的syslog日志文件,手动进行创建 

vim haproxy.conf
$ModLoad imudp
 
$UDPServerRun 514
$FileCreateMode 0644                          #日志文件的权限
$FileOwner root                               #日志文件的owner
local0.*     /var/log/haproxy.log             #local0接口对应的日志输出文件
local1.*     /var/log/haproxy_warn.log        #local1接口对应的日志输出文件

七、安装web服务进行访问测试

在Nginx1、Nginx2机器上各安装Nginx,haproxy使用命令进行测试

yum install -y nginx
echo nginx1 > /usr/share/nginx/html/index.html
systemctl start nginx
echo nginx2 > /usr/share/nginx/html/index.html
systemctl start nginx
curl 192.168.11.111
curl 192.168.11.111

 

 主机访问网站进行测试

 访问监控页面

curl 192.168.11.111/stats

主机访问 192.168.11.111:1080/stats

八、keepalive+haproxy实现高可用

1、实验拓补:

2、实验要求:

实验需要四台虚拟机进行配置

主和备安装keepalived和haproxy服务

master:192.168.11.111

backup:192.168.11.114

安装web服务

web1:192.168.11.112

web2:192.168.11.113

虚拟IP(VIP):192.168.11.200

3、keepalived配置

在master和backup机器上安装keepalived

yum install -y keepalived

更改主备的配置文件

 先做好备份文件

cd /etc/keepalived/
ls
cp keepalived.conf keepalived.conf.bak

编辑配置文件: 

主:master

vim keepalived.conf
global_defs {
   router_id LVS_DEVEL
}
#HAProxy健康检查配置
vrrp_script chk_haproxy {
    script "killall -0 haproxy"            #使用killall -0检查haproxy实例是否存在,性能高于ps命令
global_defs {
   router_id LVS_DEVEL
}
#HAProxy健康检查配置
vrrp_script chk_haproxy {
    script "killall -0 haproxy"            #使用killall -0检查haproxy实例是否存在,性能高于ps命令
global_defs {
   router_id LVS_DEVEL
}
#HAProxy健康检查配置
vrrp_script chk_haproxy {
    script "killall -0 haproxy"            #使用killall -0检查haproxy实例是否存在,性能高于ps命令
    interval 2                             #脚本运行周期
    weight 2                               #每次检查的加权权重值
}

vrrp_instance HA_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.11.200
    }
    track_script {
        chk_haproxy                        #对应的健康检查配置
    }
}

备:backup

这里使用scp远程传输过去即可,只需更改细节内容

scp keepalived.conf 192.168.11.114:/etc/keepalived/

 只需更改12行以及15行即可

4、haproxy配置

主:master

vim /etc/haproxy/haproxy.cfg 
global #全局属性
    daemon  #以daemon方式在后台运行
    maxconn 256  #这里指最大同时256连接(haproxy最大支持10万并发,256进行实验完全够用)
    pidfile /usr/local/haproxy/run/haproxy.pid  #指定保存HAProxy进程号的文件,路径为编译时指定的路径

defaults #默认参数
    mode http  #http模式
    timeout connect 5000ms  #连接server端超时5s
    timeout client 50000ms  #客户端响应超时50s
    timeout server 50000ms  #server端响应超时50s

frontend Nginx_server #前端服务Nginx_server
    bind *:80  #监听80端口,默认端口即可
    default_backend Nginx_servers  #请求转发至名为"Nginx_servers"的后端服务

backend Nginx_servers #后端服务Nginx_servers
    server server1 192.168.11.112:80 maxconn 32  #backend Nginx_servers中有一个叫server1后端服务,起在本机的80端口,HAProxy>同时最多向这个服务发起32个连接
    server server2 192.168.11.113:80 maxconn 32  #backend Nginx_servers中有一个叫server2后端服务,起在本机的80端口,HAProxy>同时最多向这个服务发起32个连接

listen stats                  #定义监控页面    
bind *:1080                   #绑定端口1080
stats refresh 30s             #每30秒更新监控数据    
stats uri /stats              #访问监控页面的uri    
stats realm HAProxy\ Stats    #监控页面的认证提示    
stats auth admin:admin        #监控页面的用户名和密码

备:backup

注:在主的haproxy的基础上无需进行变动,所以我们直接远程发送即可。 

scp haproxy.cfg 192.168.11.114:/etc/haproxy/

    分别重启两个服务

systemctl restart keepalived
systemctl restart haproxy

5、测试

1)使用命令进行查看

主:master测试

curl 192.168.11.200
curl 192.168.11.200

这里可以看到负载均衡没有问题

 备:backup测试

2)使用网页进行测试

 

这里可以看出负载均衡也没有任何问题。

3)停掉服务进行查看

先查看主和备的IP和虚IP

主:master

 备:backup

主:master

systemctl stop keepalived

 回到备:backup上进行查看

 在这里已经可以看出虚IP地址已经自动漂移到备:backup 上了 

进行测试

 

4)重启主的服务再次进行检查

 这里可以看出虚IP地址已经自动漂移回到了主:master上

总结

        keepalived和HAProxy是一对强力组合,用于实现高可用性和负载均衡的解决方案。通过keepalived,我们可以创建一个虚拟IP地址(VIP),将其关联到HAProxy服务器集群上。当主HAProxy服务器发生故障时,keepalived会检测到并自动切换到备用服务器,使应用服务保持可用。这组合的好处是双重的:一方面,keepalived提供了高可用性,确保即使出现故障也能保持服务的连续性;另一方面,HAProxy提供了负载均衡,使流量能够高效地分发到后端服务器,提高系统的性能。

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

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

相关文章

【golang】派生数据类型---指针 标识符、关键字等

1、指针 对比C/C中的指针,go语言中的指针显得极为简洁,只是简单的获取某个空间的地址 或者 根据指针变量中的内容 获取对应存储空间的内容等操作。 具体示例如下: go中使用指针需要注意的点: 可以通过指针改变它所指向的内存空…

5 STM32标准库函数 之 外部中断/事件控制器(EXTI)所有函数的介绍及使用

5 STM32标准库函数 之 外部中断/事件控制器(EXTI)所有函数的介绍及使用 1. 图片有格式2 文字无格式五 库函数之外部中断/事件控制器(EXTI)所有函数的介绍及使用前言一、图片预览,无格式(CSDN)二…

C++ 工具

C参考手册 Learncppcplusplustutorialspoint/cplusplusAwesomeC 写在最后:若本文对您有帮助,请点个赞啦 ٩(๑•̀ω•́๑)۶

RS485保护电路

今天给大家分享485接口的EMC设计,希望对电路设计,及相关软件开发的人员有帮助。 一、原理图 1. RS485接口6KV防雷电路设计方案 (RS485接口防雷电路) 接口电路设计概述: RS485用于设备与计算机或其它设备之间通讯&…

c++11 标准模板(STL)(std::basic_ostringstream)(一)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ostringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allo…

week6刷题

题解: 使用二分查找 class Solution { public:int minArray(vector<int>& numbers) {int low 0;int high numbers.size() - 1;while (low < high) {int pivot low (high - low) / 2;if (numbers[pivot] < numbers[high]) {high pivot;}else if (numbers…

学习JAVA打卡第四十四天

Scanner类 ⑴Scanner对象 scanner对象可以解析字符序列中的单词。 例如&#xff1a;对于string对象NBA 为了解析出NBA的字符序列中的单词&#xff0c;可以如下构造一个scanner对象。 将正则表达式作为分隔标记&#xff0c;即让scanner对象在解析操作时把与正则表达式匹配的字…

<C++> STL_stack和queue

1.stack的介绍和使用 1.1 stack的介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其底层的容器&am…

数据生成 | MATLAB实现GAN生成对抗网络结合SVM支持向量机的数据生成

数据生成 | MATLAB实现GAN生成对抗网络结合SVM支持向量机的数据生成 目录 数据生成 | MATLAB实现GAN生成对抗网络结合SVM支持向量机的数据生成生成效果基本描述程序设计参考资料 生成效果 基本描述 数据生成 | MATLAB实现GAN生成对抗网络结合SVM支持向量机的数据生成。 生成对抗…

抖店的出单主要靠什么?给你们分析下抖店的运营逻辑,建议看完!

我是王路飞。 做抖店只有一个目的&#xff0c;就是出单、赚钱。 那么从开通抖店开始&#xff0c;到最后店铺出单&#xff0c;这中间的一些运营流程就是你出单的关键了。 那么抖店的出单主要靠什么呢&#xff1f; 我的观点是&#xff1a;产品流量。给你们分析下抖店的运营逻…

【JavaEE】Spring事务-@Transactional参数介绍-事务的隔离级别以及传播机制

【JavaEE】Spring事务&#xff08;2&#xff09; 文章目录 【JavaEE】Spring事务&#xff08;2&#xff09;1. Transactional 参数介绍1.1 value 和 transactionManager1.2 timeout1.3 readOnly1.4 后面四个1.5 isolation 与 propagation 2. Spring 事务隔离级别 - isolation2.…

登录校验-Filter-登录校验过滤器

目录 思路 登录校验Filter-流程 步骤 流程图 登录校验Filter-代码 过滤器类 工具类 测试登录 登录接口功能请求 其他接口功能请求 前后端联调 思路 前端访问登录接口&#xff0c;登陆成功后&#xff0c;服务端会生成一个JWT令牌&#xff0c;并返回给前端&#xff0…

【C++】C++ 引用详解 ⑦ ( 指针的引用 )

文章目录 一、二级指针可实现的效果二、指针的引用1、指针的引用 等同于 二级指针 ( 重点概念 )2、引用本质 - 函数间接赋值简化版本3、代码示例 - 指针的引用 一、二级指针可实现的效果 指针的引用 效果 等同于 二级指针 , 因此这里先介绍 二级指针 ; 使用 二级指针 作为参数 …

JWT 技术的使用

应用场景&#xff1a;访问某些页面&#xff0c;需要用户进行登录&#xff0c;那我们如何知道用户有没有登录呢&#xff0c;这时我们就可以使用jwt技术。用户输入的账号和密码正确的情况下&#xff0c;后端根据用户的唯一id生成一个独一无二的token&#xff0c;并返回给前端&…

几个nlp的小任务(机器翻译)

几个nlp的小任务(机器翻译) 安装依赖库数据集介绍与模型介绍加载数据集看一看数据集的样子评测测试数据预处理测试tokenizer处理目标特殊的token预处理函数对数据集的所有数据进行预处理微调预训练模型设置训练参数需要一个数据收集器,把处理好数据喂给模型设置评估方法参数…

RHCE——八、DNS域名解析服务器

RHCE 一、概述1、产生原因2、作用3、连接方式4、因特网的域名结构4.1 拓扑4.2 分类4.3 域名服务器类型划分 二、DNS域名解析过程1、分类2、解析图&#xff1a;2.1 图&#xff1a;2.2 过程分析 三、搭建DNS域名解析服务器1、概述2、安装软件3、/bind服务中三个关键文件4、配置文…

孪生网络(Siamese Network)

基本概念 孪生网络&#xff08;Siamese Network&#xff09;是一类神经网络结构&#xff0c;它是由两个或更多个完全相同的网络组成的。孪生网络通常被用于解决基于相似度比较的任务&#xff0c;例如人脸识别、语音识别、目标跟踪等问题。 孪生网络的基本思想是将输入数据同时…

数据I/O

I/O类型 区分同步或异步&#xff08;synchronous/asynchronous&#xff09;。 简单来说&#xff0c;同步是一种可靠的有序运行机制&#xff0c;当我们进行同步操作时&#xff0c;后续的任务是等待当前调用返回&#xff0c;才会进行下一步&#xff1b;而异步则相反&#xff0c;…

ESP32-IDF移植LVGL 文件系统

一. 简介 在使用LVGL进行界面开发的时候&#xff0c;需要使用到各种字体文件和图片文件&#xff0c;如果直接下载到flash中的话(esp32的flash足够大&#xff0c;可以下载少量的资源文件)&#xff0c;不方便替换和管理&#xff0c;而且资源有限&#xff0c;但比较方便&#xff…