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

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

我使用Lagom创建微服务 . 我是拉格姆的新手,这就是我遇到一些疑虑的原因 .

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

  • 服务中的流消息的Lagom功能说明ServiceCall [Source [String,NotUsed],Source [String,NotUsed]]是从数百个wifi传感器发布数据流(大数据)的正确方法吗?是否有租约来处理接近实时(= 5秒)的大量数据流?

  • secondaly,同时将数据发布到kafka主题,为什么我必须实现持久实体(由Lagom推荐)?因为Kafka本身保证至少一次传递消息

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

回答(1)

2 years ago

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

  • Lagom目前不支持将传入的WebSocket流发布到Kafka . 虽然一旦消息发布到Kafka,Kafka确实至少保证一次,但是在第一次将消息发送到Kafka时,没有这样的保证 . 例如,如果您执行副作用(例如更新数据库),然后发布消息,那么该消息将丢失 . 这就是为什么Lagom鼓励只将数据库事件流发布到Kafka,因为以这种方式发布事件日志确保了任何需要发送到Kafka的数据库操作确实至少发生一次 . 但是,如果你没有,那么这可能与你无关 . 在这种情况下我建议的是直接使用akka-streams-kafka(基于Lagom的Kafka支持) .

我提出了一个引用你的用例here的问题 .