原始笔记是几条零散的思考,这里把”上线方式”和”TCP 负载均衡”分成两节,并保留原文中的疑问。
当前保留内容
1. 重复上线 / 滚动上线带来的不均衡
常用的策略是 round robin(rr)或者 random:
重复上线或者滚动上线,有可能导致负载不均衡。
滚动的过程中,存在掉线的情况,然后轮询就会导致每台机器上的用户数不一致。
核心原因是:滚动期间不断有实例被摘除并重新上线,连接 / 用户的”重新分布”是单向的——已经迁走的连接不会自动回流,最终就会形成长尾的不均衡。
2. TCP 长连接的负载均衡思路
TCP 长连接和无状态 HTTP 不同,简单的四层 LB 不一定够用,原始笔记中列了几个仍然待思考的方向:
- client 与 server 建立多个连接:通过多连接打散流量,降低单连接长尾的影响。
- 后端额外的 router / 路由模块:用一个独立模块记录 client 与 server 的连接关系,便于做迁移、亲和性调度等。
- TCP 会话保持:保证同一个 client 始终路由到同一台 server,简化状态管理,但牺牲了部分均衡性。
- 基于 hash 的分配:例如
hash(client_id) % N,实现简单,但实例数量变化时需要考虑一致性 hash 等手段。
后续可补的方向
这篇后续如果继续整理,建议至少补下面几类内容:
- 滚动上线时常见的”再均衡”手段:主动断连、按比例 drain、慢启动等
- 一致性 hash / rendezvous hash 的对比与适用场景
- 连接级别 vs 请求级别负载均衡的取舍
- 真实业务里测过的指标(QPS / 连接数 / 延迟)和踩过的坑
当前这篇先当作一个”负载均衡思考”的待扩充占位条目。
FEATURED TAGS
Git
Cheat Sheet
Markdown
Tools
C++
Linker
Thread
Linux
TCP
Network
GDB
Debug
leetcode
链表
WSL
Ubuntu
Windows
Linux Kernel
GCC
Android
adb
Troubleshooting
Profiling
Sanitizer
glibc
MySQL
Database
Python
curl
Build
ELF
clang-format
CMake
Graphviz
Performance
vcpkg
Protobuf
排查
速查
内存
STL
调试
性能分析
性能
读书笔记
方法论
架构
网络
Timer
mbedTLS
TLS
安全
负载均衡
脚本
工具
LRU
二叉树
BST
中序遍历
回溯
二分查找
优先队列
排序
旋转数组
jenkins
部署