代码之家  ›  专栏  ›  技术社区  ›  user3139545

理解具有数据流的持久实体

  •  0
  • user3139545  · 技术社区  · 7 年前

    我不明白的是,我将我的Aggregare根建模为一个TwitterMessages列表,例如,在运行一段时间后,这个Aggregare根的大小将达到几GB。无需将所有推特消息存储在内存中,因为这一服务的目标只是保留每个输入消息,然后将消息发布给Kafka,供下一个服务处理。

    1 回复  |  直到 7 年前
        1
  •  2
  •   James Roper    7 年前

    事件源是一个很好的默认选择,但不是所有事情的正确解决方案。在你的情况下,这可能不是正确的方法。首先,你需要保留推文,还是直接发布给卡夫卡?

    假设您需要持久化它们,那么聚合应该将验证传入命令和生成新事件所需的任何内容存储在内存中。根据您所描述的,您的聚合不需要任何数据来实现这一点,因此您的聚合不会是Twitter消息的列表,而可以是 NotUsed

    另一种方法是自己直接将消息存储在卡桑德拉中,然后在完成后直接发布给卡夫卡。这将简单得多,涉及的机制更少,并且应该可以很好地扩展,只要确保您在Cassandra中明智地选择分区键列,我可能会按用户id进行分区。

    推荐文章