网络算法实用技巧与解决方案
1. 减少确认信息的技术
在数据传输中,减少确认信息(acks)是提高效率的重要手段。一种技术是将确认信息搭载在从接收方流向发送方的数据上,多数传输协议(如 TCP)在数据包中设有额外字段来传递反向确认信息。然而,这种搭载方式存在延迟和搭载效率之间的权衡问题。例如,接收方传输应该等待多长时间来获取反向数据呢?另外,在一些常见应用中,发送方应用程序可能知晓相关信息,那么如何扩展之前的解决方案,使其既能支持搭载确认信息,又能实现确认信息的批量处理呢?
同时,积极的确认信息保留策略可能会与传输协议的其他方面(如流量和拥塞控制)产生交互。这是在评估改进方案时需要考虑的问题。
2. 大型数据库的增量读取
在用户持续读取存储在网站上的大型数据库时,往往只希望获取自上次读取以来的增量更新。例如,有一个热门食品数据库,不同用户在不同时间读取,他们只关心两次读取之间数据库的差异。如果数据库要记住每个用户之前读取的内容,对于可能存在数百万用户的情况来说是不现实的。
为了解决这个问题,可采用以下方法:
- 用户的读取请求需传递关于上一次读取请求的信息,最简洁且相关的信息是上次读取的时间。
- 数据库添加一个更新历史列表,最新的更新靠近列表头部。读取请求携带上次读取的时间 T,通过从列表头部扫描更新列表,找到 T 之后的所有更新。
以下是一个简单的示例:
| 数据库状态 | 更新时间 |
| ---- | ---- |
| Coke, Apples, Pies, Wheaties | 2 pm |
| Pepsi, Apples, Pies, Wheat