基于 TCP 实现极简的业务流控

2020-06-14 11:07:11 +08:00
 feng32
假设有一系列实时数据 (Message 结构) 要通过 TCP 发送

我们要实现: TCP 传输通畅的时候,按照预定速率发送; TCP 阻塞 (但是连接没有断开) 时,可以丢掉一些 Message

我想到的一个非常简单的方法是:把 TCP 发送缓冲区调大点,然后调用 send 时,如果能把 Message 一次性填进去,就填进去,否则就把 Message 整个丢掉

问题来了:这个方案可实施吗?如何让 send api 工作在原子的、非阻塞模式?
3333 次点击
所在节点    程序员
24 条回复
feng32
2020-06-14 15:13:07 +08:00
与其重传过时的内容,选择跳帧
momocraft
2020-06-14 15:29:45 +08:00
隐约读到 "粘包" 两个字
araaaa
2020-06-15 01:00:40 +08:00
traffic shaping
love
2020-06-15 07:34:24 +08:00
通过实际发送消息速率动态调整发送间隔呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/681402

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX