我们目前正在使用谷歌任务队列来分批请求,以将分析数据存储到Keen和Stathat(批量投入更高性能)。为了从任务队列中消耗,我们有一组流程代理和工作者从任务队列中消耗。将数据流看作是我们只是编写推送到我们的分析解决方案的逻辑的地方,我们可以指定在我们的数据流程序中进行处理时批处理的大小,我很好奇数据流的开销(似乎更多更大的应用程序)非常适合。这是Dataflow的一个很好的用例吗?
0
A
回答
2
您的用例对于Dataflow来说似乎很不错。您可以发布到pubsub作为将数据流式传输到Dataflow作业的方式,而不是发布到任务队列。您的数据流作业可以使用Dataflow窗口和触发器根据大小和/或时间批量处理数据。然后,您可以将每批写入您的数据存储。
数据流应该适用于小数据集。开销可能会以数据流工作者未使用的CPU周期为代价。数据流允许您控制工作人员的数量,以便您可以分配多个适合您的数据大小的工作人员。
利用率取决于您的负载在多大程度上均匀分布。如果您的峰值和平均负载差异很大,那么您可以在延迟和利用率之间进行权衡。如果你想保持低延迟,那么你可以选择工人的数量,以便在高峰期保持高速运转。另一方面,如果要最大限度地利用利用率,则可以根据平均负载来配置工作人员的数量。在高峰时段,您将开始在pubsub中积累积压的消息。系统将在非高峰时段有剩余容量时摆脱积压。
现在Dataflow不支持为无界数据编写自定义接收器。解决此问题的一种方法是从DoFn而不是接收器进行写入。这应该工作得很好,只要你可以以幂等的方式进行写操作,以便多次写入记录不会导致问题。
窗口和触发器是一种将数据划分为可以应用聚合(例如分组,求和等)的有限批量的方法。这blog post解释它比我更好(看“窗口”部分)。
相关问题
- 1. 这是一个很好的使用继承的例子吗?
- 2. 这是Redis的一个很好的用例吗?
- 3. 这是一个很好的策略模式用例吗?
- 4. 这是一个很好的习惯吗?
- 5. 这是一个很好的IF块吗?
- 6. 这是很好的XML吗?
- 7. 这是一个很好的使用ActionBar?
- 8. 这是一个很好的使用案例来使用服务?
- 9. Singleton模式是RedissonClient的一个很好的用例吗?
- 10. 这是Singleton模式的一个很好的用法吗?
- 11. 这是装饰者模式的一个很好的用法吗?
- 12. 这是一个很好的用例延期?
- 13. 这是一个很好的用例OAUTH2和OpenID Connect
- 14. 这是一个很好用的嵌套类吗?
- 15. 这是JS中面向对象的一个很好的例子吗?
- 16. 这是JavaScript中的一个很好的变量名吗?
- 17. SQL中的单行表:这是一个很好的实现吗?
- 18. 这是一个很好的学习游戏的JavaScript框架吗?
- 19. WebApp + Ionic for Mobile的Bootstrap。这是一个很好的组合吗?
- 20. 这是一个很好的实现gameloop
- 21. 这是一个很好的PATCH格局
- 22. 这个程序很好吗?
- 23. 这是Apache Camel的一个不好的用例吗?
- 24. PhpUnit是一个很好的习惯吗?
- 25. 这是一个很好的例子为策略模式
- 26. 这是很好的链接练习吗?
- 27. 这是使用RoutedCommand的好例子吗?
- 28. 可选外键 - 这是一个很好的解决方案吗?
- 29. DynamicObject:这是一个很好的解决方案吗?
- 30. 这是一个很好的React练习吗?
我相信这会要求我们编写自定义接收器,并在此处声明:https://cloud.google.com/dataflow/model/custom-io “数据流计划添加对定制接收器的支持未来版本中的无限数据 “ 从文档中我不完全清楚,但是窗口/触发器是否掩盖了数据无界的事实? –
从文档中我不完全清楚,但是窗口/触发器是否掩盖了数据无界的事实? 触发器文档还不完全清楚: https://cloud.google.com/dataflow/model/triggers “注意:您可以为无界PCollection设置触发器,该无限PCollection使用其单个全局窗口窗口功能... “ –
增加了两个段落来解决您的问题。请让我知道如果它仍然不清楚。 –