盘古BPM体验地址    盘古BPM交流群盘古BPM交流群号:963222735

《Flowable基础十九 Flowable 高并发下使用的UUID id生成器》

分享牛 4306℃

高并发下使用的UUID id生成器

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

    默认的id生成器的替代品是org.flowable.engine.impl.persistence.StrongUuidGenerator,它会在本地生成一个唯一的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>

转载请注明:分享牛 » 《Flowable基础十九 Flowable 高并发下使用的UUID id生成器》