Load Balance
- DPDK - Data Plane Development Kit
- 直接在网卡开发应用实现抓发,绕过内核处理,做到性能最大化
- 绕过内核
- Netfilter
- Linux 提供的内核机制,用于网络相关处理
- OpenOnload
- 网络栈
- FDio/vpp - fd.io 的项目 - The Fast Data Project
- open source version of Cisco's Vector Packet Processing (VPP) technology
- 参考
- Kernal bypass
- 如何绕过内核以提高性能
- PACKET_MMAP - Linux 接口,快速网络嗅探
- PF_RING - 加速包捕获,不在 linux 主干
- Snabbswitch - L2,使用 Lua 编写的框架,对网卡编程,绕过内核网络栈
- DPDK
- Netmap
- 10 Open Source Load Balancer for HA and Improved Performance
- iqiyi/dpvs - high performance Layer-4 load balancer based on DPDK
- Building a Billion User Load Balancer
- Kernal bypass
策略
- roundrobin
- SMA - simple moving average
- ewma - Exponentially Weighted Moving Average - 指数加权移动平均
- 分析和预测时间序列数据
- adopted by Linkerd, Apisix, NGINX Ingress
- 优点
- 反应速度快
- 缺点
- 边界效应
- 滞后性
- 参考
- Peak EWMA
- 专门设计来跟踪和平滑数据序列中的峰值。
- 它在处理具有尖峰或极端值的时间序列数据时特别有用,比如网络流量、交易量或资源使用率等,其中峰值的快速检测对于系统监控、预警和资源规划至关重要。
- 参考
- least_conn
- chash
- aperture
- p2c - power of two choices
- HAProxy balance
- roundrobin, static-rr, leastconn, first, hash, source, uri, url_param, hdr, random, rdp-cookie, log-hash, sticky
- Finagle Load Balancing
- 计算型场景
- Heap + Least Loaded
- P2C + {Least Loaded, Peak EWMA}
- Aperture + Least Loaded
# https://flugel.it/kubernetes/kubernetes-nginx-ingress-consistent-hash-subset-load-balancer/
nginx.ingress.kubernetes.io/load-balance: ewma
nginx.ingress.kubernetes.io/upstream-hash-by: ewma
NOTE
- LB 需要考虑
- 支持的协议层级
- 支持的应用协议
- 支持的负载权重因子