基于SpringCloud的可靠消息最终一致性02:项目骨架代码(上)
在上一节中咱们已经把分布式事务问题交代了一遍,包括两大定理、五大解决方案和一个成熟的开源框架,而咱们最终的目标是用Spring Cloud实现一个实际创业项目的可靠消息最终一致性的分布式事务方案。
先交代一下项目背景。
前几年,社会上慢慢兴起一种称为C2C同城快递的业务,也就是俗称的跑腿闪送。比如我需要送个东西给某位朋友,而你刚好也去他那个地方,那就可以顺便可以帮我把东西带给他,也顺便挣点跑腿费,当时创业的时候做的就是这么一个简单的应用。其中有一个需求场景,就是用户可以通过钱包余额支付跑腿费。针对这一块,当时提出的要求是必须保证结算(也就是负责跑腿的用户可以提现)时是正确的,结算前允许出现短暂的不一致现象。
当时综合考虑过上一节所说的五大解决方案,比较来比较去,得出的结论是2PC/3PC相对来说延迟比较高,比较适合传统的单体应用,不适合高并发和高性能要求的场景;TCC最大的问题是对代码的侵入性太高,不适合作为通用解决方案;而且那时Seata尚未出现,Saga也没有合适的框架可以落地。只有基于MQ的方式既能满足弱一致性要求,而且还支持操作幂等,并且有对账/校验系统兜底,完全能够满足要求。因为是做自己的余额支付,所以也没必要做最大努力通知。因此,最终的技术选型是可靠消息最终一致性分布式事务解决方案。
这就是整个需求的背景说明。
之前的项目使用的是Springboot、MyBa
相关文章:
基于SpringCloud的可靠消息最终一致性02:项目骨架代码(上)
在上一节中咱们已经把分布式事务问题交代了一遍,包括两大定理、五大解决方案和一个成熟的开源框架,而咱们最终的目标是用Spring Cloud实现一个实际创业项目的可靠消息最终一致性的分布式事务方案。 先交代一下项目背景。 前几年,社会上慢慢兴起一种称为C2C同城快递的业务,也…...
RockerMQ集群部署
目录一、Broker集群模式1、单Master:2、多Master多Slave模式异步复制3、多Master多Slave模式同步双写二、集群搭建实践1、集群架构2、克隆生成rocketmqos13、修改rocketmqos1配置文件4、克隆生成rocketmqOS25、修改rocketmqOS2配置文件6、启动服务器7、测试一、Brok…...
unicloud的aggregate聚合查询时间戳转日期
我特么不知道看了这个帖子几百遍才看明白到-----》unicloud数据库中,聚合操作如何操作时间戳? - DCloud问答 自己淋过雨老想着为别人撑伞,可怜我这35岁的老人家,给我去点关注!!!!&a…...
Vue2.0开发之——使用ref引用组件实例(41)
一 概述 在本组件内部修改count的值在父组件内修改子组件的count值 二 在本组件内部修改count的值 2.1 Left.vue 布局代码 <template><div class"left-container"><h3 >Left 组件---{{count}}</h3><button click"count 1"&…...
极狐GitLab仓库瘦身
参考文章: [分享] 极狐GitLab仓库瘦身 - 官方技术分享 - 极狐GitLab 论坛 一、瘦身概述 Git仓库随着时间推移会变得越来越大,比如很多比较大的文件加入Git仓库时,可能引起以下问题: 下载仓库越来越慢,因为每个人都…...
2288hv5超融合服务器 数码管报888
【问题现象】 2288hv5超融合服务器,前面板数码管报888,电源灯黄灯闪烁,开不了机,ibmc网络是通的,但是web网页打不开 【问题原因】 iBMC的版本过低,iBMC在智能诊断数据库保护机制存在异常,导…...
【Zabbix实战之部署篇】Zabbix监控windows系统配置方法
【Zabbix实战之部署篇】Zabbix监控windows系统配置方法 一、检查Zabbix监控平台状态1.检查Zabbix各组件状态2.检查Zabbix的首页二、下载windows代理1.访问Zabbix官网下载界面2.查看下载安装包三、安装windows agent2代理1.安装windows agent2代理2.代理基本配置信息3.开始进行安…...
在Windows上编译Nginx
《在Windows上编译Nginx》视频教程官方编译说明 Building nginx on the Win32 platform with Visual C 环境准备 1. Microsoft Visual Studio(Microsoft Visual C 编译器),下载地址:https://visualstudio.microsoft.com/zh-hans/。 2. Git(备用)&…...
语音识别与Python编程实践
博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的,…...
MATLAB绘制泰勒图(Taylor diagram)
泰勒图(Taylor diagram) 泰勒图是Karl E. Taylor于2001年首先提出,主要用来比较几个气象模式模拟的能力,因此该表示方法在气象领域使用最多,但是在其他自然科学领域也有一定的应用。 泰勒图常用于评价模型的精度&…...
ClickHouse高可用集群分片-副本实操(四)
目录 一、ClickHouse高可用之ReplicatedMergeTree引擎 二、 ClickHouse高可用架构准备-环境说明和ZK搭建 三、高可用集群架构-ClickHouse副本配置实操 四、ClickHouse高可用集群架构分片 4.1 ClickHouse高可用架构之两分片实操 4.2 ClickHouse高可用架构之两分片建表实操 一…...
2022年中国工业机器人行业市场回顾及2023年发展前景预测分析
工业机器人是一种能自动定位控制、可重复编程的、多功能的、多自由度的操作机,广泛应用于码垛、冲压、分拣、焊接、切割、喷涂、上下料等工业场景中,极大提高了生产效率、安全性以及智能化水平。工业机器人作为我国高端制造业的典型代表,近年…...
Gehpi的网络布局
Gehpi的网络布局1. 力引导布局2. 辅助布局布局是网络可视化中的重要概念,指将点和边通过某种策略进行排布,应尽可能满足以下4个原则: 节点均匀分布在有限的区域内避免边的交叉和弯曲保持边的长度一致整体布局能反映图内在的特性 Gephi的布局…...
华为OD机试用Python实现 -【天然蓄水库 or 天然蓄水池】(2023-Q1 新题)
华为OD机试题 华为OD机试300题大纲天然蓄水库 or 天然蓄水池题目描述输入描述输出描述说明示例一输入输出说明示例二输入输出说明示例三输入输出说明Python 代码实现算法思路华为OD机试300题大纲 参加华为...
西北工业大学大学物理(I)下期末考试2021-2022选填解析
11 告诉你n2了,那么l0或者1,后续限制类推。2 几乎每年都出。散射波波长的偏移只与散射角有关。3 产生激光的条件。先认识到激光就是受激幅射光放大。受激辐射是产生激光的必要条件,粒子数偏转是产生激光的必要条件,谐振腔也需要。…...
【数据结构】手撕红黑树
目录 一、红黑树简介 1、红黑树的简介 2、红黑树的性质 二、红黑树的插入(看叔叔的颜色就行) 1、为什么新插入的节点必须给红色? 2、插入红色节点后,判定红黑树性质是否被破坏 2.1情况一:uncle存在且为红 2.2情…...
Linux基础命令-which查找命令文件位置
文章目录 which 命令功能 语法格式 基本参数 参考实例 1)查找chmod命令的文件位置 2)查找chmod命令的所有路径 3)一次性查找多个命令路径 4)组合其他命令一起使用 5)显示命令的版本信息 命令总结 which 命…...
在Python中,导入拓展库的规范如下:
在Python中,导入拓展库的规范如下: Import 模块名 [as 别名] from 模块名Import 对象名 [as 别名] from 模块名 import * 1.导入标准库和第三方库的方式应该不同 Python标准库已经默认安装在Python解释器中,因此在导入标准库时不需要…...
SEATA是什么?它的四种分布式事务模式
一、SEATA是什么? Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 在继续学习使用SEATA之前,对s…...
【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1)
最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明去重求和题目输入输出示例一输入输出说明示例一输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
