0

我是 Lagom 和持久性实体数据库概念的新手。

我正在构建流分析引擎。我的每个分析都将作为独立的微服务工作,并且根据其设计理念,对于每个单独的微服务,结果将保存在自己的数据库中(我的案例 Cassandra)。我正在使用 Flink 和 Spark 进行流分析,然后使用 Phantom for Flink(Cassandra 的 Scala 驱动程序)将结果发送到 Cassandra。我无法理解 Lagom 框架中的以下挑战。

  1. 为了存储分析结果,我仍然需要实现持久性实体(PE)来将记录存储在 Cassandra 中,或者我应该购买它并可以直接存储到 Cassandra?我的应用程序既不支持删除器也不支持更新。仅插入以可视化结果。Flink & Spark 已经支持容错。

  2. 如何在没有持久性实体的情况下访问 Cassandra 会话?

  3. 如果我在 Lagom 中使用 Phantom 驱动程序,那么它与 Lagom 的嵌入式 Cassandra 有一些冲突;无法在服务定位器中注册服务。

您能否建议我应该如何处理这种情况。也就是说每一个微服务,它的架构都是基于KAPPA 架构的

谢谢

4

1 回答 1

2

如果你有一个事件流,那么每个使用它的微服务都可以保留所有事件的副本,或者维护一个物化视图。可以在在线拍卖示例应用程序的搜索服务中看到此类微服务的示例。在链接代码中,有一个类使用两个不同的流(在本例中为 Kafka 主题)并将数据存储到 ElasticSearch 索引中。同样可以使用 Cassandra 或其他数据库来实现。

如果您尝试在 Lagom 提供的内容之上导入 cassandra 驱动程序,您可能会面临更多问题。在这种情况下,我建议您:(1)不要依赖任何 lagom-persistence-xxx 以便只使用您的驱动程序或(2)使用CassandraSessionLagomlagomScaladslPersistenceCassandra模块提供的(请参阅Lagom Persistence 文档)。如果您选择使用 seconds 选项,则必须添加CassandraSession到类的构造函数中,然后您的依赖注入Loader将确保提供足够的实例。查看链接代码中构造函数中的 3 个参数以及加载器用于macwire注入它们的方式。请注意,您必须混合ReadSideCassandraPersistenceComponents特征CassandraSession才能注入。

于 2017-04-19T09:37:43.453 回答