我正在创建流式分析应用程序,其中每个分析/功能都将实现为一个微服务,以便这些分析可以在以后的不同项目中使用。
我使用lagom创建微服务。我是新来拉各姆的,这就是为什么我遇到了一些疑问。
我不知道什么是将我的数据流(来自多个传感器)发布到microservice,然后这个microservice将数据发布到kafka主题的最佳方法。
服务描述servicecall[source[string,notused],source[string,notused]]中的流消息的lagom特性是不是正确的方法来发布来自数百个wifi传感器的数据流(大数据)?它是否有权处理近实时(=5秒)接收的大量数据流?
第二,在将数据发布到kafka时,我讨论了为什么必须实现持久实体(lagom推荐)?因为Kafka本身保证至少有一次信息传递
我的应用程序不是crud应用程序,它只支持处理流数据。
1条答案
按热度按时间6vl6ewon1#
lagom的流电话使用WebSocket。它建立在play的websocket支持之上,可以扩展到数百万连接的客户端。我不会把数百个wifi传感器称为海量数据,lagom应该很容易处理,lagom也可以很容易地横向缩放,因此如果你正在做的处理很繁重,你可以很容易地将处理分散到许多节点上。
lagom当前不支持将传入的websocket流发布到kafka。虽然Kafka确实保证至少有一次消息被发布到Kafka,但在第一次将该消息放入Kafka时,没有这样的保证。例如,如果您执行了一个副作用,例如更新数据库,然后发布消息,则无法保证如果应用程序在更新数据库和将消息发布到kafka之间崩溃,则该消息最终将发布到kafka(事实上不会,该消息将丢失)。这就是lagom只鼓励将数据库事件流发布到kafka的原因,因为以这种方式发布事件日志可以保证任何需要发送到kafka的数据库操作至少发生一次。然而,如果你没有副作用,听起来你没有,那么这可能与你无关。在这种情况下,我建议直接使用akkastreams-kafka(lagom的kafka支持是建立在这个基础上的)。
我在这里提出了一个引用您的用例的问题。