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

2024-02-23

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

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

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

  1. Lagom 是否在服务描述中提供流消息功能 ServiceCall[源[字符串,未使用],源[字符串,未使用]] 这是从数百个 WiFi 传感器发布数据流(大数据)的正确方法吗?它是否有能力处理近实时(= 5秒)接收的大量数据流?

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

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


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

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

我提出了一个参考您的用例的问题here https://github.com/lagom/lagom/issues/659.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Scala:“递归值...需要类型”,但我只使用 Java 类型

    object Rec extends App val outStream new java io ByteArrayOutputStream val out new java io PrintStream new java io Buffe
  • 读取不同文件夹深度的多个 csv 文件

    我想递归地将给定文件夹中的所有 csv 文件读入 Spark SQLDataFrame如果可能的话 使用单一路径 我的文件夹结构如下所示 我想包含具有一个路径的所有文件 resources first csv resources subfo
  • Akka中有轻量级的actor吗?

    我的用例非常简单 在两个对象之间交换少量 现在我正在从 Scala Actors 迁移到 Akka 但是我再也找不到那些轻量级 Actors 使用Akka 我不仅需要为Actor创建创建ActorSystem Props 还需要照顾Acto
  • Kafka不启动空白输出

    我正在努力安装 Kafka 和 Zookeeper 我已经运行了 Zookeeper 并且它当前正在运行 我将所有内容设置为 https dzone com articles running apache kafka on windows
  • SBT插件——编译前执行自定义任务

    我刚刚编写了我的第一个 SBT 自动插件 它有一个生成设置文件的自定义任务 如果该文件尚不存在 当显式调用任务时 一切都会按预期工作 但我希望在使用插件编译项目之前自动调用它 无需项目修改其 build sbt 文件 有没有办法实现这一点
  • Scala apply 方法调用,因为括号与隐式参数冲突

    Cay Horstmann 的书 Scala for the Impressive 中有一段关于 apply 方法的注释 有时 表示法会与另一个 Scala 功能发生冲突 隐式参数 例如 表达式 Bonjour sorted 3 产生错误
  • Scala 中的高级类型 [重复]

    这个问题在这里已经有答案了 我正在阅读 Scala 中的函数式编程一书 在 Monoids 章节中 他们讨论了 Monoid 接口 如下所示 trait Monoid A def op a1 A a2 A A def zero A 后来 他
  • Spark scala:大量列上的简单 UDF 会导致性能下降

    我有一个包含 1 亿行和约 10 000 列的数据框 这些列有两种类型 标准 C i 和动态 X i 这个dataframe是经过一些处理后得到的 性能很快 现在只剩下2步了 Goal 需要使用 C i 列的相同子集对每个 X i 执行特定
  • Kafka Java Consumer 已关闭

    我刚刚开始使用卡夫卡 我面临着消费者的一个小问题 我用Java写了一个消费者 我收到此异常 IllegalStateException 此消费者已关闭 我在以下行中遇到异常 ConsumerRecords
  • 在 scala 中混合类型参数和抽象类型

    我正在尝试使用的答案前面的问题 https stackoverflow com questions 2059601 circular type parameters definition in scala实现一个小型图形库 这个想法是将图视
  • 使一个 sbt 配置依赖于另一个配置

    sbt 文档显示了如何仅在项目之间声明依赖关系的示例 但我确信有方法可以声明一个配置依赖于另一个配置 就像测试配置使用编译配置中的类路径一样 如何声明我自己的配置 以便它依赖于编译配置生成的类路径 我更仔细地研究了建议的解决方案 然后又出现
  • Scala 类型别名破坏了类型兼容性

    我始终相信 如有必要 类型别名总是会扩展为其原始类型 但是 这里有一个麻烦制造者 def a P a Option P type Res List P result type alias Nil Res Replace this line
  • Kafka 中的内部和外部通信

    流动 本地 gt 代理 gt Kafka advertised listeners PLAINTEXT proxyhostname 8080 for external communication listeners PLAINTEXT 90
  • Spark DataFrame 不尊重架构并将所有内容视为字符串

    我面临着一个多年来一直无法克服的问题 我使用的是 Spark 1 4 和 Scala 2 10 我现在无法升级 大型分布式基础设施 我有一个包含几百列的文件 其中只有 2 列是字符串 其余都是长列 我想将此数据转换为标签 特征数据框 我已经
  • Spark - 构建时出现 scala 初始化错误

    我正在尝试在我的 scala 应用程序中使用 Spark 这是我正在使用的 Spark 依赖项
  • SBT - 使用汇编时多项目合并策略和构建 sbt 结构

    我有一个由多个较小项目组成的项目 其中一些项目相互依赖 例如 有一个依赖于 commons 项目的实用程序项目 其他项目可能依赖于公用事业或公共设施 也可能不依赖于两者 在 build sbt 中 我在文件末尾有程序集合并策略 以及程序集中
  • 这是一种在 Akka FSM 中内部监视到第一个状态的转换的方法吗?

    考虑从状态 Idle 开始的 FSM actor startWith Idle IdleData 我想监视到第一个状态的转换 从无状态 I tried onTransition case gt Idle gt Wasn t called 根
  • 如何在“THEN”中打印“IF”条件的源代码

    我想在 THEN 部分打印 IF 条件的 Scala 源代码 例子 IF 2 2 lt 5 THEN println I am in THEN because sourceCodeOfCondition 现在我们跳过THEN部分 问题是 如
  • 在 scalaz 中免费实施

    Haskell 中的免费实现是 data Free f a Pure a Free f Free f a 而 Scalaz 中的实现是 sealed abstract class Free S A private case class Re
  • 隐式类中的 Scala 按名称调用构造函数参数

    下面的代码不编译 期望的是在隐式类中有一个按名称调用构造函数参数 如下所示 def f n Int 1 to n product implicit class RichElapsed A val f gt A extends AnyVal

随机推荐

  • 如何防止图表中的刻度标签被切断?

    我有问题chartjs http chartjs org其中刻度标签通过以下方式被 切断 1 是否有可以设置的边距 我在 ChartJS 文档中没有看到任何关于此的内容 并且这些似乎包含在 ChartJS Canvas 元素中 意思是 不被
  • 表格视图图像从未发布

    我正在对我的一个应用程序进行重大更新 并尝试减少内存使用量并使其更干净 更快 我正在使用 Instruments 来分析应用程序 并且正在查看 UIImage 分配 当应用程序启动时 我有大约 10 个 尽管其中一个是状态栏图标 不知道为什
  • 不断刷新jquery数据

    我有这个代码 它正在计算某个项目被选择的次数 但是 只有当我在更改选项后刷新页面时 它才可以正常工作和计数 我需要一种方法让它不断刷新或 实时 所以如果它每秒自动刷新 每次页面中发生更改时它都会正确反映 我知道如何进行整页自动刷新 但我不想
  • 将 cookie 传递给 GET 请求(POST 之后)的问题

    我在这个问题上被困了好几天了 由于尝试不同的组合但没有成功 我的眼睛开始受伤 问题是 我正在制作一个应用程序 它必须从互联网获取数据 解析它 然后将其显示给用户 我已经尝试了多种方法来做到这一点 并且使用 JSOUP 非常有帮助 尤其是在解
  • 它是什么以及如何摆脱它

    我注意到 在查看我的页面源代码时 这些字符 shy 紧接着显示 div 标签 我检查了我的编码 但找不到它来自哪里 我做了一些研究 他们说它就在那里 所以可以省去一些话 靠近 h1 标签 我有一个比标题大一点的浮动图像 我想知道这是否是造成
  • SwiftUI:从单元格视图中删除托管对象会使应用程序崩溃[非可选属性]?

    我发布了这个问题 SwiftUI 从单元格视图中删除托管对象会使应用程序崩溃 https stackoverflow com questions 73159270 swiftui deleting managed object from c
  • Asp.Net System.Web.Routing 查找实际的 .aspx 页面

    我正在使用 System Web Routing 来获得一些更好的 URL 但遇到了问题 我需要知道处理请求的实际页面 例如 请求如下 basketball home 我需要找到处理该请求的页面 例如 management default
  • 查找或替换文本区域(选择)

    我无法在 Android Studio 中使用 查找 或 替换 功能来选择文本 结果总是显示在选择中未找到 xxx 我的Android Studio版本是1 2 2 即使今天我将Android Studio更新到最新的1 3 0 它仍然无法
  • 如何移动到下一个大写字母?

    在 vim 中我可以使用f后跟一个字符 以转到当前行中该字符的下一个出现位置 例如 如果我有以下内容 光标位置标记为 m akeBinExprNode undefined 我可以用fB搬到B and dtE删除直到之前E 留给我 make
  • Sequelize hasMany、belongsTo 或两者兼而有之?

    我想与sequ elize正确设置一对一或一对多关系 事实上 如果我使用其中之一 一切似乎都工作得很好hasOne hasMany or belongsTo在我的模型定义中 例如 以下关联确实创建了userId他们的目标字段 User ha
  • 在 Eclipse 中调试时查找类的所有实例

    我想知道 Java JVM 的工作方式是否意味着像 Eclipse 这样的调试工具可以向我显示给定类的所有实例的列表 我想人们可以编写一些反射代码 但我不想每次都在同一个地方中断执行 相反 我想中断执行并显示所有的列表MyClass123调
  • Clojure - 分割向量

    如果我有两个参数 1 2 3 4 和 5 6 我怎样才能得到 1 5 2 6 3 5 4 6 我想我可能必须使用for所以我尝试了 for x 1 2 3 4 for xx x for y 5 6 xx y 但它又回来了 1 5 1 6 2
  • Laravel 子域:所有子域的单一身份验证不起作用?

    我正在构建一个带有动态子域系统的网站 例如 name domain com 我正在使用 Ubuntu 和 laravel 的服务命令 我在我的路线中将其全部设置如下 Route domain x localhost gt group fun
  • 如何重置 html id

    我有一个 id
  • 映射网络驱动器:“net.exe USE”与 WshNetwork.MapNetworkDrive?

    我正在寻找在我的程序中映射驱动器 我的用户可以使用从 XP 开始的每个版本的 Windows 所以我需要最通用的方法 我以前用过第一种方法 一般来说它对我来说效果很好 但确实没有办法捕获它的错误 无论如何我都知道 第二个方法可以轻松地让我在
  • 从 Url 创建一个工作 UIPrinter 对象以进行无对话打印

    场景 引导模式锁定的应用程序接受一些用户输入 姓名等 并将其打印出来 用户无法选择打印机 我计划的解决方案是保存打印机的 URL 该 URL 的形式如下 ipp
  • axios 响应数据在多选时预选

    我使用流行的多选插件Shenao vue multiselect https github com shentao vue multiselect
  • 如何在加载图像时获得黑色背景?

    这是一个非常简单的应用程序 它加载一个带有黑色背景的窗口
  • 使用“bquote”(或替代方法)从符号构造函数

    假设我有一个代表函数名称的 symbol 类型的对象 例如 nm lt quote mean 我想构造一个函数f谁的身体uses由符号命名的函数nm 例如 f lt function x do c something nothing swi
  • 在 Lagom 微服务中摄取流数据的最佳方法

    我正在创建流分析应用程序 其中每个分析 功能都将作为微服务实现 以便该分析可以稍后在不同的项目中使用 我正在使用 Lagom 来创建微服务 我是 lagom 的新人 这就是为什么我遇到一些疑问 我不明白将数据流 来自多个传感器 发布到微服务