当前位置: 首页 > 知识库问答 >
问题:

Kafka:隔离层面的含义

堵景天
2023-03-14

我有一个用例,在我的Kafka分区中,我需要100%的可靠性、幂等性(没有重复的消息)以及顺序保持。我试图使用事务性API建立一个概念证明来实现这一点。有一个叫“隔离.级别”的设置,我很难理解。

在本文中,他们将讨论这两个选项之间的区别

Kafka Consumer中现在有两个新的隔离级别:

read_committed:读取不属于事务的消息和事务提交后的消息。Read_committed使用者使用分区的结束偏移量,而不是客户端缓冲。该偏移量是属于打开事务的分区中的第一条消息。它也被称为“最后稳定偏移”(LSO)。read_committed使用者将只读取直到LSO为止,并过滤掉已中止的任何事务性消息

read_uncommitted:按偏移量顺序读取所有消息,而不等待事务提交。这个选项类似于Kafka消费者的当前语义。

这里的性能暗示是显而易见的,但我真的很难读懂字里行间的意思,理解每个选择的功能暗示/风险。看起来read_committed更安全,但我想知道为什么。

共有1个答案

丁业
2023-03-14

首先,isolation.level设置仅在使用者从中消费的主题包含使用事务生成器编写的记录时才对使用者产生影响。

如果是这样,如果它被设置为read_uncommitted,使用者将只读取所有内容,包括中止的事务。这是默认值。

当设置为read_committed时,使用者将只能从提交的事务中读取记录(除了不属于事务的记录之外)。这还意味着,为了保持订购,如果交易正在进行中,消费者将无法消费作为该交易一部分的记录。基本上,代理只允许使用者读取到最后的稳定偏移量(LSO)。当提交(或中止)转换时,代理将更新LSO,使用者将收到新记录。

 类似资料:
  • Preparation1. Deploy CIS kubectl apply -f https://www.wenjiangs.com/doc/HUhTYdSwn8cis.yaml https://www.wenjiangs.com/doc/HUhTYdSwn8cis.yaml2. Deploy Service kubectl apply -f https://www.wenjiangs.com/

  • 问题内容: 我一直在尝试: 关于我的服务方式,但spring抱怨说: 我该如何解决? 问题答案: 此实现不解决清理问题,我已经实现了类似的解决方案,但也解决了清理问题。可以在以下位置找到该解决方案:http : //shahzad-mughal.blogspot.com/2012/04/spring-jpa-hibernate-support-for- custom.html

  • 本文向大家介绍请解释下什么是cookie隔离?为什么要隔离?如何隔离?相关面试题,主要包含被问及请解释下什么是cookie隔离?为什么要隔离?如何隔离?时的应答技巧和注意事项,需要的朋友参考一下 什么是 Cookie 隔离? 或者说:请求资源的时候不要让它带 cookie 怎么做 cookie 隔离技术和传统的多域名拆分请求,提高浏览器并发请求数有点类似,均是采用多域名来处理请求 传统做法是将 c

  • 我尽可能地保持我的服务接口,通常它们是@functionalinterface。我试图遵循界面分离原则。 如果我的服务实现实现多个接口,如果它们共享其中的大部分依赖关系,这是一个好的实践吗?或者我应该为每个接口创建一个单独的实现? 在我的例子中;TaskService实现这两个接口是一个好的做法吗?或者我应该为每个接口有一个单独的类?

  • 问题内容: 我一直在尝试: 关于我的服务方式,但spring抱怨说: 我该如何解决? 问题答案: 此实现不解决清理问题,我已经实现了类似的解决方案,但也解决了清理问题。可以在以下位置找到该解决方案:http : //shahzad-mughal.blogspot.com/2012/04/spring-jpa-hibernate-support-for- custom.html