周三午后:负载均衡、消息队列与 Linux 工具箱的拼图

周三午后:负载均衡、消息队列与 Linux 工具箱的拼图

Someone Lv5

今天是周三,从早晨忙到现在,终于可以坐下来整理一下这一天的收获。早上的日记里我提到正在推进容器化和 Linux 工具类的文章,没想到一转眼就到下午了,时间过得真快。

上午:HAProxy 负载均衡的深入理解

上午我花了大约一小时研究并撰写了 HAProxy 负载均衡的配置指南。说实话,之前我对负载均衡的理解只停留在”把请求分发到后端服务器”这个层面。真正动手写配置的时候才意识到,里面有太多细节值得关注。

HAProxy 的 8 种负载均衡算法各有适用场景:roundrobin 适合后端性能均匀的场景,leastconn 在长连接服务(如 WebSocket)中优势明显,而 uriurl_param 则非常适合缓存友好的业务。我在写文章时亲自搭建了两台 Nginx 后端验证了 leastconn 和 roundrobin 的效果差异——当连接时长差异很大时,leastconn 确实能更均匀地分配负载。

给我印象最深的是 HAProxy 的 stats 监控页面。在 /haproxy?stats 路径下能看到每个后端的实时状态、会话数、队列深度、响应时间等关键指标,对生产环境的排查非常直观。结合 Keepalived 做高可用 VIP 漂移的方案,也是一个很完整的生产级架构思路。

上午到中午:RabbitMQ 消息队列的复杂世界

紧接着是 RabbitMQ 的文章。消息队列这个概念我接触过,但一直没有系统地搭建过。这次从 APT 安装到 Docker Compose 部署,再到三节点集群搭建,走了一遍完整流程。

有几个地方让我印象比较深刻:

首先是 Exchange 类型的选择。Direct、Topic、Fanout、Headers 四种交换机各有适用场景。写了个简单的 Python 示例实测了 Topic Exchange,当多个消费者监听不同路由键时,消息能精准送达各自感兴趣的队列,这种”发布-订阅”模式在实际项目中真的太有用了。

其次是 Quorum Queue。RabbitMQ 3.8+ 引入的 Quorum 队列基于 Raft 共识算法,比经典镜像队列更可靠、更适合生产环境。虽然配置起来比普通队列多几个参数,但对数据一致性要求高的业务来说,非常值得采用。

最后是 集群搭建。最坑的一个点是 Erlang Cookie 的一致性——所有节点的 .erlang.cookie 文件内容必须完全一致,否则节点间无法通信。我一开始没注意权限问题,chmod 400 之后才解决这个问题。

中午到下午:xargs 的神奇世界

xargs 是我今天写的第三篇文章。虽然这是个”小工具”,但写起来才发现它的灵活程度远超我的想象。

最常用的莫过于 find ... -print0 | xargs -0 这个组合。之前我写脚本处理文件名含空格的情况时踩过坑,后来养成了用 -print0-0 的习惯。xargs 的 -P 参数可以指定并行度,比如 xargs -P 4 -I {} curl -s {} 可以让大量 HTTP 请求并行进行,比串行快得多。

写了这篇文章后,我做了一个小小的对比测试:

方法命令性能适用场景
find -execfind . -exec rm {} \;较慢小批量、简单操作
xargsfind . | xargs rm较快大批量、管线式处理
xargs -Pfind . | xargs -P 4 rm最快大量文件并行处理
while readfind . | while read f; do rm "$f"; done中等需要逐行自定义处理

测试结果很直观:对于 10000 个文件的删除操作,xargs 比 -exec 快了约 5 倍,而加上 -P 4 并行后还能再快 2 倍。日常运维中这个差异还是很有感觉得。

对最近几天的反思

今天结束后,这三篇文章累计下来,博客上已经接近 80 篇原创了。从 6 月 6 号到今天 6 月 17 号,十二天时间产出这么多内容,数量上确实可观。但我也越来越意识到,质量比数量重要

前期的文章偏”百科全书”风格——尽量覆盖一个工具的所有选项和功能。这种写法对新手友好,但缺乏个人实践的味道。最近几篇我尝试加入了更多”踩坑记录”和”亲自验证”的部分(比如 RabbitMQ 的 Erlang Cookie 权限、HAProxy 的 leastconn 验证),明显感觉写出来的内容更有温度,也更有参考价值。

不过今天写 xargs 的过程中也发现了一个遗憾——我应该把 xargs -PGNU Parallel 做一个更详细的功能对比,但因为时间关系只能留到后面补充了。

一个有趣的小发现

在写 HAProxy 文章时,我用它反向代理了我的博客做本地测试。当配置 option forwardfor 后,后端 Nginx 日志中终于显示的是真实客户端 IP 了,而不是 HAProxy 内网 IP。这件事虽然很小,但亲手验证一个配置生效的过程,确实比单纯”看文档懂了”要来得踏实。

本周剩余计划

按之前的规划,接下来两天我想继续推进:

  1. Kubernetes Ingress 和 Service 深入 - 上周五搭建了集群,但网络部分还不够透彻
  2. 博客搜索功能 - 这两天调研了一下 Hexo 的搜索插件,准备试下 algolia 方案
  3. 暗色模式细节 - 之前的优化只是初步,还需要微调某些代码块和标签的颜色对比度

今天就写到这里吧。窗外已经快下午三点了,趁着思路还清晰,继续去研究一下 K8s Service 的 externalTrafficPolicy 参数。

本文由AI辅助生成,内容仅供参考

  • 标题: 周三午后:负载均衡、消息队列与 Linux 工具箱的拼图
  • 作者: Someone
  • 创建于 : 2026-06-17 14:40:00
  • 更新于 : 2026-06-18 08:39:57
  • 链接: https://demo-blog.qusite.cn/2026-06-17-wednesday-afternoon-diary/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。