交易应用程序权衡:数据库和低延迟

时间:2011-09-02 09:13:14

标签: database architecture trading low-latency

几乎每个业务应用程序都需要数据库来存储数据以及对该数据执行的事务。事务通常需要大约几毫秒的时间。同时,在交易应用程序中,一个完全不可接受的是“延迟”。那么,在这些应用程序中需要权衡取决于延迟的上限?

例如,客户已经进行了交易,它必须通过一些检查,这些检查存储在数据库中,需要进行数据库提取。然后,交易应该传递给OMS / ORS或交易所。而且,在每一层,都需要在数据库中存储某种交易数据。如何在事务持久性和低延迟之间保持平衡?

2 个答案:

答案 0 :(得分:2)

两件事:

  • 缓存:缓存应用程序中的规则,这样您就不需要为每笔交易点击数据库
  • 线程化:将存储事务数据的代码放入另一个线程中。像这样,您可以立即将交易路由到交易所,并保证数据库中的数据与此平行。

答案 1 :(得分:0)

现在人们使用内存交易系统,所以你减少了数据库获得的网络延迟。

以下是您可以考虑的低延迟

的一些事项
  • 要在java中实现低延迟,你必须在java中控制GC,有很多方法可以做到这一点,例如预分配对象(即使用flyweight设计模式),使用原始对象 - trove非常适合,所有数据结构都基于原语,重用对象实例,例如创建系统范围的字典以减少创建新对象,从stream / socket / db读取数据时非常好的选择

- 尝试减少争用使用等待算法(这有点困难),锁定自由算法。你可以找到很多这样的例子

- 使用内存计算。内存很便宜,你可以在内存中有tera字节的数据。

- 使用技术上的同情 - 参考lmax disruptor,优秀的框架