【发布时间】:2019-11-16 17:01:11
【问题描述】:
以下场景
每分钟从队列接收 60,000 条消息。 REST API 每分钟提供 10 次来自这些消息的数据。
我有一个带有事件溯源和 CQRS 的微服务架构。所以我的命令已经与查询部分分开了。问题在于同步查询和查询它,而不是命令部分。
每隔几分钟就会发送大约 60,000 条命令,并使用 event-sourcing 模式将其存储为事件。通过 CQRS 将实际数据(不是事件)同步到另一个将其存储在数据库中的服务。同时数据每隔几分钟只被读取十几次。
换句话说。这个服务接收 60,000 次写入操作,但只有十几个读取操作。
我真的很想坚持微服务的设计模式,又名one database per service,但出于扩展原因,我认为这在我的场景中不可行。写入数据库需要比读取数据库更大的扩展。
我看到了similar question,但答案建议使用我已经实现的 CQRS。之前有人告诉我要删除事件源,但这仍然给我留下了 60,000 次写入和 10 次读取。
独立扩展读写的架构应该是什么?我正在考虑创建两个单独的服务,但这违反了one database per service 模式。
【问题讨论】:
-
我理解正确吗?你在同一个微服务中实现 CQRS 并且它们使用同一个数据库?
-
@xargs-mkdir 否,消息被发送到事件存储,该事件存储持久化事件并将相同的消息发送到另一个微服务将其存储为查询模型的流中。
标签: design-patterns microservices scaling cqrs event-sourcing