我应该在redux商店中存储高吞吐量,结构化的传感器数据吗?

时间:2017-11-15 16:03:34

标签: reactjs redux react-redux

我最近开始使用React,到目前为止,我已经构建了几个应用程序,包括一个用于操作和可视化传感器数据的实时应用程序。该数据包括来自100Hz-200Hz的websockets的高吞吐量,结构化JSON帧。

由于我的应用程序在复杂性方面迅速增长,在通过官方文档和Dan Abramov的课程了解Redux之后,我发现使用Redux非常有吸引力来管理应用程序的视觉状态,路由,服务器信息等。

在我的React-non-Redux应用程序中,一切都保持在本地状态,但这在架构设计中有成本。现在,我想开始重构应用程序以集成redux。由于我目前的知识有限,我一直坚持这个关于存储传感器流的地方的架构决策'数据以及对应用程序呈现和处理性能的影响。

在redux文档中,有一些经验法则可用于确定应将哪种数据放入Redux:

  • 应用程序的其他部分是否关心此数据? [YES]
  • 您是否需要能够基于此创建更多的派生数据 原始数据? [YES]
  • 是否使用相同的数据来驱动多个组件? [YES]
  • 能否将此状态恢复到给定状态对您是否有价值 时间点(即时间旅行调试)? [YES]
  • 您是否要缓存数据(例如,如果是,请使用状态 已经在那里,而不是重新请求它)? [MAYBE]

有几个主题在讨论这个问题,但没有任何确定的答案。我也无法对此发表评论(这里有SO noob):

我发现了我需要学习的许多不同的后果,包括中间件,RxJS等。我想进一步推动开发,但由于所有这些都需要时间来掌握,我想参考社区一些方向。

提前致谢!

1 个答案:

答案 0 :(得分:3)

我目前正在使用redux为小部件提供数据,我会说传入速率大约在80-90赫兹之间,我仍然在小部件画布上获得60 fps'。就像丹在他的帖子中所说,使用redux没有什么本质上的缓慢。但是,每秒更新你的UI 200次是完全没必要的,我至少会添加一些中间件(如果你不想拥有一台服务器)来减少每秒最多60次的更新。 Redux可能不会那么慢,但尝试每秒渲染200次肯定是。

但是我会说,我最近必须做出同样的决定,并将数据流保存在redux中,使得在我的应用程序中访问它们变得更加简单。

我发现使用网络工作者是将数据合并到单个更新中的好方法。如果你还没有我会检查出https://developer.mozilla.org/en-US/docs/Web/API/Worker。如果您决定朝这个方向前进,它可能会对性能有很大帮助,因为工作人员将直接处理websocket连接,并以更加可控的方式执行动作调度。