UDP multicast¶
是什么 / 解决什么问题¶
UDP multicast 常用于行情分发:一份数据由网络复制给多个订阅者,发送端不需要为每个接收者维护连接。
基本模型¶
接收端加入组播组:
struct ip_mreq mreq;
mreq.imr_multiaddr.s_addr = inet_addr("239.1.1.1");
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
行情系统关注点¶
- UDP 不保证可靠、有序、唯一。
- feed 通常带 sequence number。
- 接收端要做 gap detection。
- 丢包后通过 snapshot 或 replay channel 恢复。
- socket buffer 太小会在突发行情时丢包。
观测与调试¶
面试高频问题¶
UDP 丢包怎么处理¶
不能只说“调大 buffer”。交易系统通常在协议层使用 sequence number 检测 gap,再从 snapshot/replay 服务恢复状态。调 buffer 和 CPU 亲和性是减少丢包,不是语义修复。