01 2024 档案
摘要:架构支持 根据实际业务场景,分析集群分流的具体处理方案,假设基金购买接口单次处理时间为500ms,tomcat使用默认线程数200,则单个tomcat处理基金购买接口的QPS=1000/500*200=400。 场景1-4000QPS 要求实现4000QPS的并发量,可以部署10个tomcat集群应
阅读全文
摘要:重复消费产生原因 生产者多次投递-投递时服务端接收后客户端网络原因确认失败,重新投递 消费者扩容重试-消费者扩容导致正在消费的消息没有正常应答,服务端重新推送 重复消费解决方案 给消息增加唯一key,消费时校验key是否已经消费过 消费者控制消息的幂等性(多次同样的操作结果一致) 幂等性保证方案 业
阅读全文
摘要:应用背景 提供配置功能,用于固定周期的执行某个动作;如在基金交易的每个交易日结束时,需要根据当天交易量计算基金的收益,可以提供定时任务,在每天晚上固定的时间计算收益数据。 功能设计 提供任务数据表task_info和任务执行记录表task_log_info;通过扫描task_info表中所有的任务配
阅读全文
摘要:本文只提供生产者和消费者部分的示例代码,其它配置部分见RocketMQ消息客户端生产与消费的基本实现 技术框架 JDK: java version "1.8.0_391" RocketMQ SDK: rocketmq-spring-boot-starter:2.2.3 消息消费原理 消费者必须关联一
阅读全文
摘要:本文只提供生产者和消费者部分的示例代码,其它配置部分见RocketMQ消息客户端生产与消费的基本实现 依赖框架 JDK: java version "1.8.0_391" RocketMQ SDK: rocketmq-spring-boot-starter:2.2.3 消息分类 按消息类型 按照消息
阅读全文
摘要:支撑环境 JDK: java version "1.8.0_391" 应用框架: org.springframework.boot:2.7.17 RocketMQ客户端SDK: rocketmq-spring-boot-starter:2.2.3 生产者 消息提供者 添加依赖 implementat
阅读全文
摘要:系统环境 Java: openjdk version“1.8.0_382” rocketmq-all-5.1.4 整体机制 使用rocketmq的事务消息,分两个阶段保证分布式事务的最终一致性; 一阶段:消息生产者(分布式事务发起方)发送半消息(消费者不接收半消息),之后完成本地事务的执行,根据执行
阅读全文
摘要:整体机制 TCC模式采用的也是两阶段提交的模型,区别于AT和XA模式,TCC模式的两阶段需要自定义实现,不依赖于数据库的事务模型和协议。 机制示例图 工作机制 TCC模式客户端使用时需要分try、commit、cancel三个部分: try:检查预留资源 commit:执行真正业务的提交 Cance
阅读全文
摘要:运行机制 执行阶段(借助于数据库的XA协议,执行阶段通过预执行将数据持久化,但分支事务没做提交): 可回滚:业务 SQL 操作放在 XA 分支中进行,由资源对 XA 协议的支持来保证 可回滚 持久化:XA 分支完成后,执行 XA prepare,同样,由资源对 XA 协议的支持来保证 持久化(即,之
阅读全文
摘要:机制 两阶段提交协议的演变: 一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。 二阶段: 提交异步化,非常快速地完成。 回滚通过一阶段的回滚日志进行反向补偿。 集成过程 参考Seata客户端集成 工作机制 一阶段 根据update语句的条件组成select脚本,查询得到更
阅读全文
摘要:架构环境 编辑工具:Gradle 8.4 运行环境:OpenJdk 1.8.0_391 开发框架:Spring-boot 2.7.17 微服务架构:Spring Cloud 2021.0.8 客户端依赖 官方提供了如下依赖方式,根据自身项目选择一个即可: 依赖seata-all,传统依赖方式,提供了
阅读全文