- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个架构,其中有两个独立的应用程序。原始来源是一个sql数据库。 App1 监听 CDC 表以跟踪对该数据库中表的更改、规范化和序列化这些更改。它获取这些序列化消息并将它们发送到 Kafka 主题。 App2 监听该主题,将消息调整为不同的格式,并通过 HTTP 将这些调整后的消息发送到各自的目的地。
所以我们的流式架构看起来像:
SQL (CDC event) -> App1 ( normalizes events) -> Kafka -> App2 (adapts events to endpoints) -> various endpoints
我们希望在出现故障时添加错误处理,并且不能容忍重复事件、丢失事件或顺序更改。鉴于上述架构,我们真正关心的是 exactly-once 适用于从 App1 到 App2(我们独立的生产者和消费者)的消息
我正在阅读的所有内容以及我发现的有关事务性 API 的每个示例都指向“流”。看起来 Kafka streaming api 适用于从 Kafka 主题获取输入、进行处理并将其输出到另一个 Kafka 主题的单个应用程序,这似乎不适用于我们对 Kafka 的使用。这是 Confluent's docs 的摘录:
Now, stream processing is nothing but a read-process-write operation on a Kafka topic; a consumer reads messages from a Kafka topic, some processing logic transforms those messages or modifies state maintained by the processor, and a producer writes the resulting messages to another Kafka topic. Exactly once stream processing is simply the ability to execute a read-process-write operation exactly one time. In this case, “getting the right answer” means not missing any input messages or producing any duplicate output. This is the behavior users expect from an exactly once stream processor.
我正在努力思考如何将 exactly-once 与我们的 Kafka 主题一起使用,或者 Kafka 的 exactly-once 是否甚至是为非“流式”用例构建的。我们必须构建自己的重复数据删除和容错功能吗?
最佳答案
如果您使用的是 Kafka 的 Streams API(或其他支持使用 Kafka 进行精确一次处理的工具),那么 Kafka 的精确一次语义 (EOS) 涵盖在所有应用程序中:
topic A --> App 1 --> topic B --> App 2 --> topic C
在您的用例中,一个问题是初始 CDC 步骤是否也支持 EOS。换句话说,您必须问这样一个问题:涉及哪些步骤,EOS 涵盖所有步骤吗?
在以下示例中,如果(且仅当)初始 CDC 步骤也像数据流的其余部分一样支持 EOS,则端到端支持 EOS。
SQL --CDC--> topic A --> App 1 --> topic B --> App 2 --> topic C
如果您在 CDC 步骤中使用 Kafka Connect,那么您必须检查您使用的连接器是否支持 EOS。
Everything I'm reading and every example I've found of the transactional api points to "streaming".
Kafka 生产者/消费者客户端的事务 API 为 EOS 处理提供原语。位于生产者/消费者客户端之上的 Kafka Streams 使用此功能来实现 EOS,开发人员只需几行代码即可轻松使用它(例如在应用程序需要时自动处理状态管理)进行有状态操作,如聚合或连接)。也许生产者/消费者 <-> Kafka Streams 之间的关系是您阅读文档后的困惑?
当然,您也可以在开发应用程序时使用底层的 Kafka 生产者和消费者客户端(使用事务性 API)“构建自己的”,但这需要更多工作。
I'm struggling to wrap my head around how we can use exactly-once with our Kafka topic, or if Kafka's exactly-once is even built for non-"streaming" use cases. Will we have to build our own deduplication and fault tolerance?
不确定“非流”用例是什么意思。如果你的意思是,“如果我们不想使用 Kafka Streams 或 KSQL(或其他可以从 Kafka 读取数据来处理数据的现有工具),我们需要做什么才能在我们的应用程序中实现 EOS?”,那么答案是“是的,在这种情况下,你必须直接使用 Kafka 生产者/客户,并确保你对它们所做的任何事情都正确地实现了 EOS 处理。” (并且因为后者比较困难,所以这个 EOS 功能被添加到 Kafka Streams 中。)
希望对您有所帮助。
关于java - 'exactly once' 是否仅适用于流(主题 1 -> 应用程序 -> 主题 2)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56065085/
我想在数据中心选择一个事件分区。通常我会使用以下语句: INVANTIVE> use 1552839 2> Exclamation itgendhb077: Error in Invantive Da
我认为我的可能是 git 子模块的最简单用例。 我有一个目录结构 --- --- --- --- 每个子目录都是一个 git 存储库。我只想跟踪在我的 中添加的不同 git
我正在尝试循环数据框中的特定数字列,目标是使用“cor.test”函数提取相关性和 p 值。 相关性在于计算线性关系一个分类变量,由针对每个特定数字列的 0 和 1 值组成。 到目前为止,这是我的代码
当我使用 Invantive Data Hub 从多个 Exact Online 公司下载数据时,我得到了重复的行,而我希望每个公司只有一行。 我使用以下查询: select gla.code ,
我们刚刚上线 https://ecotaksen.be 。 Exact 上的查询和更新运行良好,但安装生产许可证后出现错误 itgenobr001:找不到客户端。。 我的数据容器规范是: 使用具有相
为了遵守法规,我尝试从我的一些部门下载采购发票文件(PDF 文件),将它们保存在磁盘上以供存档。 我使用 Invantive 查询工具来执行此操作。我想知道使用哪个表以及如何仅针对采购发票文档导出这些
我想获取“S-1”之后的链接,而不是“S-1/A”之后的链接。我尝试了“.find_all(lambda tag: tag.name == 'td' and tag.get()==['S-1'])”,
当我尝试通过 Google Colaboratory 中的 Earthengine 命令行上传 .tfrecord 和 .json 文件时,它显示“TfRecord 摄取 list 必须具有一个具有一
Closed. This question is off-topic 。它目前不接受答案。 想改善这个问题吗? Update the question 所以它是堆栈溢出的 on-topic。 10年前
这里给出了一个关于模板消歧器的问题: template disambiguator 在答案中我们可以读到: ISO C++03 14.2/4 When the name of a member tem
我想在考虑时间间隔的同时进行病例对照匹配。如果对照观察的自变量 X1、X2 和重叠时间间隔 X3 与一个案例具有相同的值,我想要一个匹配项。 例如,假设以下 df1: row Y X1 X2
我在这里有一个具有这种起始样式的 HTML 元素: transition: transform 2s; 首先是动画 (它旋转X)通过点击添加的类。下次单击时,将添加另一个类,该类添加了 transfo
我忘了,但是 EAGL 代表什么具体的东西吗?或者它只是核心动画 OpenGL 命名约定的一部分(CAEAGLLayer 等)? 最佳答案 “AGL”是苹果 OS X 的 OpenGL 扩展的名称。我
我们目前正在尝试优化复杂的 Angular 应用程序(性能和包大小)。 我们发现我们有部分未使用的组件,但我们不能 100% 确定它们。无论如何......我们目前要问的问题是,摇树在 Angular
我正在解决简单的优化问题。该数据集有 26 列和 3000 多行。 源代码看起来像 Means <- colMeans(Returns) Sigma <- cov(Returns) invSi
我让 Android Studio 将我的代码转换为 OnClickListener . 显然这里使用了 lambda。我不知道 lambda 是传递给 View 类的函数还是传递给 OnClickL
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 3 年前。 Improve th
关于“转换”的可用(类似)问题并没有真正阐明这是什么或做什么(顺便说一下,刚开始进行 Android 编程)。人们在哪里以及如何注意到“类型转换”的效果? 有什么区别: Button b = (But
我需要创建一个列,其中可以存储“0.0 - 99.99”之间的值。为什么?由于这种情况: 我的数据库中有这个表: "CREATE TABLE dumps( id INT
我正在摸不着头脑,经过一天的互联网搜索,我决定问你这个问题。 我有一个包含 2 个字段 tag_id 和 tag 的表 TAG,我试图将 TAG 的记录与特定字符串完全匹配,但我无法完全匹配,只能部分
我是一名优秀的程序员,十分优秀!