分片号与在Lagom中标记事件有关?

问题描述 投票:0回答:1

Q1。这样每个事件都会得到不同的分片号吗?Q2。如果有3个分片但只有一个事件怎么办,那么它会被分片成这三个之一吗?剩下的2个碎片呢,现在不是多余的吗?Q3。即使使用不同的分片中的不同标签对事件进行分片,如何维护顺序?

    eg. say events are as follows -

    UserCreated-3
    ProductAdded-2
    ProductAdded-1
    UserCreated-2
    UserCreated-1

    Now it is sharded into two -

In shard -1 say,
    UserCreated-3
    UserCreated-2
    UserCreated-1

In shard-2, say
    ProductAdded-2
    ProductAdded-1

现在,在某些时候它们将被合并,那么如何维持订单?

scala microservices sharding event-sourcing lagom
1个回答
0
投票

Lagom使用Akka Persistence标签实现Journal Sharding,它允许多个读取侧处理器在单个日志上并行工作。

这是如何工作的:

  1. 一个持久实体的实例将使用相同的分片标识符来标记其所有事件,以便以正确的顺序读取单个实体的所有事件
  2. 来自不同实体的事件可能会无序处理,因为User-A的事件和User-B的事件可能会由读取侧处理器的不同实例处理

如果需要事件的绝对排序,则不得使用事件分片,而应使用单个标记器。问题在于您将失去读取侧处理器的吞吐量,因为将仅创建一个实例。

© www.soinside.com 2019 - 2024. All rights reserved.