几乎每个业务应用程序都需要数据库来存储数据以及在该数据上完成的事务。事务通常需要毫秒数量级的时间。同时,在交易应用程序中,完全不能接受的一件事是“延迟”。那么,在此类需要延迟上限的应用程序中做出的权衡是什么?
例如,客户进行了一笔交易,它必须通过一些检查,这些检查存储在数据库中,需要进行数据库提取。然后,应将交易传递给 OMS/ORS 或交易所。而且,在每一层,都需要在数据库中存储某种交易数据。应该如何在事务持久性和低延迟之间保持平衡?
几乎每个业务应用程序都需要数据库来存储数据以及在该数据上完成的事务。事务通常需要毫秒数量级的时间。同时,在交易应用程序中,完全不能接受的一件事是“延迟”。那么,在此类需要延迟上限的应用程序中做出的权衡是什么?
例如,客户进行了一笔交易,它必须通过一些检查,这些检查存储在数据库中,需要进行数据库提取。然后,应将交易传递给 OMS/ORS 或交易所。而且,在每一层,都需要在数据库中存储某种交易数据。应该如何在事务持久性和低延迟之间保持平衡?
两件事情:
现在人们使用内存事务系统,因此您可以减少通过数据库获得的网络延迟。
以下是您可以考虑的一些低延迟事项
- 尝试使用免等待算法(这有点困难)、无锁算法来减少争用。你可以找到大量的例子
- 使用内存计算。内存很便宜,你可以在内存中存储 TB 的数据。
- 使用机械同情 - 参考 lmax 破坏者,优秀的框架