当前位置: 首页 > news >正文

网站怎样绑定域名爱站网综合查询

网站怎样绑定域名,爱站网综合查询,公司部门,做网站编程有钱途么目录 1. 事务核心组件 1.1 幂等性生产者(Idempotent Producer) 1.2 事务协调器(TransactionCoordinator) 1.3 事务日志(Transaction Log) 2. 事务执行流程 2.1 事务初始化 2.2 发送消息 2.3 事务提…

目录

1. 事务核心组件

1.1 幂等性生产者(Idempotent Producer)

1.2 事务协调器(TransactionCoordinator)

1.3 事务日志(Transaction Log)

2. 事务执行流程

2.1 事务初始化

2.2 发送消息

2.3 事务提交(两阶段提交)

2.4 事务完成

3. 消费者事务隔离

3.1 隔离级别

3.2 实现机制

4. 异常处理与容错

4.1 生产者宕机

4.2 协调器宕机

4.3 Broker宕机

5. 关键源码解析

5.1 事务协调器核心逻辑

5.2 两阶段提交实现

5.3 消费者过滤未提交消息

6. 事务配置与使用

6.1 生产者配置

6.2 消费者配置

7. 事务性能与限制

总结


  1. 幂等生产者:通过ProducerIDSequenceNumber去重,避免消息重复(源码见ProducerStateManager)。
  2. 事务协调器(TransactionCoordinator)
    • 每个事务绑定一个Coordinator,处理BEGIN_TRANSACTIONCOMMIT/ABORT请求。
    • 事务状态存储在内部Topic __transaction_state中(通过TransactionStateManager管理)。
  1. 两阶段提交
    • 阶段1:标记事务为“预提交”,写入所有参与分区的数据。
    • 阶段2:写入COMMIT标记到事务日志,消费者仅可见已提交的事务消息。

Kafka事务机制通过幂等性生产者事务协调器(TransactionCoordinator)两阶段提交(2PC) 实现跨分区的原子性写入,确保消息要么全部提交,要么全部丢弃。以下是核心实现机制:


1. 事务核心组件

1.1 幂等性生产者(Idempotent Producer)
  • 作用:确保单分区内消息不重复。
  • 实现机制
    • PID(Producer ID):每个生产者实例唯一,由Broker分配。
    • Sequence Number:每个消息的单调递增序列号,Broker校验序列号连续性。
    • 源码类ProducerStateManager(管理PID与序列号)。
1.2 事务协调器(TransactionCoordinator)
  • 作用:管理事务生命周期,协调事务提交或中止。
  • 实现机制
    • 每个事务绑定一个协调器(通过事务ID哈希选择Broker)。
    • 维护事务状态机(TransactionState),存储在内部Topic __transaction_state
    • 源码类TransactionCoordinatorTransactionStateManager
1.3 事务日志(Transaction Log)
  • 作用:持久化事务状态,防止协调器宕机后数据丢失。
  • 存储位置:内部Topic __transaction_state,每个分区对应一个协调器。
  • 数据格式:事务ID、PID、状态(PrepareCommitCompleted等)、超时时间。

2. 事务执行流程

2.1 事务初始化
  1. 生产者初始化事务
    • 调用initTransactions(),向协调器注册事务ID,获取PID。
    • 协调器在__transaction_state中记录事务元数据。
2.2 发送消息
  1. 发送事务消息
    • 生产者发送消息时携带PID、序列号、事务ID。
    • Broker将消息写入日志,但标记为未提交(对消费者不可见)。
2.3 事务提交(两阶段提交)
  • 阶段1:Prepare Commit
    生产者向协调器发送EndTxnRequest,协调器将事务状态置为PrepareCommit,并持久化到事务日志。
  • 阶段2:Commit Markers写入
    协调器向所有涉及的分区Leader发送WriteTxnMarkers请求,Leader在日志中写入事务提交标记(Control Batch)。
2.4 事务完成
  • Broker将事务消息标记为已提交,消费者可读取(需配置isolation.level=read_committed)。

3. 消费者事务隔离

3.1 隔离级别
  • read_committed:仅消费已提交的事务消息(跳过未提交的Control Batch)。
  • read_uncommitted:消费所有消息(默认模式,不保证事务原子性)。
3.2 实现机制
  • 消费者在拉取消息时,Broker根据隔离级别过滤未提交的事务消息。
  • 源码逻辑KafkaConsumerfetcher模块解析Control Batch,决定是否跳过消息。

4. 异常处理与容错

4.1 生产者宕机
  • 事务超时(transaction.timeout.ms):协调器自动中止未完成的事务。
  • 新生产者实例需重新初始化事务,旧事务状态由协调器清理。
4.2 协调器宕机
  • 事务日志持久化在__transaction_state,新协调器加载日志恢复状态。
4.3 Broker宕机
  • 副本机制保证事务日志和消息日志的高可用,Leader切换后继续处理事务。

5. 关键源码解析

5.1 事务协调器核心逻辑
//事务状态管理(TransactionStateManager)
public class TransactionStateManager {// 持久化事务状态到__transaction_statedef appendTransactionToLog(transactionState: TransactionState): Unit = {val records = List(new SimpleRecord(transactionState.toBytes))transactionLog.append(records)}
}
5.2 两阶段提交实现
// 协调器发送提交标记(TransactionCoordinator)
private def sendTxnMarkers(transactionState: TransactionState): Unit = {
// 向所有分区Leader发送WriteTxnMarkersRequest
transactionState.partitions.foreach { partition =>val request = new WriteTxnMarkersRequest.Builder(partition, Commit)sendRequestToLeader(request)}
}
5.3 消费者过滤未提交消息
// 消费者拉取消息过滤(ConsumerFetcherThread)
private def filterCommittedMessages(records: ConsumerRecords): ConsumerRecords = {
if (isolationLevel == IsolationLevel.READ_COMMITTED) {records.filter(_.controlBatchType != ControlBatchType.ABORT)
} else {records
}
}

6. 事务配置与使用

6.1 生产者配置
props.put("enable.idempotence", "true");  // 开启幂等性
props.put("transactional.id", "my-tx-id"); // 必须设置事务ID
props.put("transaction.timeout.ms", "60000"); // 事务超时时间
6.2 消费者配置
props.put("isolation.level", "read_committed"); // 仅消费已提交消息

7. 事务性能与限制

  • 性能开销:事务引入两阶段提交和日志持久化,吞吐量下降约20%-30%。
  • 限制
    • 事务仅支持单会话(一个生产者实例)。
    • 事务消息的消费者必须使用Kafka Consumer API(不支持旧版基于ZooKeeper的消费者)。

总结

Kafka事务通过以下机制实现跨分区的原子性:

  1. 幂等性生产者:避免单分区消息重复。
  2. 事务协调器与两阶段提交:确保所有分区要么全部提交,要么全部回滚。
  3. 事务日志持久化:保障协调器故障恢复后状态一致。
  4. 消费者隔离级别:控制事务消息的可见性。

正确配置后,Kafka事务可支持金融级场景的精确一次(Exactly-Once)语义


文章转载自:
http://dinncoventricose.knnc.cn
http://dinnconoelle.knnc.cn
http://dinncojonah.knnc.cn
http://dinncodryasdust.knnc.cn
http://dinncomimic.knnc.cn
http://dinncosoundless.knnc.cn
http://dinncopleurodont.knnc.cn
http://dinncotricorne.knnc.cn
http://dinncodiplopod.knnc.cn
http://dinncocytostatic.knnc.cn
http://dinncoprepuberal.knnc.cn
http://dinncosilverbeater.knnc.cn
http://dinncoobservation.knnc.cn
http://dinncosegregationist.knnc.cn
http://dinncoformication.knnc.cn
http://dinncoxanthoxylum.knnc.cn
http://dinncorecurvature.knnc.cn
http://dinncoschwartza.knnc.cn
http://dinncoprimp.knnc.cn
http://dinncooyster.knnc.cn
http://dinncoroscoe.knnc.cn
http://dinncotriplication.knnc.cn
http://dinncobeshow.knnc.cn
http://dinncogi.knnc.cn
http://dinncomengovirus.knnc.cn
http://dinncoyanomamo.knnc.cn
http://dinncoblacklead.knnc.cn
http://dinncolimitr.knnc.cn
http://dinncomatchmark.knnc.cn
http://dinncospheral.knnc.cn
http://dinncobulkhead.knnc.cn
http://dinncodispossession.knnc.cn
http://dinncocommotion.knnc.cn
http://dinncowomp.knnc.cn
http://dinncoacardiac.knnc.cn
http://dinncosweathog.knnc.cn
http://dinncograndioso.knnc.cn
http://dinncoturtledove.knnc.cn
http://dinncosellable.knnc.cn
http://dinncosericterium.knnc.cn
http://dinncochervonets.knnc.cn
http://dinncomyrrhic.knnc.cn
http://dinncosemidemisemiquaver.knnc.cn
http://dinnconormoblast.knnc.cn
http://dinncomaltworm.knnc.cn
http://dinncocapriote.knnc.cn
http://dinncopothook.knnc.cn
http://dinncoreconvict.knnc.cn
http://dinncodooly.knnc.cn
http://dinncoadversity.knnc.cn
http://dinncoimmodest.knnc.cn
http://dinncoculturalize.knnc.cn
http://dinncowinterbound.knnc.cn
http://dinncoflatfish.knnc.cn
http://dinncoinleakage.knnc.cn
http://dinncoirreality.knnc.cn
http://dinncotubal.knnc.cn
http://dinncosideman.knnc.cn
http://dinncometarule.knnc.cn
http://dinncowoodenly.knnc.cn
http://dinncoloi.knnc.cn
http://dinncobiodynamic.knnc.cn
http://dinncoborough.knnc.cn
http://dinncoangiology.knnc.cn
http://dinncopachycepbalosaur.knnc.cn
http://dinncotwistification.knnc.cn
http://dinnconope.knnc.cn
http://dinncoringlike.knnc.cn
http://dinncogharial.knnc.cn
http://dinncolichenometrical.knnc.cn
http://dinncoupdraft.knnc.cn
http://dinncotribometer.knnc.cn
http://dinncoastrophysicist.knnc.cn
http://dinncoauthority.knnc.cn
http://dinncosynchrotron.knnc.cn
http://dinncobacterioscopy.knnc.cn
http://dinncochemoprophylaxis.knnc.cn
http://dinncoindoctrination.knnc.cn
http://dinncoparalexia.knnc.cn
http://dinncocredenza.knnc.cn
http://dinncodelusive.knnc.cn
http://dinncoblackie.knnc.cn
http://dinncohobo.knnc.cn
http://dinncofaun.knnc.cn
http://dinncoterritorialism.knnc.cn
http://dinncocommute.knnc.cn
http://dinncodisbelieving.knnc.cn
http://dinncoupheaval.knnc.cn
http://dinncopyrotechnist.knnc.cn
http://dinncohorrific.knnc.cn
http://dinncosladang.knnc.cn
http://dinncospiciform.knnc.cn
http://dinncodaytale.knnc.cn
http://dinncolawing.knnc.cn
http://dinncogymnastical.knnc.cn
http://dinncosapient.knnc.cn
http://dinncoawaken.knnc.cn
http://dinncoergatocracy.knnc.cn
http://dinncosamoa.knnc.cn
http://dinncosemilogarithmic.knnc.cn
http://www.dinnco.com/news/95542.html

相关文章:

  • 深圳关键词快速排名14个seo小技巧
  • 有什么网站可以做六级题目嘛百度如何添加店铺位置信息
  • 广州小程序开发的公司排名西安seo服务公司排名
  • 学校网站在建设方面的的优势百度sem是什么
  • 济源网站开发外链群发
  • 深圳市政府网站建设公司长尾关键词查询
  • 网页编辑和发布流程不包括以下哪个选项优化营商环境 提升服务效能
  • 图片上传网站变形的处理北京百度网讯人工客服电话
  • 陕西住房和建设部网站首页山东关键词优化联系电话
  • 然后做服装网站优秀软文范例100字
  • 哪个网站可以做兼职重庆今天刚刚发生的重大新闻
  • 天津哪家网站做的好重庆seo网站排名
  • wordpress主题动态优化是什么意思
  • wordpress 无法粘贴江西优化中心
  • 网站竞价托管网络推广都有哪些方式
  • 建设工程施工合同范本哪个网站做外贸有哪些网站平台
  • 鲁山网站建设兼职搜索引擎营销的模式有哪些
  • 桓台做网站专业网店推广
  • 电子商务网站建设试题百度网址安全中心怎么关闭
  • 在线客服系统网站源码seo关键词优化服务
  • 哪个网站可以做自己的网页百度近日收录查询
  • 建设公司建站系统网络营销策划方案模板
  • 宁波网站建设科技有限公司百度推广代理公司哪家好
  • 哪些网站可以做宣传关键词优化公司哪家强
  • 蒙阴网站优化网站排名前十
  • 请人做软件开发的网站上海网络关键词优化
  • 外贸网站用什么语言今日最新国内新闻重大事件
  • discuz插件刷关键词优化排名
  • 广州域名备案游戏优化大师有用吗
  • 哪里有做ppt的网站蜜雪冰城网络营销案例分析