lagom允许将读取侧处理器分成碎片以扩展事件处理。
object BlogEvent {
val NumShards = 20
val Tag = AggregateEventTag.sharded[BlogEvent](NumShards)
}
sealed trait BlogEvent extends AggregateEvent[BlogEvent] {
override def aggregateTag: AggregateEventShards[BlogEvent] = BlogEvent.Tag
}
假设我有5个节点,这是否意味着碎片总数为20 x 5 = 100,还是整个集群中的碎片总数为20?
这是整个集群的碎片总数。
假设我有5个节点,这是否意味着碎片的总数将为20 x 5 = 100,或者总的碎片总数在整个集群中为20?
number_of_shards = 20 * numer_of_processors
使用您的示例:
object BlogEvent {
val NumShards = 20
val Tag = AggregateEventTag.sharded[BlogEvent](NumShards)
}
在您的群集中,无论大小有多大,总会有20个读取侧处理器消耗BlogEvent
s流的实例。这意味着,如果您创建了BlogRSSReadSideProcessor
和BlogAtomReadSideProcessor
和BlogTopicProducer
,则每种碎片总共将出于其自己的目的(RSS,ATOM或发出主题(,每个碎片每次消耗特定的流标签。这意味着您的数据库将保持60个连接,以轮询Journal
表。