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

澄海建网站百度投放广告收费标准

澄海建网站,百度投放广告收费标准,做网站赚钱么,做网站一定要代码吗Seata 与消息队列(如 RocketMQ)结合实现最终一致性,通常采用 “本地事务消息表 异步通知” 的混合模式,核心思路是通过 Seata 保障核心业务事务的原子性,利用消息队列实现跨服务异步解耦。以下是完整实现方案&#xf…

Seata 与消息队列(如 RocketMQ)结合实现最终一致性,通常采用 “本地事务消息表 + 异步通知” 的混合模式,核心思路是通过 Seata 保障核心业务事务的原子性,利用消息队列实现跨服务异步解耦。以下是完整实现方案:


架构设计原理

1. 开启Seata全局事务
2. 执行业务SQL
3. 写本地消息表
4. 提交Seata事务
5. 轮询消息表
6. 发送事务消息
7. 消费消息
8. 执行业务
协调
协调
服务A
Seata TC
业务DB
消息中继
RocketMQ
服务B
下游DB

七步实现最终一致性

步骤1:业务服务A(发起方)
  1. 开启Seata全局事务
    @GlobalTransactional 注解开启分布式事务
  2. 执行业务SQL
    更新本地业务数据库(如订单状态)
  3. 写入本地消息表
    在同一个本地事务中写入消息记录(保证原子性)
    INSERT INTO local_message (id, biz_id, mq_topic, mq_body, status) 
    VALUES ('msg001', 'order123', 'INVENTORY_TOPIC', '{"productId":100,"delta":-1}', 'UNSENT');
    
步骤2:Seata事务提交
  1. Seata提交全局事务
    • TC 协调所有分支事务(包括本地消息表写入)
    • 若全部成功:全局事务提交
    • 任一失败:全局事务回滚(自动清理本地消息表)
步骤3:消息中继服务
  1. 轮询本地消息表
    定时扫描 status='UNSENT' 的消息
  2. 发送RocketMQ事务消息
    TransactionSendResult result = producer.sendMessageInTransaction(new Message("INVENTORY_TOPIC", message.getBody()), localMessage.getId() // 事务ID
    );
    
  3. 更新消息状态
    消息发送成功后更新状态为 SENT
步骤4:下游服务B
  1. 监听并消费消息
    @RocketMQMessageListener(topic = "INVENTORY_TOPIC", consumerGroup = "inventory-group")
    public void deductInventory(Message msg) {// 解析消息体InventoryDTO dto = JSON.parse(msg.getBody());// 执行库存扣减(可嵌套Seata事务)inventoryService.deduct(dto.getProductId(), dto.getDelta());
    }
    
  2. 保证消费幂等性
    通过唯一业务ID(如订单号)避免重复处理

关键技术保障

1. 消息可靠性机制
环节保障措施
消息生产不丢失Seata事务保证消息写入本地表与业务操作原子性
消息投递不丢失RocketMQ事务消息(半消息机制)+ 中继服务重试(3次以上)
消息消费不丢失RocketMQ ACK机制 + 消费者重试队列
防消息堆积动态调整消费者并发数 + 死信队列监控
2. 最终一致性兜底方案
  • 消息状态校对
    独立定时任务扫描本地消息表:

    SELECT * FROM local_message 
    WHERE status = 'UNSENT' AND created_time < NOW() - INTERVAL '5 MINUTE';
    
    • 对未发送消息重新投递
    • 对已发送未ACK消息人工介入
  • 业务对账补偿
    日终对账服务检查业务状态一致性:

    # 伪代码示例
    for order in unpaid_orders:if inventory_reserved(order.product_id): trigger_compensation(order)  # 触发库存释放
    

Seata与RocketMQ的深度集成优化

方案1:Seata-RocketMQ Connector
// 自动将Seata事务与RocketMQ事务绑定
@GlobalTransactional
public void createOrder(Order order) {orderDAO.insert(order);// 自动发送事务消息(无需手动写消息表)rocketMQTemplate.sendInTransaction("INVENTORY_TOPIC", MessageBuilder.withPayload(order).build());
}

实现原理
通过 Seata RMHandler 拦截器,在分支事务注册时同步注册 RocketMQ 事务

方案2:基于CDC的消息发布
解析binlog
业务DB
Debezium CDC
Kafka
Stream Processing
RocketMQ
  • 优势:业务零侵入,数据库变更自动触发消息
  • 挑战:需要解决消息顺序性和重复消费

对比传统方案

方案一致性保障性能复杂度适用场景
Seata+本地消息表⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️通用场景
纯MQ事务消息⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️简单跨服务事务
TCC模式⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️强一致性金融场景
Saga模式⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️长事务+高并发

生产实践建议

  1. 消息表设计优化

    CREATE TABLE local_message (id BIGINT PRIMARY KEY,biz_id VARCHAR(64) NOT NULL,     -- 业务唯一IDmq_topic VARCHAR(64) NOT NULL,mq_body JSON NOT NULL,status ENUM('UNSENT','SENT','FAILED') NOT NULL,created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,sent_time TIMESTAMP,INDEX idx_status (status),        -- 状态索引加速扫描INDEX idx_created (created_time)  -- 时间索引用于清理
    );
    
  2. 中继服务关键配置

    # RocketMQ生产者
    rocketmq:producer:group: seata-relay-groupretryTimesWhenSendFailed: 5sendMsgTimeout: 3000# 消息扫描策略
    relay:scan-interval: 5000     # 5秒扫描一次batch-size: 200         # 每次最大处理量max-retry: 10           # 最大重试次数
    
  3. 监控指标

    • 关键指标
      seata_transaction_success_rate
      mq_message_delay_seconds
      compensation_trigger_count
    • 报警规则
      消息积压 > 1000条
      最终一致性延迟 > 1小时

典型应用场景

电商下单流程
  1. 订单服务:创建订单(Seata事务)
  2. 本地消息表:记录库存扣减消息
  3. 库存服务:异步扣减库存
  4. 若库存不足:触发补偿流程(生成退款单)
银行转账场景
账户A服务 RocketMQ 账户B服务 Seata 开启Seata事务 扣减A账户余额 写入转账消息表 提交全局事务 中继服务投递消息 消费转账消息 增加B账户余额 消费ACK 账户A服务 RocketMQ 账户B服务 Seata

总结:技术选择建议

  1. 强一致性场景
    直接使用 Seata AT/TCC 模式 + 跨服务调用
  2. 最终一致性场景
    Seata+本地消息表+RocketMQ 是黄金组合:
    • ✅ 利用 Seata 保障核心事务原子性
    • ✅ 通过本地消息表实现可靠事件
    • ✅ 依赖 RocketMQ 保证消息可靠投递
    • ✅ 消费者幂等设计解决重复消费

这种架构平衡了数据一致性与系统性能,是分布式系统中应用最广泛的最终一致性实现范式。

http://www.shuangfujiaoyu.com/news/54403.html

相关文章:

  • 网站建设公司赚钱吗百度网盘网页版入口官网
  • 网站建设百度云青岛网站优化公司哪家好
  • 药品行业做网站关键词看片
  • 郑州网站开发招聘百度指数排名明星
  • 网站地图创建16种营销模型
  • 天津网站建设外包如何在百度上发布自己的广告
  • 网站文字排版最打动人心的广告语
  • 做电商的进货网站网站托管服务商
  • 美女做爰性体网站网络营销方法有哪些?
  • 高端网站建设公司排行新产品宣传推广策划方案
  • 网站规划模板下载网站制作400哪家好
  • 哪里可以做外贸网站免费网站创建
  • 网站建设理由目前最新推广平台
  • 成都网站设计哪家比较好网站自然排名怎么优化
  • 网站被k文章修改做网上营销怎样推广
  • 做网站录入和查询需求第三方营销策划公司有哪些
  • 济南哪家公司做网站好二级域名免费分发
  • 深圳网站设计比较好的公司有哪些网页模板大全
  • 山东圣大建设集团网站新冠病毒最新消息
  • 手机网站建设的代码正规电商平台有哪些
  • dedecms网站别名解析微信营销方式
  • 东莞人才网58济南seo整站优化厂家
  • 摄影网站难做吗百度手机助手app免费下载
  • 计算机网站建设 是什么免费网站推广产品
  • 模板免费的ppt软件二十条疫情优化措施
  • java程序员自己做网站宁波网站推广方案
  • 网站做推广页需要什么软件有哪些百度商业平台
  • 什么网站是用php做的全自动推广软件
  • php手机网站怎么做semantic scholar
  • 网站右键禁止杭州网站建设