问题描述
我正在寻找有关流协议(类似于视频/音频流)的一些想法/提示,以实时发送任何数据。
简单来说:
- 我每秒生成一些数据(假设一个数组每秒有 1MB 的数据)并且我正在将这些数据从最重要到不那么重要(例如将它们放入优先级队列或类似队列)
- 我想通过某种协议继续流式传输这些数据,在完美的情况下,我想发送所有数据
- 如果不可能(带宽、丢包等),我想尽可能多地从每个生成的数组(前 n 字节)发送数据,以保持数据继续运行(开始每秒发送新生成的数组很重要) ).
现在 - 我正在寻找这样的协议/库来处理任何数据的自适应比特率内容。我希望它告诉我我可以发送多少数据(放入发送缓冲区或类似的方法)。最相似的是视频/音频流,当网络条件不佳时(编码器)根据网络条件改变质量。 如果我错过了一些发送数据也没关系(所以 UDP 深入这些东西是可以的)但最好我希望每秒发送尽可能多的数据而不会丢失任何东西(从那些第一个 n 字节发送)。>
您对我可以用于客户端/服务器的协议/库有什么想法吗? (希望有一些 Python、C 或 C++ 中的库)。
解决方法
我认为 IPFIX(通用 NetFlow 标准)拥有您需要的一切。
您可以通过在每次更改速率时发送 samplingInterval 更新来避免每个样本的时间戳。您还可以在采样中添加其他异步更新的变化。
至于将数据放在哪里。您可以创建一个新字段或仅使用具有所需数据类型的现有字段。 IE:如果您只是发送 uint64 示例值,那么使用 packetDeltaCount
然后创建您自己的字段定义可能更容易。
有很多 IPFIX libraries。