HAproxy 在linux和docker部署和优化

1. 引言

HAproxy 是一个高性能的负载均衡器和反向代理,它主要用于提供高可用性和流量分发,广泛应用于 Web 服务、API 网关等场景。HAproxy 能够处理 HTTP、HTTPS 和 TCP 层的负载均衡,它支持多种负载均衡算法,包括轮询、加权轮询、源 IP 哈希等。此外,HAproxy 还内建了健康检查机制,可以自动排除故障的后端服务器,确保高可用性。

2. HAproxy 安装

在 Linux 系统上安装 HAproxy

在 Linux 系统上,可以使用包管理工具快速安装 HAproxy。下面以 Ubuntu 和 CentOS 为例:

2.1 使用包管理工具安装
  • Ubuntu / Debian 系统:
sudo apt-get update
sudo apt-get install haproxy
  • CentOS / RHEL 系统:
sudo yum install epel-release
sudo yum install haproxy
2.2 从源码安装

如果需要自定义 HAproxy 的版本或功能,可以选择从源码编译安装:

# 下载源代码
wget http://www.haproxy.org/download/2.3/src/haproxy-2.3.8.tar.gz
tar -xzvf haproxy-2.3.8.tar.gz
cd haproxy-2.3.8# 编译并安装
make TARGET=linux-glibc
sudo make install
2.3 安装完成后验证安装

可以通过以下命令检查 HAproxy 是否成功安装:

haproxy -v

该命令会显示 HAproxy 的版本信息,确保安装成功。


3. HAproxy 配置文件详解

HAproxy 的配置文件通常位于 /etc/haproxy/haproxy.cfg。配置文件的结构包含了多个部分,每个部分都有不同的作用。下面将详细介绍配置文件的常见部分。

3.1 配置文件的结构

HAproxy 的配置文件主要分为以下几部分:

  • global:全局配置,定义 HAproxy 的行为,通常包括日志、进程等全局设置。
  • defaults:默认配置,应用于所有的 frontendbackendlisten 块。
  • frontend:定义请求的入口配置,处理所有进入 HAproxy 的流量。
  • backend:定义后端服务器组,用于实际处理请求的服务器。
  • listen:监听一个端口,结合 frontendbackend,用于配置负载均衡。

3.2 常用配置指令

下面是一些常见的配置指令及其功能:

  • global

    globallog /dev/log   local0maxconn 2000
    
    • log:指定日志记录的位置。
    • maxconn:设置最大连接数。
  • defaults

    defaultslog     globaltimeout connect 5000mstimeout client  50000mstimeout server  50000ms
    
    • timeout connect:连接超时。
    • timeout client:客户端超时。
    • timeout server:服务器超时。
  • frontend

    frontend http-inbind *:80default_backend servers
    
    • bind:绑定监听地址和端口。
    • default_backend:指定默认的后端服务器。
  • backend

    backend serversserver web1 192.168.1.100:80 checkserver web2 192.168.1.101:80 check
    
    • server:指定后端服务器的地址、端口和健康检查。

4. HAproxy 在单机模式下部署

在单机模式下,HAproxy 作为负载均衡器部署,用于均衡 Web 服务器的流量。下面是一个简单的负载均衡案例:

4.1 简单负载均衡案例

假设有两台 Web 服务器,分别在 192.168.1.100 和 192.168.1.101 上运行 HTTP 服务,我们希望通过 HAproxy 实现负载均衡。

配置 haproxy.cfg
frontend http-inbind *:80default_backend web_serversbackend web_serversserver web1 192.168.1.100:80 checkserver web2 192.168.1.101:80 check
  • frontend http-in:配置 HAproxy 监听 80 端口。
  • backend web_servers :配置两台 Web 服务器作为后端服务器。

4.2 高可用配置

为了确保 HAproxy 自身的高可用性,可以使用 keepalived 来实现主备模式。

# keepalived 配置文件示例
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 101advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.10}
}

在这个配置中,192.168.1.10 为虚拟 IP 地址,HAproxy 会通过此 IP 提供服务。当主节点失效时,备节点会接管该 IP 地址,确保服务不中断。


5. 在 Docker 中部署 HAproxy

5.1 使用 Docker 安装 HAproxy

docker pull haproxy:latest

然后通过以下命令启动 HAproxy 容器:

docker run -d --name haproxy -p 80:80 haproxy:latest

5.2 配置 Docker 与多个容器的负载均衡

假设你有多个 Web 服务容器,并希望通过 HAproxy 进行负载均衡,下面是一个 Docker Compose 配置示例:

yaml复制代码version: '3'
services:web1:image: nginxnetworks:- backendweb2:image: nginxnetworks:- backendhaproxy:image: haproxyports:- "80:80"volumes:- ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfgnetworks:- backendnetworks:backend:driver: bridge

在这个配置中,HAproxy 会与 web1web2 进行负载均衡。

6. HAproxy 集群部署

6.1 集群部署的优势与应用场景

HAproxy 集群部署的主要优势在于:

  • 高可用性:通过配置多个 HAproxy 实例并结合故障转移机制,确保在一台 HAproxy 服务器故障时,其他服务器能继续处理请求。
  • 负载均衡扩展:集群部署可以分担更大的流量,避免单台 HAproxy 服务器成为瓶颈。
  • 冗余与容错:当一台 HAproxy 实例发生故障时,系统能够自动切换到其他 HAproxy 实例。

集群部署的常见应用场景包括:

  • 大型 Web 服务:为多个 Web 服务器提供负载均衡和高可用性保障。
  • 微服务架构:在微服务架构中,多个服务实例需要通过负载均衡分发流量,HAproxy 能提供此类功能。
  • 数据库负载均衡:HAproxy 可作为数据库的负载均衡器,分发请求至多个数据库节点。

6.2 在多台 Linux 服务器上配置 HAproxy 集群

6.2.1 配置 HAproxy 主备模式

在集群部署中,通常会使用 keepalived 来实现高可用性。keepalived 会通过 VRRP 协议在 HAproxy 实例间提供主备切换。以下是一个配置 HAproxy 集群的示例。

假设我们有两台 HAproxy 实例:haproxy1haproxy2

  • keepalived 配置文件(haproxy1)
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 101advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100  # 虚拟 IP 地址}
}
  • keepalived 配置文件(haproxy2)
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100  # 虚拟 IP 地址}
}

在这个配置中,haproxy1 是主节点,haproxy2 是备节点。当 haproxy1 故障时,haproxy2 会接管虚拟 IP,确保 HAproxy 的高可用性。

6.2.2 配置 HAproxy 后端服务

配置多个 Web 服务器作为后端服务:

frontend http-inbind *:80default_backend web_serversbackend web_serversserver web1 192.168.1.10:80 checkserver web2 192.168.1.11:80 checkbalance roundrobin

这样,无论 HAproxy 实例在主节点还是备节点,流量都能被均匀地分发到 web1web2 上。

6.2.3 集群配置测试

通过使用 curl 测试集群部署,确保虚拟 IP 地址(例如 192.168.1.100)始终能够访问到后端 Web 服务器。验证主备切换是否生效:

curl http://192.168.1.100

当主节点(haproxy1)故障时,haproxy2 会接管虚拟 IP 地址,流量仍然能够正确分发。


7. HAproxy 与监控工具集成

HAproxy 提供了丰富的监控功能,可以通过 Prometheus 和 Grafana 来实现对 HAproxy 实例的实时监控。

7.1 集成 Prometheus 监控

Prometheus 是一个开源的监控系统,支持通过 HTTP 拉取监控指标。HAproxy 支持导出其运行状态和性能指标,方便 Prometheus 进行抓取。

7.1.1 配置 HAproxy 导出监控数据

在 HAproxy 配置文件中添加 stats 部分,以启用监控数据导出。

frontend statsbind *:9000mode httplog /dev/log local0acl URL_STATS path /haproxy_statsstats enablestats uri /haproxy_statsstats auth admin:password
  • bind *:9000:监听 9000 端口。
  • acl URL_STATS path /haproxy_stats:访问 /haproxy_stats 路径来查看统计数据。
  • stats enable:启用监控页面。
  • stats auth:设置访问统计页面的用户名和密码。

配置后,可以通过浏览器访问 http://localhost:9000/haproxy_stats,查看 HAproxy 的运行状态。

7.1.2 配置 Prometheus 拉取指标

Prometheus 会通过 HTTP 拉取 HAproxy 的监控数据。配置 Prometheus 来拉取 HAproxy 统计信息:

yaml复制代码scrape_configs:- job_name: 'haproxy'static_configs:- targets: ['localhost:9000']metrics_path: '/haproxy_stats'basic_auth:username: 'admin'password: 'password'

这样,Prometheus 会定期抓取 HAproxy 的监控数据。

7.1.3 配置 Grafana 可视化

在 Grafana 中,添加 Prometheus 作为数据源,并创建仪表盘来展示 HAproxy 的指标。

Grafana 提供了现成的 HAproxy 仪表盘模板,您可以从 Grafana 官方网站下载并导入到 Grafana 中。


8. HAproxy 高级配置

8.1 多层负载均衡配置

HAproxy 支持多层负载均衡,可以基于不同的规则进行流量分发。例如,根据 HTTP 请求头的内容、客户端 IP 或请求路径进行负载均衡。

8.1.1 基于请求头的路由

通过 acluse_backend 配置,可以实现基于 HTTP 请求头的路由。

frontend http-inbind *:80acl is_api path_beg /apiuse_backend api_servers if is_apidefault_backend web_serversbackend api_serversserver api1 192.168.1.100:8080 checkserver api2 192.168.1.101:8080 checkbackend web_serversserver web1 192.168.1.100:80 checkserver web2 192.168.1.101:80 check
  • acl is_api path_beg /api:匹配请求路径是否以 /api 开头。
  • use_backend api_servers if is_api:如果路径匹配 /api,则将流量转发至 api_servers 后端。

8.2 反向代理与缓存

HAproxy 可以作为反向代理,将客户端请求转发给后端服务器。此外,还可以配置缓存,以提高应用性能。

8.2.1 配置反向代理
frontend http-inbind *:80default_backend web_serversbackend web_serversserver web1 192.168.1.100:80 checkserver web2 192.168.1.101:80 checkoption http-server-closeoption forwardfor
  • option http-server-close:在代理请求完成后关闭与后端服务器的连接。
  • option forwardfor:将客户端的真实 IP 地址转发到后端服务器。
8.2.2 配置缓存
backend cache_backendoption http-server-closehttp-request cache-usehttp-request cache-store
  • http-request cache-use:使用缓存。
  • http-request cache-store:将响应缓存到 HAproxy。

8.3 配置 WebSocket 支持

HAproxy 可以支持 WebSocket 协议,确保在负载均衡 WebSocket 连接时不发生中断。以下是配置 WebSocket 支持的示例:

frontend http-inbind *:80option httplogoption http-server-closeacl is_websocket hdr(Upgrade) -i WebSocketuse_backend websocket_servers if is_websocketdefault_backend web_serversbackend websocket_serversserver ws1 192.168.1.100:8080 checkserver ws2 192.168.1.101:8080 check
  • acl is_websocket hdr(Upgrade) -i WebSocket:检测请求头中的

9. HAproxy 性能优化

9.1 配置连接池

HAproxy 提供了连接池的功能,可以减少频繁创建连接的开销,提高系统性能。

backend web_serversoption http-server-closetimeout server 5stimeout connect 3stimeout queue 1stimeout client 30s
  • timeout server:设置后端服务器连接的超时时间。
  • timeout connect:设置与后端服务器建立连接的超时时间。
  • timeout queue:设置等待队列的超时时间。
  • timeout client:设置客户端连接的超时时间。

9.2 配置缓存与会话保持

会话保持(Session Persistence)是保证同一用户的请求始终转发到同一后端服务器。

backend web_serversbalance roundrobincookie SERVERID insert indirect nocacheserver web1 192.168.1.100:80 check cookie web1server web2 192.168.1.101:80 check cookie web2
  • cookie SERVERID insert indirect nocache:为每个客户端插入一个 cookie,确保同一用户请求总是访问相同的后端服务器。

9.3 动态调整权重

HAproxy 支持动态调整后端服务器的权重,以便根据流量情况调整负载分配。

backend web_serversserver web1 192.168.1.100:80 weight 10 checkserver web2 192.168.1.101:80 weight 5 check
  • weight:为服务器设置权重,权重较大的服务器将承担更多的流量。

10. HAproxy 高级特性

10.1 负载均衡算法

HAproxy 提供多种负载均衡算法,适用于不同的业务场景。常见的负载均衡算法有 轮询(Round Robin)加权轮询(Weighted Round Robin)源地址哈希(Source IP Hash) 等。

10.1.1 轮询(Round Robin)

轮询是最常用的负载均衡算法,它按照一定的顺序将请求分发到各个后端服务器,默认情况下所有后端服务器的负载均等。

backend web_serversbalance roundrobinserver web1 192.168.1.100:80 checkserver web2 192.168.1.101:80 check
  • balance roundrobin:表示采用轮询方式进行负载均衡,流量会按顺序分发给 web1web2
10.1.2 加权轮询(Weighted Round Robin)

加权轮询是轮询的变种,允许根据服务器的权重来决定分配的流量比例。权重较大的服务器会接收到更多的请求。

backend web_serversbalance roundrobinserver web1 192.168.1.100:80 weight 3 checkserver web2 192.168.1.101:80 weight 1 check
  • weight 3:表示 web1 的权重是 web2 的三倍,即 web1 会接收到更多流量。
10.1.3 源地址哈希(Source IP Hash)

源地址哈希算法根据客户端的 IP 地址生成一个哈希值,将请求固定地转发到某个后端服务器,适用于会话保持(session persistence)。

backend web_serversbalance sourceserver web1 192.168.1.100:80 checkserver web2 192.168.1.101:80 check
  • balance source:表示根据客户端的源 IP 地址来进行负载均衡。
10.1.4 最少连接(Least Connections)

最少连接算法会将请求分发给连接数最少的服务器,适用于长连接或者请求时间不稳定的场景。

backend web_serversbalance leastconnserver web1 192.168.1.100:80 checkserver web2 192.168.1.101:80 check
  • balance leastconn:表示将请求分发给当前连接数最少的服务器。

10.2 连接池与会话保持

HAproxy 提供了连接池机制,允许对服务器连接进行复用,减少了重复连接的开销,提高了性能。

10.2.1 连接池配置
backend web_serversserver web1 192.168.1.100:80 check maxconn 100server web2 192.168.1.101:80 check maxconn 100
  • maxconn 100:为每个后端服务器设置最大连接数限制,当达到最大连接数时,HAproxy 将暂时停止向该服务器转发流量。
10.2.2 会话保持

会话保持可以确保同一客户端的所有请求都被转发到同一后端服务器,这对某些需要会话状态的应用尤为重要(如购物车、登录状态等)。

backend web_serversbalance roundrobincookie SERVERID insert indirect nocacheserver web1 192.168.1.100:80 check cookie web1server web2 192.168.1.101:80 check cookie web2
  • cookie SERVERID insert indirect nocache:HAproxy 会插入一个名为 SERVERID 的 cookie,确保同一个客户端的请求总是访问相同的后端服务器。

10.3 SSL 配置与加密

HAproxy 支持 SSL/TLS 协议,可以用于 SSL 终止(SSL Termination)或者 SSL 透传(SSL Passthrough)。SSL 终止通常用于减少后端服务器的计算负担,而 SSL 透传则将加密流量直接转发给后端服务器。

10.3.1 SSL 终止(SSL Termination)

SSL 终止是指 HAproxy 对客户端请求进行解密,然后将解密后的流量转发给后端服务器。

frontend https-inbind *:443 ssl crt /etc/ssl/private/haproxy.pemdefault_backend web_serversbackend web_serversserver web1 192.168.1.100:80 checkserver web2 192.168.1.101:80 check
  • bind *:443 ssl crt /etc/ssl/private/haproxy.pem:HAproxy 在 443 端口监听 HTTPS 流量,并使用 /etc/ssl/private/haproxy.pem 证书进行 SSL 解密。
10.3.2 SSL 透传(SSL Passthrough)

SSL 透传是指 HAproxy 不解密 SSL 流量,而是将加密流量直接转发给后端服务器。

frontend https-inbind *:443 ssldefault_backend web_serversbackend web_serversserver web1 192.168.1.100:443 check sslserver web2 192.168.1.101:443 check ssl
  • bind *:443 ssl:HAproxy 直接监听 SSL 加密流量并转发给后端服务器。
  • check ssl:启用后端 SSL 检查。

10.4 健康检查与故障转移

HAproxy 提供了强大的健康检查机制,能够自动检测后端服务器的健康状况并做故障转移。可以通过配置 option httpchk 来实现 HTTP 健康检查。

backend web_serversoption httpchk HEAD / HTTP/1.0\r\nHost:localhostserver web1 192.168.1.100:80 checkserver web2 192.168.1.101:80 check
  • option httpchk:指定健康检查请求。
  • check:为后端服务器启用健康检查,只有健康的服务器才会接收流量。

11. HAproxy 性能优化与故障排除

11.1 性能优化

11.1.1 配置连接超时

合理设置连接和请求的超时,避免请求占用过多的资源,导致后端服务器被阻塞。

frontend http-intimeout client 50stimeout server 50stimeout connect 10s
  • timeout client:客户端连接的最大超时时间。
  • timeout server:后端服务器连接的最大超时时间。
  • timeout connect:与后端服务器建立连接的最大超时时间。
11.1.2 调整负载均衡算法的参数

通过调整负载均衡算法的参数,可以更加精确地控制流量的分配。

backend web_serversbalance leastconnoption http-server-closetimeout server 10stimeout connect 5sserver web1 192.168.1.100:80 check weight 2server web2 192.168.1.101:80 check weight 1
  • balance leastconn:基于最少连接进行负载均衡,避免某个后端服务器成为瓶颈。
  • weight:为不同服务器分配不同的流量比例。

11.2 故障排除与日志分析

11.2.1 启用详细日志记录

HAproxy 提供了强大的日志记录功能,可以帮助排查故障。以下配置将日志级别设置为 debug,记录更多的日志信息。

globallog /dev/log local0 debugfrontend http-inlog globaloption httplogoption log-health-checks
  • log /dev/log local0 debug:启用 debug 级别的日志记录,将日志输出到系统日志。
  • option log-health-checks:记录健康检查信息,帮助排查后端服务器的状态。
11.2.2 排查性能瓶颈

通过查看 HAproxy 的日志文件和监控指标,识别系统的瓶颈所在。常见的瓶颈包括:

  • CPU 使用率过高:可能是某些后端服务器的请求处理过于繁重,或者 HAproxy 本身配置不合理。
  • 内存泄漏:HAproxy 在长时间运行中可能出现内存泄漏问题,特别是当配置文件不规范时。
11.2.3 网络故障排查

检查网络连接的健康状态,确保 HAproxy 与后端服务器之间的连接稳定。可以使用 netstatss 命令来查看连接状态。

ss -tuln

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

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

相关文章

物联网低功耗广域网LoRa开发(三):Lora人机界面

一、TFT液晶屏驱动开发 (一)驱动源码移植 (二)硬件接口初始化 根据硬件设计,LoRa与LCD共用SPI总线,且LCD_MISO用于命令/数据模式切换控制 需要修改gpio初始化源码,让片选接口拉高(三)TFT液晶屏…

Android setTheme设置透明主题无效

【问题现象】 1、首先&#xff0c;你在AndroidManifest.xml中声明一个activity&#xff0c;不给application或者activity设置android:theme, 例如这样&#xff1a; <applicationandroid:allowBackup"true"android:icon"mipmap/ic_launcher"android:lab…

JavaScript--定时器

一.定义 关于JavaScript中的计时事件&#xff1f; JavaScript 一个设定的时间间隔之后来执行代码&#xff0c;我们称之为计时事件&#xff08;菜鸟说…&#xff09; 二.方法 2.1计时器 setInterval() &#xff1a; 是什么&#xff1a;这个方法设置一个定时器&#xff0c;…

数据分析-48-时间序列变点检测之在线实时数据的CPD

文章目录 1 时间序列结构1.1 变化点的定义1.2 结构变化的类型1.2.1 水平变化1.2.2 方差变化1.3 变点检测1.3.1 离线数据检测方法1.3.2 实时数据检测方法2 模拟数据2.1 模拟恒定方差数据2.2 模拟变化方差数据3 实时数据CPD3.1 SDAR学习算法3.2 Changefinder模块3.3 恒定方差CPD3…

厦门凯酷全科技有限公司正规吗?

在这个短视频风起云涌的时代&#xff0c;抖音作为电商领域的黑马&#xff0c;正以惊人的速度改变着消费者的购物习惯与品牌的市场策略。在这场变革中&#xff0c;厦门凯酷全科技有限公司凭借其专业的抖音电商服务&#xff0c;在众多服务商中脱颖而出&#xff0c;成为众多品牌信…

tensorflow案例6--基于VGG16的猫狗识别(准确率99.8%+),以及tqdm、train_on_batch的简介

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 本次还是学习API和如何搭建神经网络为主&#xff0c;这一次用VGG16去对猫狗分类&#xff0c;效果还是很好的&#xff0c;达到了99.8% 文章目录 1、tqdm…

AI大模型(二):AI编程实践

一、软件安装 1. 安装 Visual Studio Code VSCode官方下载&#xff1a;Visual Studio Code - Code Editing. Redefined 根据自己的电脑系统选择相应的版本下载 安装完成&#xff01; 2. 安装Tongyi Lingma 打开VSCode&#xff0c;点击左侧菜单栏【extensions】&#xff0c;…

Python实现PSO粒子群优化算法优化CNN-Transformer回归模型(优化权重和阈值)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 本项目旨在利用粒子群优化&#xff08;PSO&#xff09;算法优化卷积神经网络&#xff08;CNN&…

<tauri><websocket>tauri集成web端使用websocket实现数据通讯

前言 本文是在websocket实现通讯的基础上,将前端项目集成到tauri中,以实现桌面窗口程序。 效果展示: 环境配置 系统:windows 平台:visual studio code 语言:javascript、html、rust 库:tauri、nodejs 概述 此前,我的想法是实现网页端与PLC进行socket通讯,利用webs…

Python学习从0到1 day29 Python 高阶技巧 ⑦ 正则表达式

目录 一、正则表达式 二、正则表达式的三个基础方法 1.match 从头匹配 2.search&#xff08;匹配规则&#xff0c;被匹配字符串&#xff09; 3.findall&#xff08;匹配规则&#xff0c;被匹配字符串&#xff09; 三、元字符匹配 单字符匹配&#xff1a; 注&#xff1a; 示例&a…

【鸣潮,原神PC端启动器】仿二次元手游PC端游戏启动器,以鸣潮为例。

二游GAMELauncher启动器 1.前言 许多二次元手游&#xff08;原神&#xff0c;鸣潮&#xff0c;少女前线&#xff09;的PC端启动器都是使用Qt做的&#xff0c;正好最近正在玩鸣潮&#xff0c;心血来潮&#xff0c;便仿鸣潮启动器&#xff0c;从头写一个。先下载一个官方版的PC启…

STM32单片机CAN总线汽车线路通断检测

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着汽车电子技术的不断发展&#xff0c;车辆通信接口在汽车电子控…

H.265流媒体播放器EasyPlayer.js播放器出现加载视频等待画面时长过长的原因排查

在数字媒体时代&#xff0c;用户体验是衡量播放器性能的关键指标之一。EasyPlayer.js网页web无插件播放器作为一款流行的Web视频播放器&#xff0c;其加载速度和响应时间直接影响着用户的观看体验。 1、问题描述 加载视频等待画面时长过长。 2、可能的原因&#xff1a; 检查下…

联想“喜新厌旧”

科技新知 原创作者丨萧维 编辑丨蕨影 十月份&#xff0c;联想很忙。 先是2024联想科技创新大会15日在美国华盛顿州西雅图举行&#xff0c;联想大秀了一下自己在人工智能领域的创新产品、技术和解决方案&#xff0c;英特尔、AMD、英伟达三巨头更同时为其站台&#xff1b;后是与…

fpga 同步fifo

FIFO 基础知识 FIFO&#xff08;First In First Out&#xff0c;即先入先出&#xff09;&#xff0c;是一种数据缓存器&#xff0c;用来实现数据先入先出 的读写方式。在 FPGA 或者 ASIC 中使用到的 FIFO 一般指的是对数据的存储具有先入先出 特性的缓存器&#xff0c;常被用于…

Spark:大数据处理的强大引擎

一、Spark 简介 Apache Spark 是一个专为大规模数据处理而设计的快速、通用、可扩展的大数据分析计算引擎。它诞生于 2009 年&#xff0c;由美国加州伯克利大学的 AMP 实验室开发&#xff0c;2013 年被纳入 Apache 开源项目&#xff0c;并迅速成为顶级项目。 Spark 被认为是 …

常用在汽车PKE无钥匙进入系统的高度集成SOC芯片:CSM2433

CSM2433是一款集成2.4GHz频段发射器、125KHz接收器和8位RISC&#xff08;精简指令集&#xff09;MCU的SOC芯片&#xff0c;用在汽车PKE无钥匙进入系统里。 什么是汽车PKE无钥匙进入系统&#xff1f; 无钥匙进入系统具有无钥匙进入并且启动的功能&#xff0c;英文名称是PKE&…

hive 统计各项目下排名前5的问题种类

实现指定某项目下的数据效果图如下所示&#xff1a; 其中 ABCDE 为前5名的问题种类&#xff0c;其中A问题有124个&#xff08;出现了124次&#xff09; 数据说明&#xff1a; 整个数据集 包含很多项目一个项目 包含很多问题一个问题 选项 可认为是 类别值&#xff0c;所有出…

在 Windows 上搭建 FTP 服务器

&#xff08;1&#xff09;搭建 FTP 服务器 &#xff0c;为 windows 开启 ftp功能 &#xff1a;控制面板 -- 》 程序和功能 -- 》 打开或关闭 windows 功能 &#xff0c;勾选 web 管理工具下所有选项 &#xff0c;如下图所示&#xff1a; &#xff08;2&#xff09;添加 FTP 站…

AI开发-计算机视觉库-OpenCV

1 需求 官网&#xff1a;OpenCV - Open Computer Vision Library 2 接口 3 示例 import cv2image cv2.imread("./data/train/1_1.jpg") print(type(image)) 4 参考资料