面试题答案
一键面试协议组合设计
- UDP + TCP
- UDP:负责实时性要求高的数据传输,如实时音视频流数据。UDP 无连接、开销小、传输速度快,适用于实时性业务,即使部分数据包丢失,也不影响整体数据的时效性。例如在视频会议场景中,少量视频帧丢失可能只会造成短暂画面卡顿,但不会导致严重问题。
- TCP:用于传输对完整性要求极高的数据,如系统配置信息、关键指令等。TCP 提供可靠的面向连接的传输服务,通过确认机制、重传机制保证数据的准确无误传输。比如系统的升级指令,必须确保完整准确到达目标节点。
- UDP + SCTP
- UDP:同样处理实时性强的数据。
- SCTP:流控制传输协议,具有多流、多宿特性。在分布式系统中,对于一些需要保证顺序且有一定实时性要求的数据,如特定业务逻辑的消息序列,可使用 SCTP。它在保证可靠性的同时,相比 TCP 有更好的实时性能,能在一定程度上满足实时性要求。
处理协议间交互问题
- 数据分流与调度
- 设计一个数据分发模块,根据数据的类型和实时性、完整性要求,将数据合理分配到不同协议的传输通道。例如,对于实时监控数据,优先通过 UDP 发送;对于用户账户信息修改等对完整性要求高的数据,通过 TCP 或 SCTP 发送。
- 端口复用与冲突处理
- 尽量复用端口,以减少系统资源占用。但要确保不同协议在同一端口上的数据接收和发送不会产生冲突。可以在应用层协议头部添加标识,用于区分不同协议的数据。例如,设置特定的协议标识字段,在接收端根据该字段判断数据所属协议,再进行相应处理。
- 错误处理与协调
- 当 UDP 传输出现丢包等错误时,若该数据同时也有 TCP 或 SCTP 备份传输(如关键业务数据同时通过 UDP 和 TCP 传输,UDP 用于快速获取部分数据,TCP 保证完整可靠传输),则以 TCP 或 SCTP 传输的数据为准。对于仅通过 UDP 传输的数据,若丢包导致业务异常,可通过应用层反馈机制,请求源端重新发送相关数据。
- 若 TCP 或 SCTP 传输出现连接故障等问题,而此时 UDP 通道正常,可临时通过 UDP 发送关键的控制信息,告知相关节点进行故障处理或重新建立连接。