处理 QLDB 会话的正确方法

Proper way to handle QLDB Session

我想知道如何在 node.js 应用程序中处理 qldb 会话。

我应该为应用程序的整个范围创建一个会话,还是应该在每批交易之前创建一个新会话?

现在我在每个事务之前创建一个会话,并且在 运行 单元测试(为每个测试创建一个新会话)时我遇到了一些 OCC 冲突。

您应该根据需要使用尽可能多的会话来达到所需的吞吐量水平。每个会话可以 运行 单个事务,并且每个事务都有一定的延迟。因此,例如,如果您的交易需要 10 毫秒,那么您每秒可以进行 100 次交易(1 秒 = 1000 毫秒,1000/10 = 100)。如果您需要达到 1000 TPS,则需要 10 个会话。

驱动程序带有 "pool" 个会话。因此,每个事务都应该从池中请求一个会话。池将 grow/shrink 根据需要。

每个会话不能超过 15 分钟(有一些抖动)。因此,您应该处理使用会话引发异常(无效会话)并重试操作(获取会话,运行 事务)的情况。

就 OCC 而言,我认为这很可能与您对会话的使用无关。 OCC 意味着您在事务中读取的数据在您尝试提交时已更改。通常这意味着您没有设置正确的索引,因此您的读取正在扫描 table.

中的所有项目