【项目实践】如何解决并发场景下数据一致性问题

1.背景

并发写场景下,由于微服务的系统环境复杂,不可避免的会出现 【机器、缓存、数据库、依赖服务】等出现问题,导致数据不一致的情况产生。

影响大且广:

1、数据不一致问题在线上可能会产生故障

2、数据不一致会导致长尾错误、牵一发动全身。

3、数据不一致会导致三方业务扩散,到全量数据不准确。

挑战严峻:

A、人工成本高:处理问题时效长、人员精神紧张、需具备领域知识。

B、舆情风险大:数据一致性问题随机性高,可产生的故障等级高。

C、系统可靠性不足:开发成本越来越高、缺少成熟方案、拆东墙补西墙。

2、解决方案&痛点

经过了上面的一堆问题若干年的折腾,优化了无数的细节,最终总结出了一个结论:“高并发场景下的数据不一致问题由于其调度复杂性和计算的精度丢失,不可从微观层面避免”。

系统分析后,根据问题的影响程度和覆盖范围的不同,综合来看可以从三个层面来分析:

业务中的更多调度场景梳理

3、自愈调度平台解决方案

3.1 业务架构图

3.2 业务流程图

场景一:自愈场景

场景二:异常场景止血、自愈

场景三:抽样核验自愈

3.3自愈平台的技术目标

3.4 自愈调度平台后台设计
3.4.1 任务后台
3.4.1.1 创建任务编辑页
  • 基础设置:名字、功能描述、类型等
  • 任务配置:根据任务类型不同设置不同参数,如HSF需设置分组、版本、方法等
  • 执行配置:超时设置、重试设置、执行时间设置(比如延迟执行,定时执行)

3.4.1.2 创建场景&关联预案编辑页
  • 基础设置:名字、场景code、场景描述等
  • 任务配置:可选择多个任务配置优先级以及执行方式(异步/同步)
  • 告警配置:可根据时间情况配置告警提醒

3.4.1.3 场景&关联任务管理页

3.4.2 监控中心
3.4.2.1 监控后台

总结

在追求高性能的过程中,根据CAP原则,必须平衡一致性与其他系统特性的取舍;虽然可能牺牲强一致性,但为了确保业务连续性,我们必须保障系统达到最终一致性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/720046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP传输方式——组播

组播作为IP传输三种方式之一,指的是报文从一个源发出,被转发到一组特定的接收者,相同的报文在每条链路上最多有一份。相较于传统的单播和广播,组播可以有效地节约网络带宽、降低网络负载,所以被广泛应用于IPTV、实时数…

项目中如何优雅的使用枚举类型

原文链接:赵侠客 前言 枚举类型在开发中是很常见的,有非常多的应用场景,如状态管理、类型分类、权限控制、配置管理、错误码管理、日志级别等。正确合理的使用枚举可以给我们带来非常多的好处: 增强代码可读性:枚举可…

pandas.DataFrame新增列、dropna()方法-丢弃含空值的行、列;inf的处理技巧

在Dataframe中新添加一列 直接指明列名,然后赋值就可 import pandas as pddata pd.DataFrame(columns[a,b], data[[1,2],[3,4]]) data >>> dataa b 0 1 2 1 3 4 添加一列’c‘,赋值为空白值。打印出来 data[c] data >>>…

1255942-05-2,DBCO-C6-Amine,可以用于构建分子结构和生物活性分子

您好,欢迎来到新研之家 文章关键词:1255942-05-2,DBCO C6 NH2,DBCO-C6-Amine,二苯并环辛炔-C6-氨基 一、基本信息 【产品简介】:DBCO-C6-NH2 is a multifunctional molecule with excellent chemical re…

【王道操作系统】ch1计算机系统概述-05操作系统引导

文章目录 【王道操作系统】ch1计算机系统概述-05操作系统引导01 什么是操作系统引导02 磁盘里边有哪些相关数据(1)主引导记录(MBR)(2)活动分区(一般是C盘) 03 操作系统引导的过程 【…

如何创建MinIO存储服务公网地址实现固定TCP域名异地远程访问——“cpolar内网穿透”

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统,它可以100%的运行在标准硬件上,即X86等…

每日一题 — 盛水最多的容器

11. 盛最多水的容器 - 力扣(LeetCode) 思路: 因为体积是长度乘高,所以运用双指针,一个在最左,一个在最右,每次都记录体积 V ,然后比较左边的长度和右边的长度,左边的长度…

【代码随想录算法训练营Day35】435.无重叠区间;763.划分字母区间;56.合并区间

文章目录 ❇️Day 36 第八章 贪心算法 part05✴️今日任务❇️435. 无重叠区间自己的思路自己的代码(✅通过81.59%)随想录思路随想录代码 ❇️763.划分字母区间自己的思路自己的代码(✅通过55.30%)随想录思路随想录代码 ❇️56. 合…

长/短 链接/轮询 和websocket

短连接和长连接 短连接: http协议底层基于socket的tcp协议,每次通信都会新建一个TCP连接,即每次请求和响应过程都经历”三次握手-四次挥手“优点:方便管理缺点:频繁的建立和销毁连接占用资源 长连接: 客…

Javaweb之SpringBootWeb案例之自动配置案例的自定义starter分析的详细解析

3.2.4.1 自定义starter分析 前面我们解析了SpringBoot中自动配置的原理,下面我们就通过一个自定义starter案例来加深大家对于自动配置原理的理解。首先介绍一下自定义starter的业务场景,再来分析一下具体的操作步骤。 所谓starter指的就是SpringBoot当…

java 多线程分段下载

java 多线程分段下载 介绍 使用java 多线程下载,当前只是一个demo,还没进行对比测试,目前看速度确实要快一些 实现和简单就是启用多个现成分段下载,最后再组合在一起 完整代码 原本是下载tomcat10的,但是我本地jdk不符&#…

机器人工具箱学习(二)

一、机械臂及运动学 1.1 机械臂构成 机械臂多采用关节式机械结构,一般具有6个自由度,其中3个用来确定末端执行器的位置,另外3个则用来确定末端执行装置的方向(姿态)。   如图所示,一个机械臂是由一组可做相对运动的关节连接的连…

Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行

Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行 目录 Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行前言1 使用GUI-Guider设计UI1.1 创建工程1.2 设计UI 2 ESP工程导入UI2.1 移植LVGL2.2 移植UI文件2.3 调用UI文件2.4 烧录测试 结束语 前言 GU…

二维码门楼牌管理系统技术服务:楼牌编设规则详解

文章目录 前言一、院落内新增楼栋的楼牌编制二、围合式或分片式建筑群的楼牌编设三、围合单位建筑内部的楼牌编制四、独栋单位建筑的楼牌编制五、无名称院落的楼牌编制六、同一裙楼上多栋楼房的楼牌编制 前言 随着城市建设的快速发展,门楼牌管理成为城市管理的重要…

山西电力市场日前价格预测【2024-02-27】

日前价格预测 预测说明: 如上图所示,预测明日(2024-02-27)山西电力市场全天平均日前电价为332.28元/MWh。其中,最高日前电价为544.59元/MWh,预计出现在19:00。最低日前电价为211.48元/MWh,预计…

如何在Linux使用Docker部署Redis并结合内网穿透实现公网远程连接本地数据库

文章目录 前言1. 安装Docker步骤2. 使用docker拉取redis镜像3. 启动redis容器4. 本地连接测试4.1 安装redis图形化界面工具4.2 使用RDM连接测试 5. 公网远程访问本地redis5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 正文开始前给大家推荐个网站…

还在手动Word转PPT?快来试试这些一键生成工具!

在我们日常的工作和学习中,将Word转化成PPT的需求时常出现,尤其是当我们需要进行演讲或者报告时。这不仅能使我们的演讲更具视觉冲击力,也有助于我们更好地传达信息。 那么,如何才能轻松地将Word转换成PPT呢?下面将为…

商家转账到零钱功能申请方法

商家转账到零钱是什么? 【商家转账到零钱】可以说是【企业付款到零钱】的升级版,商家转账到零钱可以为商户提供同时向多个用户微信零钱转账的能力,支持分销返佣、佣金报酬、企业报销、企业补贴、服务款项、采购货款等自动向用户转账的场景。…

Intel 芯片 Mac 如何重新安装系统

使用可引导安装器重新安装(可用于安装非最新的 Mac OS,系统降级,需要清除所有数据,过程确保连接上网络,虽然这种方式不会下载 Mac OS,但是需要下载固件等信息) 插入制作好的可引导安装器&#x…

leetcode 热题 100_找到字符串中所有字母异位词

题解一&#xff1a; 滑动窗口&#xff1a;类似于字符串匹配&#xff0c;但匹配异位词需要包含相同的字母及个数&#xff0c;可以分别用两个数组存储字符串s滑动窗口和字符串p的字母及个数&#xff0c;再用Array.equals()进行比对。对于s.length()<p.length()的情况需要特判。…