返回介绍

18.3. 高并发下使用的 UUID ID 生成器

发布于 2023-09-17 23:40:35 字数 1066 浏览 0 评论 0 收藏 0

在某些(非常)高并发负载的情况下,默认的ID生成器可能会由于不能足够快地获取新的id块而产生异常。每个流程引擎都有一个ID生成器。默认的ID生成器会在数据库中保存一块ID,这样其他引擎就不能使用同一个块中的ID。引擎运行时,当ID生成器发现ID块已经用完,就会启动一个新的事务,来获取一个新的块。在(非常)有限的使用场景下,当负载非常高时可能导致问题。对于大多数用例来说,默认的ID生成器已经足够使用了。默认的org.flowable.engine.impl.db.DbIdGenerator也有一个idBlockSize参数,用于配置保留的ID块的大小,调整获取ID的行为。

可以使用org.flowable.engine.impl.persistence.StrongUuidGenerator替换默认的ID生成器。它会在本地生成唯一的UUID,并将其用于所有实体的标识符。因为UUID不需要访问数据库就能生成,因此在非常高并发的使用场景下更合适。请注意取决于机器,性能可能与默认的ID生成器不同(更好更坏都有可能)。

可以在flowable配置中,像下面这样配置UUID生成器:

<property name="idGenerator">
  <bean class="org.flowable.engine.impl.persistence.StrongUuidGenerator" />
</property>

使用UUID id生成器需要添加下列额外依赖:

 <dependency>
  <groupId>com.fasterxml.uuid</groupId>
  <artifactId>java-uuid-generator</artifactId>
  <version>3.1.3</version>
</dependency>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文