【问题标题】:Proper way to handle QLDB Session处理 QLDB 会话的正确方法
【发布时间】:2019-11-21 13:53:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: node.js aws-sdk amazon-qldb


    【解决方案1】:

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

    驱动程序带有一个会话“池”。因此,每个事务都应该从池中请求一个会话。池将根据需要增大/缩小。

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

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

    【讨论】:

    • 实际上我正在使用来自 qldb 的索引(使用 BY 子句)。在任何情况下我都应该创建自己的吗?
    • 如果我们可以通过一个例子来工作可能会更有用。也许您可以链接到显示您正在尝试完成的任务的文件或要点?
    猜你喜欢
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 2013-10-01
    相关资源
    最近更新 更多