在 Lagom 微服务中摄取流数据的最佳方法

Best approach to ingest Streaming Data in Lagom Microservice

我正在创建流分析应用程序,其中每个 analytics/functionality 都将作为微服务实施,以便此分析稍后可以在不同的项目中使用。

我正在使用 Lagom 创建微服务。我是 lagom 的新手,这就是为什么我遇到了一些疑问。

我不明白什么是 Post 我的数据流(来自多个传感器)到微服务然后这个微服务将数据发布到 kafka 主题的最佳方法。

  1. 服务描述中是否有流消息的Lagom功能 ServiceCall[ Source[String, NotUsed], Source[String, NotUsed]] 从数百个 wifi 传感器获取 Post 数据流(大数据)是否正确?它是否有租约来处理近乎实时(=5 秒)接收的大量数据流?

  2. 其次,同时将数据发布到 kafka 主题,为什么我必须这样做 实施持久实体(Lagom 推荐)?因为卡夫卡 本身保证消息至少传递一次

我的应用不是CRUD应用,它只支持处理流式数据。

  1. Lagom 的流式调用使用 WebSockets。它建立在 Play 的 WebSocket 支持之上,可以扩展到数百万个连接的客户端。我不会将数百个 wifi 传感器称为大量数据,Lagom 应该可以轻松处理它,而且 Lagom 也可以轻松地水平扩展,因此如果您正在进行的处理很繁重,您可以轻松地将处理分散到多个节点.

  2. Lagom 当前不支持将传入的 WebSocket 流发布到 Kafka。虽然 Kafka 确实保证至少一次 一旦消息被发布到 Kafka,但在第一个实例中将该消息发送到 Kafka 时没有这样的保证。例如,如果你做了一个副作用,比如更新数据库,然后发布一条消息,不能保证如果应用程序在数据库更新和消息发布到 Kafka 之间崩溃,那条消息最终会被发布到 Kafka(实际上不会,那条消息会丢失)。这就是 Lagom 只鼓励将数据库事件流发布到 Kafka 的原因,因为以这种方式发布事件日志确实可以保证任何需要发送到 Kafka 的数据库操作至少发生一次。但是,如果您没有做副作用(听起来好像没有),那么这可能与您无关。在这种情况下,我建议的是直接使用 akka-streams-kafka(Lagom 的 Kafka 支持建立在什么基础上)。

我已针对您的用例提出问题 here