企业级负载均衡方案:Nginx vs HAProxy - 从0到1的完整实战指南 转载

news/2025/9/18 14:03:44/文章来源:https://www.cnblogs.com/testzcy/p/19098641

企业级负载均衡方案:Nginx vs HAProxy - 从0到1的完整实战指南 转载

原文链接:https://mp.weixin.qq.com/s/l1X8jjZROGBXg8gVNfgnGw

企业级负载均衡方案:Nginx vs HAProxy - 从0到1的完整实战指南

前言:为什么负载均衡是现代架构的必需品?

想象一下,你的电商网站在双十一当天需要处理平时100倍的流量,单台服务器显然无法承受。这时候,负载均衡就像是一个智能的交通指挥员,将海量请求合理分配到多台后端服务器,确保系统稳定运行。

作为一名运维工程师,我在过去5年里部署过上百套负载均衡方案,见证了从小创业公司到千万用户平台的架构演进。今天,我将毫无保留地分享Nginx和HAProxy这两大负载均衡利器的实战经验,帮你在技术选型时做出最明智的决策。

一、架构对比:血统与设计哲学的差异

Nginx:Web服务器的华丽转身

Nginx最初是作为Web服务器设计的,后来逐渐演化出强大的负载均衡能力。它采用事件驱动的异步架构,单个worker进程可以处理数万个并发连接。

核心特点:

  • • 基于epoll/kqueue的事件循环
  • • 内存占用极低(一般不超过几十MB)
  • • 配置语法直观,学习成本低
  • • 生态丰富,第三方模块众多

HAProxy:专业负载均衡的王者

HAProxy从诞生之日起就专注于负载均衡,它的设计哲学是"做好一件事"。采用单线程事件循环模型,在高并发场景下表现出色。

核心特点:

  • • 专注于L4/L7负载均衡
  • • 丰富的健康检查机制
  • • 强大的统计和监控功能
  • • 配置文件更加结构化

二、性能测试:数据说话的真实对比

测试环境搭建

在实际对比之前,我搭建了一套标准的测试环境:

# 测试环境配置
# 负载均衡器:2核4GB内存
# 后端服务器:4台,每台1核2GB内存
# 网络:千兆内网
# 测试工具:wrk + Apache Bench

并发性能测试

测试场景1:静态文件代理

# 测试命令
wrk -t12 -c1000 -d30s --latency http://lb-server/static/index.html

测试结果:

  • • Nginx:处理请求数 85,000 req/s,平均延迟 11.8ms
  • • HAProxy:处理请求数 78,000 req/s,平均延迟 12.8ms

测试场景2:动态API代理

# 测试API接口
curl -X POST http://lb-server/api/users \
  -H "Content-Type: application/json" \
  -d '{"username":"test","email":"test@example.com"}'

测试结果:

  • • Nginx:处理请求数 45,000 req/s,平均延迟 22.1ms
  • • HAProxy:处理请求数 52,000 req/s,平均延迟 19.2ms

内存占用对比

在相同负载下:

  • • Nginx:内存占用 45MB-60MB
  • • HAProxy:内存占用 25MB-35MB

小结: Nginx在静态文件处理上略胜一筹,而HAProxy在动态请求处理和资源占用方面表现更优。

三、配置实战:从入门到精通

Nginx负载均衡配置详解

◆ 基础配置模板

# /etc/nginx/nginx.conf
upstream backend_servers {
# 负载均衡算法:轮询(默认)
server192.168.1.10:8080 weight=3 max_fails=3 fail_timeout=30s;
server192.168.1.11:8080 weight=2 max_fails=3 fail_timeout=30s;
server192.168.1.12:8080 weight=1 backup;

# 保持连接
keepalive32;
}

server {
listen80;
server_name api.example.com;

location / {
proxy_pass http://backend_servers;

# 关键代理头设置
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# 超时设置
proxy_connect_timeout30s;
proxy_send_timeout30s;
proxy_read_timeout30s;

# 缓冲设置
proxy_bufferingon;
proxy_buffer_size4k;
proxy_buffers84k;
    }
}

◆ 高级负载均衡策略

# 基于IP哈希的会话保持
upstream backend_sticky {
    ip_hash;
server192.168.1.10:8080;
server192.168.1.11:8080;
server192.168.1.12:8080;
}

# 最少连接数算法
upstream backend_least_conn {
    least_conn;
server192.168.1.10:8080;
server192.168.1.11:8080;
server192.168.1.12:8080;
}

# 基于响应时间的fair算法(需要第三方模块)
upstream backend_fair {
    fair;
server192.168.1.10:8080;
server192.168.1.11:8080;
server192.168.1.12:8080;
}

HAProxy负载均衡配置详解

◆ 完整配置模板

# /etc/haproxy/haproxy.cfg
global
    daemon
    user haproxy
    group haproxy

    # 性能调优
    maxconn 40000
    nbproc 1
    nbthread 4

    # 日志配置
    log 127.0.0.1:514 local0

    # 统计socket
    stats socket /var/run/haproxy.sock mode 600 level admin

defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

    # 错误页面
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend web_frontend
    bind *:80
    bind *:443 ssl crt /etc/ssl/certs/example.com.pem

    # 基于域名的路由
    acl is_api hdr(host) -i api.example.com
    acl is_static hdr(host) -i static.example.com
    acl is_websocket hdr(Connection) -i upgrade

    # 路由规则
    use_backend api_backend if is_api
    use_backend static_backend if is_static
    use_backend websocket_backend if is_websocket
    default_backend web_backend

backend api_backend
    balance roundrobin

    # 健康检查
    option httpchk GET /health
    http-check expect status 200

    # 服务器配置
    server api1 192.168.1.10:8080 check weight 100 maxconn 1000
    server api2 192.168.1.11:8080 check weight 100 maxconn 1000
    server api3 192.168.1.12:8080 check weight 50 maxconn 500 backup

backend web_backend
    balance leastconn
    cookie SERVERID insert indirect nocache

    server web1 192.168.1.20:8080 check cookie web1
    server web2 192.168.1.21:8080 check cookie web2
    server web3 192.168.1.22:8080 check cookie web3

# 统计页面
listen stats
    bind *:8404
    stats enable
    stats uri /stats
    stats refresh 10s
    stats admin if TRUE

◆ 高级特性配置

# SSL终止和HTTPS重定向
frontend https_frontend
    bind *:443 ssl crt /etc/ssl/certs/wildcard.pem

    # 安全头设置
    http-response set-header Strict-Transport-Security max-age=31536000
    http-response set-header X-Frame-Options DENY
    http-response set-header X-Content-Type-Options nosniff

    default_backend secure_backend

# 基于URL路径的路由
frontend api_gateway
    bind *:80

    # API版本路由
    acl is_v1_api path_beg /api/v1/
    acl is_v2_api path_beg /api/v2/
    acl is_admin_api path_beg /admin/

    # 限流配置
    stick-table type ip size 100k expire 30s store http_req_rate(10s)
    http-request track-sc0 src
    http-request deny if { sc_http_req_rate(0) gt 20 }

    use_backend v1_api_backend if is_v1_api
    use_backend v2_api_backend if is_v2_api
    use_backend admin_backend if is_admin_api

四、高可用架构设计

主备模式配置

Keepalived + Nginx 高可用方案

# /etc/keepalived/keepalived.conf (主节点)
vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    weight -2
    fall 3
    rise 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass nginx_ha
    }
    virtual_ipaddress {
        192.168.1.100/24
    }
    track_script {
        chk_nginx
    }
    notify_master "/etc/keepalived/notify_master.sh"
    notify_backup "/etc/keepalived/notify_backup.sh"
}

◆ 健康检查脚本

#!/bin/bash
# /etc/keepalived/check_nginx.sh
counter=0
while [ $counter -lt 3 ]; do
    nginx_status=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1/health)
if [ $nginx_status -eq 200 ]; then
exit 0
fi
    counter=$(($counter + 1))
sleep 1
done
exit 1

多活负载均衡架构

# Docker Compose 多活部署
version:'3.8'
services:
nginx-lb1:
image:nginx:alpine
ports:
-"80:80"
-"443:443"
volumes:
-./nginx.conf:/etc/nginx/nginx.conf
networks:
-lb_network
deploy:
replicas:2

haproxy-lb1:
image:haproxy:2.4-alpine
ports:
-"8080:80"
-"8404:8404"
volumes:
-./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
networks:
-lb_network
deploy:
replicas:2

networks:
lb_network:
driver:overlay

五、监控与运维实战

Nginx监控配置

# 启用状态页面
location /nginx_status {
stub_statuson;
access_logoff;
allow127.0.0.1;
allow192.168.1.0/24;
deny all;
}

# 自定义日志格式
log_format detailed '$remote_addr - $remote_user [$time_local] '
'"$request$status$body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$upstream_addr$upstream_response_time$request_time';

access_log /var/log/nginx/detailed.log detailed;

HAProxy监控与告警

# 监控脚本
#!/bin/bash
# check_haproxy.sh
HAPROXY_STATS_URL="http://127.0.0.1:8404/stats;csv"

# 检查后端服务器状态
check_backend_health() {
    unhealthy=$(curl -s "$HAPROXY_STATS_URL" | \
        grep -E "(DOWN|MAINT)" | wc -l)

if [ $unhealthy -gt 0 ]; then
echo"WARNING: $unhealthy backend servers are down"
# 发送告警通知
        /usr/local/bin/send_alert.sh "HAProxy Backend Health Check Failed"
fi
}

# 检查连接数
check_connection_count() {
    connections=$(curl -s "$HAPROXY_STATS_URL" | \
        awk -F',''{sum += $5} END {print sum}')

if [ $connections -gt 10000 ]; then
echo"WARNING: High connection count: $connections"
fi
}

check_backend_health
check_connection_count

Prometheus监控集成

# prometheus.yml 配置
scrape_configs:
-job_name:'nginx'
static_configs:
-targets: ['nginx-exporter:9113']
scrape_interval:15s

-job_name:'haproxy'
static_configs:
-targets: ['haproxy-exporter:8404']
scrape_interval:15s
metrics_path:'/stats/prometheus'

六、性能调优秘籍

Nginx性能调优

# 主配置优化
worker_processes auto;
worker_rlimit_nofile65535;
worker_connections65535;

events {
useepoll;
worker_connections65535;
multi_accepton;
}

http {
# 文件缓存优化
open_file_cache max=10000 inactive=60s;
open_file_cache_valid80s;
open_file_cache_min_uses2;
open_file_cache_errorson;

# 连接优化
sendfileon;
tcp_nopushon;
tcp_nodelayon;
keepalive_timeout30;
keepalive_requests1000;

# 压缩优化
gzipon;
gzip_varyon;
gzip_comp_level6;
gzip_types text/plain text/css application/json application/javascript;
}

HAProxy性能调优

global
    # 系统调优
    maxconn 100000
    spread-checks 5
    tune.maxaccept 100
    tune.bufsize 32768
    tune.rcvbuf.server 262144
    tune.sndbuf.server 262144

    # CPU绑定
    nbproc 4
    cpu-map 1 0
    cpu-map 2 1
    cpu-map 3 2
    cpu-map 4 3

defaults
    # 超时优化
    timeout connect 3s
    timeout client 30s
    timeout server 30s
    timeout http-keep-alive 10s
    timeout check 5s

    # 连接复用
    option http-server-close
    option forwardfor
    option redispatch
    retries 3

系统级调优

# /etc/sysctl.conf 系统参数优化
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65535
net.ipv4.tcp_max_tw_buckets = 5000

# 应用配置
sysctl -p

七、故障排查与运维经验

常见问题诊断

◆ Nginx常见问题

问题1:502 Bad Gateway

# 排查步骤
1. 检查后端服务是否正常
curl -I http://backend-server:8080/health

2. 检查Nginx错误日志
tail -f /var/log/nginx/error.log

3. 检查防火墙设置
iptables -L -n | grep 8080

4. 验证upstream配置
nginx -t && nginx -s reload

问题2:高延迟问题

# 性能分析
# 1. 检查连接池配置
upstream backend {
    server 127.0.0.1:8080;
    keepalive 100;  # 增加连接池大小
}

# 2. 启用access log分析
awk '{sum+=$NF;count++} END {print sum/count}' access.log

◆ HAProxy常见问题

问题1:健康检查失败

# 检查健康检查配置
backend web_servers
    option httpchk GET /api/health
    http-check expect status 200
    http-check expect string "OK"

    server web1 192.168.1.10:8080 check inter 2000ms rise 3 fall 2

问题2:会话保持问题

# Cookie会话保持调试
backend app_servers
    balance roundrobin
    cookie JSESSIONID prefix nocache

    server app1 192.168.1.10:8080 check cookie app1
    server app2 192.168.1.11:8080 check cookie app2

应急处理预案

#!/bin/bash
# 应急处理脚本
ALERT_EMAIL="ops@company.com"
LOG_PATH="/var/log/lb_emergency.log"

emergency_traffic_shift() {
echo"$(date): Emergency traffic shift initiated" >> $LOG_PATH

# 将流量切换到备用集群
    curl -X POST http://dns-api.com/switch-traffic \
        -d "from=primary&to=backup" \
        -H "Authorization: Bearer $API_TOKEN"

# 发送通知
echo"Emergency: Traffic shifted to backup cluster" | \
        mail -s "Load Balancer Emergency"$ALERT_EMAIL
}

auto_scale_backend() {
    current_load=$(curl -s http://monitor-api/current-load)
if [ $current_load -gt 80 ]; then
echo"$(date): Auto-scaling triggered, load: $current_load%" >> $LOG_PATH
# 触发自动扩容
        kubectl scale deployment web-app --replicas=10
fi
}

八、技术选型决策指南

Nginx适用场景

最佳应用场景:

  1. 1. 静态资源服务 - 图片、CSS、JS文件的高性能分发
  2. 2. API网关 - 微服务架构的统一入口
  3. 3. SSL终止 - HTTPS卸载和证书管理
  4. 4. 内容缓存 - 减轻后端服务器压力
  5. 5. 小到中型项目 - 配置简单,运维成本低

技术优势:

  • • 学习曲线平缓,配置直观
  • • 社区活跃,文档详细
  • • 模块化设计,功能扩展性强
  • • 内存占用低,适合资源受限环境

HAProxy适用场景

最佳应用场景:

  1. 1. 高并发Web应用 - 电商、金融等流量密集型业务
  2. 2. 数据库负载均衡 - MySQL、PostgreSQL集群
  3. 3. TCP负载均衡 - 游戏服务器、实时通信
  4. 4. 企业级应用 - 对稳定性要求极高的场景
  5. 5. 复杂路由需求 - 基于内容的智能分发

技术优势:

  • • 专业负载均衡,算法丰富
  • • 健康检查机制完善
  • • 统计信息详细,便于监控
  • • 高可用性,故障恢复快

选型决策矩阵

评估维度NginxHAProxy权重
性能表现 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ 30%
配置复杂度 ⭐⭐⭐⭐⭐ ⭐⭐⭐ 20%
功能丰富度 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ 25%
社区生态 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ 15%
运维成本 ⭐⭐⭐⭐ ⭐⭐⭐ 10%

九、未来发展趋势

云原生时代的挑战

Service Mesh的兴起:随着Kubernetes和Istio的普及,传统负载均衡器面临新的挑战。Service Mesh提供了更细粒度的流量控制,但传统负载均衡器仍在边缘网关场景中发挥重要作用。

边缘计算的需求:CDN边缘节点需要轻量级、高性能的负载均衡方案,Nginx在这个领域具有天然优势。

技术演进方向

HTTP/3支持:

# Nginx HTTP/3 配置示例
server {
listen443 quic reuseport;
listen443 ssl http2;

ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;

add_header Alt-Svc 'h3-29=":443"; ma=86400';
}

WebAssembly扩展:未来负载均衡器将支持WASM插件,提供更灵活的自定义功能。

十、总结与建议

经过深入的技术对比和实践验证,我给出以下建议:

技术选型建议

选择Nginx,如果你:

  • • 团队对Nginx更熟悉,希望快速上线
  • • 需要同时提供Web服务和负载均衡
  • • 项目规模中小型,对复杂特性需求不高
  • • 预算有限,希望降低运维成本

选择HAProxy,如果你:

  • • 业务对高可用要求极高,不能容忍停机
  • • 需要复杂的负载均衡算法和健康检查
  • • 有专业的运维团队,可以驾驭复杂配置
  • • 流量巨大,需要榨取每一点性能

最佳实践总结

  1. 1. 不要孤立地看待负载均衡器 - 它是整个架构的一个组件,需要与监控、自动化、安全等系统协同工作
  2. 2. 监控是生产环境的生命线 - 无论选择哪种方案,都要建立完善的监控体系
  3. 3. 容量规划要提前 - 根据业务增长预期,提前做好性能测试和容量规划
  4. 4. 灾难恢复预案必不可少 - 制定详细的应急处理流程,定期演练

写在最后

负载均衡技术的选择没有银弹,关键在于理解业务需求,结合团队能力做出最适合的选择。我希望这篇文章能够帮助你在技术选型时少走弯路,如果你有任何问题或想要讨论特定场景的最佳实践,欢迎在评论区交流。

作为运维工程师,我们的职责不仅是保证系统的稳定运行,更要在技术演进的过程中,为业务发展提供强有力的技术支撑。让我们一起在这个充满挑战和机遇的领域继续前行!


本文基于作者多年的生产环境实践经验总结,所有配置示例均在实际环境中验证。如果觉得有帮助,欢迎点赞收藏,也欢迎关注我获取更多运维技术干货!

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

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

相关文章

ALINX 助力希腊 SpaceDot AcubeSAT 卫星任务,2026 将入太空

ALINX 助力希腊 SpaceDot AcubeSAT 卫星任务,2026 将入太空pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

负载均衡层详解part 4

# keepaviled高可用 ## 一、keepaviled简介 负载均衡由七层负载均衡衍生出多级负载均衡,多出来四层负载均衡,再往前分就是DNS轮询,各种简单的、复杂的场景搭配用就可以了,有一个问题始终没有解决,整个集群架构中有…

重磅!中国科学引文数据库(CSCD)收录期刊(2025-2026)目录公布!共收录1464种期刊!

经过中国科学引文数据库(Chinese Science Citation Database,简称CSCD)定量遴选、专家定性评估, 2025-2026年度中国科学引文数据库收录来源期刊1464种,其中英文版期刊418种,中文版期刊1046种。 中国科学引文数据…

Flash Attenion算法原理

Flash Attenion算法原理 1.1 Flash Attention Step-by-Step1.2 Softmax \( \text{softmax}(x_i) = \frac{e^{x_i}}{\sum_{k=1}^{N} e^{x_k}} \)import torch A = torch.randn(2, 6) A_exp = torch.exp(A) A_sum = tor…

谷歌云平台(Google Cloud Platform, GCP)介绍(全球领先的云计算服务平台,为企业和开发者供应包括计算、存储、数据分析、人工智能、机器学习、网络和安全等在内的全面云服务)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于svCom制作windows服务(一)

基于svCom制作windows服务(一)这是一个老牌的,专门为开发windows服务的控件!可惜是收费的。 如何用这个框架建立服务呢? 1.用向导建立,如下图: 再建立一个Service: 现在,我们建立一个Windows service程序了!下…

电流探头消磁失败的原因与解决策略

在电子测量领域,电流探头的精准度是确保测试数据可靠性的关键因素,而消磁操作则是维持其测量精度的重要环节。消磁的主要目的是消除探头内部磁芯的剩磁,防止其对后续测量造成干扰。然而,在实际操作过程中,电流探头…

【算法】双指针(四)-盛最多水的容器 - 实践

【算法】双指针(四)-盛最多水的容器 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

程序设计小学期小计

小学期游记程序设计小学期小计 昨天奋斗到晚 12 点,算是完成了小游戏的所有功能,小游戏的主体流程算是全部完成了。写一篇小计记录一下。 截至目前,这个项目已经有了 \(233\) 次提交,若干次的合并,构筑起了这个小…

企业级实时消息推送系统的架构设计,一文即懂!

企业级实时消息推送系统的架构设计,一文即懂!如果你是技术负责人,该如何搭建一套能解决这些问题的企业级统一消息推送平台?今天我们就从核心挑战出发,拆解一套可落地的统一推送服务架构方案。本文由腾讯云架构师技…

3dma渲染噪点成因排查及优化方案 - 详解

3dma渲染噪点成因排查及优化方案 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

hadoop配置日志聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。日志聚集功能好处:可以方便地查看到程序运行详情,方便开发调试。 注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和His…

高级版Duplicate Same Files Searcher v10.7.0:秒扫全盘重复档神器 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

vxe-tree-select 树形下拉框当使用懒加载数据时如何回显

vxe-tree-select 树形下拉框当使用懒加载数据时如何回显 当使用懒加载或者当某个选项被删除时,显示自定义回显;比如使用懒加载树列表,由于数据未被加载,这时候已选的数据就不能被回显,导致显示了 value值,而不是…

如何解除 pip install 安装报错 ModuleNotFoundError: No module named ‘win32api’ 问题

如何解除 pip install 安装报错 ModuleNotFoundError: No module named ‘win32api’ 问题pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importa…

在嵌入式 Linux 上使用容器 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:基于RSim的域控制器HIL测试系统设计方案

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:新手怎么利用Qt连接汇川Easy系列的小型PLC

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

hbase学习一

什么是HBase? HBase是一个基于HDFS的、分布式、可扩展、面向列的NoSQL数据库。它起源于Google的BigTable论文,是Apache Hadoop生态系统的重要组成部分,专门用于处理海量数据的随机、实时读写访问。为什么需要HBase?…

Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …