当前位置: 首页 > article >正文

LVS + Keepalived 高可用集群

一、LVS+Keepalived 原理

1.1.LVS 负载均衡原理

LVS(Linux Virtual Server)是一种基于 Linux 内核的负载均衡技术,它通过 IPVS(IP Virtual Server)模块来实现。LVS 可以将客户端的请求分发到多个后端服务器上,从而实现负载均衡。它主要支持三种工作模式:

  • DR 模式(直接路由):客户端的请求首先到达 LVS 负载均衡器,负载均衡器将请求的目标 MAC 地址修改为后端真实服务器的 MAC 地址,而 IP 地址保持不变,然后将请求转发给后端服务器。后端服务器处理完请求后,直接将响应返回给客户端,无需再经过 LVS 负载均衡器。这种模式的优点是性能高,因为响应数据包不需要经过负载均衡器,减少了负载均衡器的处理压力。

  • NAT 模式(网络地址转换):客户端的请求和后端服务器的响应都需要经过 LVS 负载均衡器。负载均衡器在转发请求时,会修改请求的目标 IP 地址为后端服务器的 IP 地址,同时修改源 IP 地址为自己的 IP 地址。在转发响应时,会将响应的目标 IP 地址修改为客户端的 IP 地址。这种模式的优点是配置简单,但缺点是负载均衡器的处理压力较大,而且后端服务器必须和负载均衡器在同一个子网内。

  • TUN 模式(IP 隧道):LVS 负载均衡器将客户端的请求封装在一个新的 IP 报文中,通过隧道发送给后端服务器。后端服务器接收到报文后,解封装得到原始请求,处理完请求后直接将响应返回给客户端。这种模式的优点是支持跨子网的负载均衡,但缺点是配置相对复杂,而且需要额外的隧道开销。

1.2.Keepalived 高可用原理

Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)的高可用解决方案。VRRP 协议的目的是为了解决静态路由环境下的单点故障问题。在一个 VRRP 组中,有一个主路由器(Master)和多个备份路由器(Backup),它们共享一个虚拟 IP 地址(VIP)。主路由器负责处理客户端的请求,备份路由器则监听主路由器的状态。

  • VRRP 虚拟路由冗余:主路由器会定期发送 VRRP 通告消息给备份路由器,告知自己的状态。如果备份路由器在一定时间内没有收到主路由器的通告消息,就认为主路由器出现故障,此时备份路由器中的一个会通过竞选机制成为新的主路由器,并接管虚拟 IP 地址,继续处理客户端的请求。

  • 健康检查:Keepalived 可以通过脚本或协议(如 HTTP、HTTPS 等)对后端服务器和 LVS 节点的状态进行监控。如果发现某个后端服务器或 LVS 节点出现故障,Keepalived 会将其从负载均衡池中移除,从而保证只有正常的服务器能够处理客户端的请求。

  • VIP 漂移:当主节点出现故障时,备节点会抢占虚拟 IP 地址,实现 VIP 的漂移。客户端的请求会自动切换到备节点上,从而实现服务的高可用性,切换过程通常可以在秒级完成。


二、配置思路与步骤

2.1.环境准备

四台主机(rocky 8):

节点角色IP 地址组件
LVS 主节点192.168.67.110Keepalived + IPVS
LVS 备节点192.168.67.120Keepalived + IPVS
后端 RS1192.168.67.10HTTPD + VIP 配置
后端 RS2192.168.67.20HTTPD + VIP 配置
客户端任意 IP浏览器或测试工具

注意:整个环境所有主机都关闭了 firewalld 和 SElinux 。

2.2.RS 主机配置

2.2.1.配置 VIP

DR 模式

绑定 VIP 的作用:在后端 RS 主机上绑定 VIP 是为了让后端服务器能够正确处理目标 IP 为 VIP 的请求。在 LVS 的 DR 模式下,LVS 负载均衡器将客户端的请求转发给后端服务器时,请求的目标 IP 地址是 VIP。如果后端服务器没有绑定 VIP,它会认为这个请求不是发给自己的,从而丢弃该请求。例如,在一个电商网站的架构中,客户端通过访问 VIP 来浏览商品信息,LVS 将请求转发给后端的 RS 服务器。如果 RS 服务器没有绑定 VIP,就无法处理这些请求,用户将无法正常访问网站。

# 后端两个 RS 主机都需添加 VIP
ip address add 192.168.67.100/32 dev lo     # 注意:子网掩码为 32

2.2.2.配置 ARP 抑制

配置 ARP 抑制的作用:配置 ARP 抑制的主要作用是避免后端 RS 服务器与 LVS 负载均衡器之间的 ARP 冲突。在网络中,ARP 协议用于将 IP 地址解析为 MAC 地址。当客户端发送 ARP 请求询问 VIP 的 MAC 地址时,如果后端 RS 服务器不进行 ARP 抑制,可能会响应这个请求,导致客户端将请求直接发送给后端 RS 服务器,而不是通过 LVS 负载均衡器进行转发,从而破坏了负载均衡的架构。例如,在一个企业的内部网络中,如果出现 ARP 冲突,可能会导致部分用户无法正常访问企业的网站或应用程序。

  • 两个 RS 主机都需配置,选以下方法终其中一种方法即可。

2.2.2.1.法一

临时设置 ARP 规则。

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce 
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce 
2.2.2.2.法二

永久设置 ARP 规则(主配置文件),在主配置文件最后添加以下四条规则。

sysctl -p:使规则生效。

vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_announce=2
​
sysctl -p
2.2.2.3.法三

永久设置 ARP 规则(子配置文件),在子配置文件目录里创建 .conf 结尾的文件。

sysctl --system:读取系统中多个指定的配置文件,并将这些文件里定义的内核参数设置加载到当前运行的内核中,以此实现对内核参数的批量设置。

vim /etc/sysctl.d/arp.conf 
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_announce=2
​
sysctl --system
2.2.2.4.验证

查看是否设置成功:

2.2.3.配置 Web 服务

作用:安装 Web 服务是为了让后端 RS 服务器能够处理客户端的 HTTP 请求。在实际应用中,后端 RS 服务器通常是提供 Web 服务的服务器,如电商网站的商品展示页面、新闻网站的新闻内容页面等。通过安装 Web 服务,如 Apache 或 Nginx,后端 RS 服务器可以接收并处理客户端的请求,返回相应的网页内容。

两个 RS 主机都需配置。

yum install httpd -y
echo `hostname -I` > /var/www/html/index.html
systemctl enable --now httpd


2.3.Keepalived 主机配置

2.3.1.配置 Keepalived 策略

安装 Keepalived 软件,编辑配置文件,配置 LVS DR 模式。

yum install keepalived -y

注意:两台 keepalived 主机都需修改配置文件,内容如下

vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived
​
global_defs {notification_email {2373179473@qq.com           # 接收 Keepalived 状态变化通知邮件的邮箱地址}notification_email_from keepalived@timinglee.org    # 发送通知邮件的邮箱地址smtp_server 127.0.0.1                               # 用于发送通知邮件的 SMTP 服务器地址smtp_connect_timeout 30                            # 与 SMTP 服务器建立连接的超时时间,单位为秒router_id ka1.timinglee.org                        # 此 Keepalived 实例的唯一标识,用于在 VRRP 组中区分不同实例vrrp_skip_check_adv_addr                           # 跳过对 VRRP 通告地址的合法性检查vrrp_garp_interval 0                               # 免费 ARP(Gratuitous ARP)消息的发送间隔,设为 0 表示不发送vrrp_gna_interval 0                                # 免费邻居通告(Gratuitous Neighbor Advertisement)消息的发送间隔,设为 0 表示不发送vrrp_mcast_group4 224.0.0.18                       # VRRP 组播通信使用的 IP 地址
}
​
vrrp_instance VI_1 {state MASTER                                      # 当前 Keepalived 实例的初始状态,MASTER 表示主节点# 注意:state 备节点需要设置为 BACKUPinterface ens160                                  # Keepalived 监听 VRRP 通告和绑定 VIP 的网络接口virtual_router_id 100                             # VRRP 组的唯一标识符,同一组内的实例此 ID 需相同priority 100                                      # 当前实例的优先级,数值越高越优先成为主节点# 注意:备节点,优先级需要设置为 80advert_int 1                                      # 发送 VRRP 通告消息的时间间隔,单位为秒authentication {auth_type PASS                                # 认证类型,PASS 表示使用密码认证auth_pass 1111                                # 认证密码,同一 VRRP 组内的实例需一致}virtual_ipaddress {192.168.67.100/24 dev ens160 label ens160:1   # 虚拟 IP 地址及其子网掩码,绑定到 ens160 接口,别名是 ens160:1}unicast_src_ip 192.168.67.110                     # 单播通信时使用的源 IP 地址# 注意:备节点源 IP 地址需要设置为本机 IPunicast_peer {192.168.67.120                                # 单播通信的对端 Keepalived 实例的 IP 地址# 注意:备节点需要设置为主节点 IP}
}
virtual_server 192.168.67.100 80 {delay_loop 6                                      # 健康检查的时间间隔,单位为秒lb_algo wrr                                       # 负载均衡算法,wrr 表示加权轮询lb_kind DR                                        # 负载均衡模式,DR 代表直接路由模式protocol TCP                                      # 负载均衡使用的协议,这里是 TCP 协议
​real_server 192.168.67.10 80 {weight 1                                      # 该真实服务器的权重,影响分配到的请求数量HTTP_GET {url {path /                                  # 健康检查请求的 URL 路径status_code 200                         # 期望的 HTTP 响应状态码}connect_timeout 3                         # 建立连接的超时时间,单位为秒nb_get_retry 2                            # 连接失败后的重试次数delay_before_retry 2                      # 每次重试前的延迟时间,单位为秒}}real_server 192.168.67.20 80 {weight 1                                      # 该真实服务器的权重HTTP_GET {url {path /                                  # 健康检查请求的 URL 路径status_code 200                         # 期望的 HTTP 响应状态码}connect_timeout 3                         # 建立连接的超时时间nb_get_retry 2                            # 连接失败后的重试次数delay_before_retry 2                      # 每次重试前的延迟时间}}
}

重启服务。

systemctl restart keepalived.service

安装 ipvsadm 命令,用于观察 ipvs 规则。

yum install ipvsadm -y
ipvsadm -Ln


三、测试

3.1.基础功能验证

目前 VIP 在 192.168.67.110 主机上。

客户端访问虚拟 IP:192.168.67.100,实现请求通过 LVS 负载均衡器转发到后端真实服务器(192.168.67.10 和 192.168.67.20),页面正常轮询显示,表明 LVS 负载均衡器能够正确地将客户端的请求分发到后端的 RS 服务器上。。

while true; do curl 192.168.67.100; sleep 1; done

3.2.主备切换测试

关闭主节点:192.168.67.110

关闭主节点 192.168.67.110 的 Keepalived 服务。

systemctl stop keepalived.service       # 关闭 192.168.67.110 的 Keepalived 服务

VIP 自动漂移到备节点上。

客户端访问 192.168.67.100 时,请求自动切换到备节点 192.168.67.120,实现服务无中断。

while true; do curl 192.168.67.100; sleep 1; done

重启主节点:192.168.67.110

重启主节点,Keepalived 服务恢复后:

  • VIP 自动切回主节点,实现高可用。

  • 请求按权重(weight=1)均匀分配到 192.168.67.10 和 192.168.67.20,实现流量均衡。

  • 服务无中断。

while true; do curl 192.168.67.100; sleep 1; done

3.3.健康检查验证

  1. 手动停止后端服务器 192.168.67.10 的 HTTP 服务,Keepalived 通过健康检查(/ 路径返回 200)发现异常,将其从 LVS 集群中移除。

  2. 客户端访问 192.168.67.100 时,所有请求自动转发到正常服务器 192.168.67.20,实现故障隔离。

  3. 恢复 192.168.67.10 的 HTTP 服务后,Keepalived 重新将其加入集群,请求恢复正常分配


四、总结

4.1.收获和问题

核心收获

  • 高性能转发:LVS 的 DR 模式实现零拷贝转发,吞吐量远超 Nginx/HAProxy。例如,在一个大型电商网站的促销活动期间,大量用户同时访问网站,LVS 的 DR 模式能够快速地将请求转发到后端服务器,确保用户能够快速地浏览商品信息和下单。

  • 高可用保障:Keepalived 通过 VRRP 和健康检查机制,确保服务 99.99% 可用性。以在线游戏为例,如果游戏服务器的主节点出现故障,Keepalived 能够迅速将 VIP 漂移到备节点,保证玩家不会因为服务器故障而中断游戏。

  • 流量调度策略:加权轮询算法有效分配流量,提升资源利用率。在一个视频网站中,不同的服务器性能可能不同,通过设置不同的权重,可以将更多的请求分配到性能较高的服务器上,从而提高整个系统的性能。

问题解决

  • ARP 冲突:通过内核参数抑制后端 RS 的 ARP 响应,避免 VIP 地址冲突。在一个企业的局域网中,如果没有配置 ARP 抑制,可能会出现多个服务器响应同一个 VIP 的 ARP 请求,导致网络通信混乱。通过配置 ARP 抑制,解决了这个问题,保证了网络的正常运行。

  • 单点故障:主备架构消除 LVS 节点宕机风险,实现无缝切换。在一个金融交易系统中,如果 LVS 节点出现单点故障,可能会导致交易中断,给企业带来巨大的损失。通过 LVS+Keepalived 的主备架构,当主节点出现故障时,备节点能够迅速接管服务,实现无缝切换,避免了交易中断的风险。

4.2.适用场景

  • 高并发 Web 服务:适用于电商、社交平台等高流量场景。例如,淘宝、京东等电商平台在双 11、618 等促销活动期间,会面临巨大的流量压力。LVS+Keepalived 可以将大量的用户请求分发到多个后端服务器上,保证网站的高可用性和高性能。

  • 数据库集群:在 MySQL、Redis 等数据库集群中,LVS+Keepalived 可以实现读写分离和负载均衡。例如,在一个新闻网站中,用户的读请求可以通过 LVS 分发到多个从数据库服务器上,写请求则可以发送到主数据库服务器上,提高数据库的读写性能。

  • 跨地域负载均衡:结合 TUN 模式支持异地容灾。例如,一家跨国企业在不同的国家和地区都有数据中心,通过 LVS 的 TUN 模式和 Keepalived 的高可用机制,可以将用户的请求分发到距离最近的数据中心,提高用户的访问速度,同时实现异地容灾,保证数据的安全性和可用性。

4.3.对比其他方案

方案优势劣势
HAProxy七层功能丰富(HTTP 路由),支持多种负载均衡算法,配置相对简单。例如,在一个需要根据 HTTP 请求的 URL 进行路由的应用场景中,HAProxy 可以很方便地实现。性能低于 LVS,资源消耗较高。在处理大量的并发请求时,HAProxy 的处理能力可能不如 LVS。
Nginx配置灵活,支持反向代理,同时还可以作为 Web 服务器使用。例如,在一个小型的网站中,Nginx 可以同时作为 Web 服务器和负载均衡器使用。单节点性能有限,需额外高可用方案。如果 Nginx 节点出现故障,需要额外的机制来实现高可用性。
F5 硬件全功能支持,性能高,可靠性强。例如,在一些对性能和可靠性要求极高的金融、电信等行业,F5 硬件负载均衡器是一个不错的选择。成本高,闭源难以定制。F5 硬件负载均衡器的价格昂贵,而且由于是闭源产品,难以根据具体需求进行定制。

4.4.优化建议

  • 性能调优:开启内核参数 net.ipv4.tcp_tw_reuse 减少 TIME_WAIT。在高并发的场景下,大量的 TIME_WAIT 状态会占用系统资源,影响系统的性能。通过开启这个参数,可以复用处于 TIME_WAIT 状态的连接,提高系统的性能。

  • 监控告警:集成 Prometheus+Grafana 实时监控集群状态。Prometheus 可以收集集群中各个节点的性能指标,如 CPU 使用率、内存使用率、网络流量等,Grafana 可以将这些指标以直观的图表形式展示出来,并设置告警规则,当指标超过阈值时及时通知管理员。

  • 多活架构:部署多个 VRRP 组实现主主模式,提升资源利用率。在一个大型的分布式系统中,可以部署多个 VRRP 组,每个 VRRP 组都有自己的主节点和备节点,不同的 VRRP 组之间可以相互备份,实现主主模式。这样可以充分利用各个节点的资源,提高整个系统的性能和可用性。

相关文章:

LVS + Keepalived 高可用集群

一、LVSKeepalived 原理 1.1.LVS 负载均衡原理 LVS(Linux Virtual Server)是一种基于 Linux 内核的负载均衡技术,它通过 IPVS(IP Virtual Server)模块来实现。LVS 可以将客户端的请求分发到多个后端服务器上&#xf…...

PHP与数据库连接常见问题及解决办法

PHP与数据库连接常见问题及解决办法 在现代Web开发中,PHP与数据库的连接是不可或缺的一部分。无论是构建动态网站、内容管理系统(CMS)还是电子商务平台,PHP与数据库的交互都是核心功能之一。然而,在实际开发过程中&am…...

HarmonyOS-应用程序框架基础

应用程序框架与应用模型的区别 应用框架可以看做是应用模型的一种实现方式,开发人员可以用应用模型来描述应用程序的结构和行为的描述,然后使用应用程序框架来实现这些描述。 应用模型 应用模型是一个应用程序的模型,它是一种抽象的描述&a…...

使用 Doris 和 LakeSoul

作为一种全新的开放式的数据管理架构,湖仓一体(Data Lakehouse)融合了数据仓库的高性能、实时性以及数据湖的低成本、灵活性等优势,帮助用户更加便捷地满足各种数据处理分析的需求,在企业的大数据体系中已经得到越来越…...

【C语言】函数和数组实践与应用:开发简单的扫雷游戏

【C语言】函数和数组实践与应用:开发简单的扫雷游戏 1.扫雷游戏分析和设计1.1扫雷游戏的功能说明(游戏规则)1.2游戏的分析与设计1.2.1游戏的分析1.2.2 文件结构设计 2. 代码实现2.1 game.h文件2.2 game.c文件2.3 test.c文件 3. 游戏运行效果4…...

国内Mac,nimi安装homebrew完整过程

安装命令: 常规安装脚本: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 极速安装脚本: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.…...

C++基础——从C语言快速入门

目录 输入输出 标准输出流 ( cout ) 标准输入流 ( cin ) 标准错误流 ( cerr ) 和标准日志流 ( clog ) 编程示例 基本变量类型 宽字符的用法 climits 如何使用 编程示例 注意事项 流程控制 条件语句 循环语句 跳转语句 函数 函数的基本结构 编程示例 函数的组成…...

玩转python:通俗易懂掌握高级数据结构-collections模块之Counter

引言 Counter是Python中collections模块提供的一个强大工具,用于统计可哈希对象的出现次数。它非常适合用于频率统计、词频分析、数据聚合等场景。本文将详细介绍Counter的关键用法和特性,并通过8个丰富的案例帮助读者掌握其应用。 关键用法和特性表格 …...

Windows远程桌面黑屏怎么办?

在使用Windows远程桌面连接另一台电脑时,用户经常会遇到Windows远程桌面黑屏的问题。那么,该如何有效地解决Windows远程桌面黑屏的问题呢?遇到远程桌面连接黑屏的问题时,可以通过在本地组策略编辑器中禁用WDDM图形显示驱动来解决。…...

82.HarmonyOS NEXT 性能优化指南:从理论到实践

温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT 性能优化指南:从理论到实践 文章目录 HarmonyOS NEXT 性能优化指南:从理论到实践1. 性能优化概述1.1 性能指…...

python笔记2

变量:含义 一个容器,计算机当中的存储空间。 可以理解为一个用于标识或引用数据的名字或标签。 作用: 可以通过定义一个变量来给需要使用多次的数据命名,就像一个标签一样。下次需要使用这个数据时,只需要通过这个变…...

深度学习 Deep Learning 第1章 深度学习简介

第1章 深度学习简介 概述 本章介绍人工智能(AI)和深度学习领域,讨论其历史发展、关键概念和应用。解释深度学习如何从早期的AI和机器学习方法演变而来,以及如何有效解决之前方法无法应对的挑战。 关键概念 1. 人工智能的演变 …...

Nest系列:NestJS 中 Logger 完全指南:从基础到企业级实践-04

一、Logger 的核心价值 在服务端应用中,日志系统承担着三大核心职责: 系统监控:实时反馈应用健康状态问题追踪:快速定位异常根源行为审计:记录关键业务操作NestJS 内置的日志系统提供了开箱即用的解决方案,支持: ✅ 多日志级别管理 ✅ 上下文感知日志 ✅ 自定义输出格式…...

机器学习 [白板推导](二)[线性回归]

3. 线性回归 3.1. 问题定义 假设两个变量 x ⃗ \vec{x} x 和 y y y 之间存在线性关系(例如 y w ⃗ T x ⃗ b y\vec{w}^T\vec{x}b yw Tx b),如何利用数据 D a t a : { ( x ⃗ i , y i ) } i 1 N Data:\{(\vec{x}_i,y_i)\}_{i1}^N Data…...

解决Windows版Redis无法远程连接的问题

🌟 解决Windows版Redis无法远程连接的问题 在Windows系统下使用Redis时,很多用户会遇到无法远程连接的问题。尤其是在配置了Redis并尝试通过工具如RedisDesktopManager连接时,可能会报错“Cannot connect to ‘redisconnection’”。今天&am…...

麒麟服务器操作系统Sqlite部署手册

软件简介 SQLite****介绍 SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足、无服务器、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,这就体现出来SQLite与其他数据库的最大的区别:SQLite不需要在系统中配置,直接可以使用。…...

Qt C++ 常用压缩库推荐 快速压缩 解压缩数据

在Qt C中,如果你需要快速压缩和解压缩数据,可以使用以下几种库: 1. zlib 简介: zlib 是一个非常流行的压缩库,支持 DEFLATE 压缩算法。它被广泛用于各种应用程序中,包括Qt。 集成: Qt 本身已经集成了 zlib&#xff0…...

架构师面试(十五):熔断设计

问题 某电商平台经常需要在大促运营活动中暂停评论、退款等业务,基于服务治理的设计理念,我们需要对该电商平台微服务系统的【服务熔断】进行设计,对此下面描述中说法正确的有哪几项呢? A. 服务管控系统管理着平台中所有服务之间…...

解析GNGGA数据,C语言单片机

GPS模块的一帧数据是: $GNGGA,130333.000,4143.43651,N,12328.96485,E,1,14,1.2,93.1,M,0.0,M,,*45 $GNGLL,4143.43651,N,12328.96485,E,130333.000,A,A*4D $GPGSA,A,3,05,07,11,13,20,29,30,195,,,,,2.3,1.2,2.0*05 $BDGSA,A,3,08,13,28,33,38,42,,,,,,,2.3,1.2,2.0*2E $GPG…...

Navicat如何查看密码

近期遇到需要将大部分已存储的navicat数据库转发给其他人,于是乎进行导出文件 奈何对方不用navicat,无法进行文件的导入从而导入链接 搜罗navicat的密码查看,大部分都为php代码解析 以下转载GitHub上看到的一个python代码解析的脚本 这里是对…...

力扣143重排链表

143. 重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的…...

【GPT入门】第24课 langfuse介绍

【GPT入门】第24课 langfuse介绍 1. langfuse概念与作用2. 代码3. 页面效果4. 设计模式1. 装饰器模式2. 上下文管理模式1. langfuse概念与作用 Langfuse是一款专为大规模语言模型(LLM)应用开发设计的开源平台。其作用主要包括以下几个方面: 提升开发效率:通过消除LLM应用构…...

HarmonyOS NEXT个人开发经验总结

文章目录 1. 开发环境配置1.1 工具链安装流程1.2 环境配置代码 2. 项目架构设计2.1 分层架构图2.2 模块化配置 3. 核心开发实践3.1 声明式UI开发3.2 分布式数据管理 4. 性能优化策略4.1 性能优化流程图4.2 优化实践代码 5. 安全与权限管理5.1 权限申请流程5.2 安全存储示例 6. …...

Python基于深度学习的多模态人脸情绪识别研究与实现

一、系统架构设计 A[数据采集] --> B[预处理模块] B --> C[特征提取] C --> D[多模态融合] D --> E[情绪分类] E --> F[系统部署] F --> G[用户界面] 二、数据准备与处理 1. 数据收集 - 视频数据:FER2013(静态图像&#xff0…...

golang快速上手基础语法

变量 第一种,指定变量类型,声明后若不赋值,使用默认值0 package mainimport "fmt"func main() {var a int //第一种,指定变量类型,声明后若不赋值,使用默认值0。fmt.Printf(" a %d\n"…...

【MySQL】多表操作 —— 外键约束

目录 多表关系一对一关系一对多/多对一关系多对多关系 外键约束基本概念一对多/多对一创建外键约束外键约束下的数据操作数据插入数据删除 删除外键约束 多对多创建外键约束外键约束下的数据操作数据插入数据删除 删除外键约束 多表关系 MySQL 多表之间的关系可以概括为&#…...

⭐算法OJ⭐两数之和【哈希表】(C++ 实现)Two Sum

“两数之和”(Two Sum)是一道非常经典的算法题目,几乎是算法入门和面试准备的必做题之一。它的经典性体现在以下几个方面: 1. 算法入门的基础题目 这道题目是许多初学者接触 哈希表(Hash Table) 或 字典&…...

从被动响应到主动预见:智能可观测性技术的变革与实践

思维导图 一、引言 🌃 想象一下,在一个深夜 🌙,你的关键业务系统突然出现故障 🚨。传统情况下,你可能会收到大量不相关的告警 📱💬💬💬,然后花费数小时甚至数天时间 ⏳,在错综复杂的系统架构中寻找根本原因 🔍。而在智能可观测性的世界里,故障发生前系统…...

【GPT入门】第22课 langchain LCEL介绍

【GPT入门】第22课 langchain LCEL介绍 1. LCEL介绍与特点2. 原生API与LCEL的对比2. 简单demo 1. LCEL介绍与特点 LCEL 即 LangChain Expression Language,是 LangChain 推出的一种声明式语言,用于简化和优化在 LangChain 框架内构建复杂链和应用的过程…...

LeetCode1005☞K次取反后最大的数组和

关联LeetCode题号1005 本题特点 贪心:局部最优解:将负数取反得到比原值大的值,进而全局最优解整体和为最大二次贪心: 如果取反次数大于负数个数,那么剩下次数如果为奇数,那么就将绝对值最小的数取反(贪心…...