Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 缓冲通道可将数据累积到某个极限_Go_Buffer_Channel - Fatal编程技术网

Go 缓冲通道可将数据累积到某个极限

Go 缓冲通道可将数据累积到某个极限,go,buffer,channel,Go,Buffer,Channel,我的应用程序使用来自Kinesis的数据,对其进行处理并将其转发给另一个微服务。为了将请求的数量减少到最后一个,我尝试实现一个对象队列,该队列具有一个策略,即一旦达到定义的队列长度或超时,就转发其项目(以避免长时间卡住项目) 到目前为止,我已经找到了一个很好的例子来实现超时,但是我正在努力处理对象队列。我已经读了很多关于缓冲通道的书,但是我不确定它们是否合适 根据,缓冲通道可用于限制排队的工作量,防止您的服务落后和不知所措。然而,似乎我需要的不是限制工作量,而是简单地累积要成批处理的工作量(我的

我的应用程序使用来自Kinesis的数据,对其进行处理并将其转发给另一个微服务。为了将请求的数量减少到最后一个,我尝试实现一个对象队列,该队列具有一个策略,即一旦达到定义的队列长度或超时,就转发其项目(以避免长时间卡住项目)

到目前为止,我已经找到了一个很好的例子来实现超时,但是我正在努力处理对象队列。我已经读了很多关于缓冲通道的书,但是我不确定它们是否合适

根据,缓冲通道可用于限制排队的工作量,防止您的服务落后和不知所措。然而,似乎我需要的不是限制工作量,而是简单地累积要成批处理的工作量(我的运动流数据)


因此,对于我的对象队列来说,一个切片和一个检查其长度的go例程是否足够,这样数据一旦达到一定大小就会被转发?或者有充分的理由使用缓冲通道?

为此,阵列和通道之间没有功能上的区别。它们都是固定/最大长度的集合。如果你指的是切片,当你说数组时,那么你的结构可以无限增长(直到你耗尽内存)。如果您打算在队列达到一定大小时耗尽它,那么这可能也不是必需的。那么,您又回到了考虑等效阵列与通道的问题。简而言之:选择一个你最容易使用的。实际上我指的是切片。谢谢你的帮助!如果不涉及并发性,那么通道发送/接收的幕后锁定语义表示简单队列数据结构不必要的开销。在这个宏大的计划中,可能可以忽略不计的开销,但要记住一些事情。不确定你想做什么,也许你的措辞被误解了。你考虑过分批完成这项工作吗。这里有一个简单的例子