客户端接受到股票行情数据,每次接受一条,如何快速写入流数据表?如何快速写入dfs表?如何提高写入效率?考虑延迟和吞吐量两个指标。

客户端接受到股票行情数据,每次接受一条,如何快速写入流数据表?如何快速写入dfs表?如何提高写入效率?考虑延迟和吞吐量两个指标。

请先 登录 后评论

1 个回答

Yating Xie

 提高写入效率的建议

1、提高网速。分布式系统的数据写入过程中有很多网络传输过程,建议至少万兆以太网,以避免网络延迟过高。


2、批量写入,不建议单条写入。因为单条记录写入也要把所有过程都进行一遍,延迟就会高,比如写log、打开一个事务、多个来回的网络传输等等,这些都是无法避免的开销,只有在写数据的那一步比批量写入花的时间稍微少一点,所以非常建议批量写入。目前c++、python、c# API均已经支持批量写入。


3、提高remoteexecutor的数量,默认是1。一个节点收到数据之后需要往各个节点发送数据,如果remoteexecutor等于1,则只有一个线程在发数据,所以可以通过增加remoteexecuto的数量,实现同时往多个节点并行地发送数据。


4、压缩数据。dolphindb提供了自动地数据压缩,对数据量比较大的情况会对数据块进行压缩,以减小网络带宽。


5、提前在客户端分割数据。在dfs下数据节点上会做将要写入的数据根据分区方法进行分组的操作,可以在客户端提前做以减少这部分开销。


6、批量异步写入。多线程批量处理,至少两个线程,一个线程不停地接收数据,维护一个队列,另一个线程从队列里不停地拿数据,写完以后又从队列里拿数据。


如有兴趣,可以参考另一个回答dolphindb数据写入详细过程,有助于理解如何优化写入性能。

请先 登录 后评论
  • 1 关注
  • 0 收藏,1146 浏览
  • BMO 提出于 2021-11-25 11:06