2

我正在创建流分析应用程序,其中每个分析/功能都将作为微服务实现,以便该分析能够在以后用于不同的项目中。

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

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

  1. 服务描述ServiceCall[ Source[String, NotUsed], Source[String, NotUsed]]中流消息的 Lagom 特性是否 是从数百个 wifi 传感器发布数据流(大数据)的正确方法?它是否有能力处理近乎实时(= 5 秒)接收的大量数据流?

  2. 其次,在向 kafka 主题发布数据时,为什么我必须实现持久实体(Lagom 推荐)?因为 Kafka 本身保证了至少一次的消息传递

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

4

1 回答 1

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

  2. Lagom 目前不支持将传入的 WebSocket 流发布到 Kafka。虽然 Kafka 确实保证至少一次将消息发布到 Kafka,当首先将该消息输入 Kafka 时,没有这样的保证。例如,如果您执行副作用,例如更新数据库,然后发布消息,则无法保证如果应用程序在数据库更新和消息发布到 Kafka 之间崩溃,则该消息最终会发布到 Kafka(实际上不会,该消息会丢失)。这就是为什么 Lagom 只鼓励将数据库事件流发布到 Kafka,因为以这种方式发布事件日志确实可以保证任何需要发送到 Kafka 的数据库操作至少会发生一次。但是,如果你没有做副作用,听起来你没有,那么这可能与你无关。

我在这里提出了一个引用您的用例的问题

于 2017-04-07T00:59:30.677 回答