【系统设计】主动查询与主动推送:如何选择合适的数据传输策略
基本描述总结
主动查询机制:系统A主动向系统B请求数据,采用严格的权限控制和身份认证,防止未授权的数据访问。数据在传输过程中使用TLS加密,并通过动态脱敏处理隐藏敏感信息。
推送机制:系统B在数据更新时主动向系统A推送数据,在推送前对敏感数据进行脱敏处理,确保数据安全。数据传输采用加密和数字签名,接收方确认数据完整性。

场景描述
我方(提供数据侧),客户侧(需要获取数据侧),假设客户需要我方提供相关业务数据,可以通过俩个方式处理:
主动查询机制:提供公开可访问的接口,由客户决定访问时间和数据处理
主动推送机制:在特定的业务事件触发时,主动推送给与客户约定的推送接口或者消息队列上。
主动查询机制分析
主动查询机制是指系统A需要从系统B获取数据时,由系统A主动向系统B发起数据请求。由请求方(系统A)主动发起数据请求。请求前必须通过严格的身份验证和权限控制,防止未授权的数据访问。
【身份认证与授权控制】
目的: 确保只有经过验证和授权的用户或系统可以访问数据,防止未授权的数据泄露或篡改。
方式:
- 多因素认证(MFA):要求请求方在发起请求时进行多因素认证,如使用用户名/密码+动态验证码或硬件令牌,以增加身份验证的安全性。
- 基于OAuth 2.0的认证:采用OAuth 2.0协议,通过授权服务器颁发访问令牌(Access Token)来验证请求方身份,令牌中包含用户的权限范围、有效时间等信息。
- 角色和权限管理(RBAC/ABAC):使用基于角色(RBAC)或属性(ABAC)的访问控制策略,根据用户或系统的角色、属性和上下文,决定其访问哪些数据和服务的权限。
- 接口非对称加密:在非对称加密中,系统B创建一对密钥:公钥和私钥。公钥用于加密数据,私钥用于解密数据。以下是非对称加密的机制设计步骤:
公钥:公开给系统A(请求方),用于加密请求数据或验证数字签名。
私钥:由系统B(响应方)安全保管,用于解密请求数据或生成数字签名。
【数据脱敏与隐私保护】
目的: 保护用户隐私,确保敏感数据在不同权限级别的请求方之间得到合理控制。
- 动态数据脱敏:在响应请求时,根据请求方的权限级别,实时对返回的数据进行脱敏处理。例如,将敏感信息(如身份证号、信用卡号)只显示部分内容,隐藏其余部分。
- 敏感数据标记与分级:在数据层面对敏感数据进行标记和分类,例如:高度敏感、中度敏感和公开数据。根据数据类型和请求方权限,选择合适的脱敏规则。
- 图片和文件的脱敏:对于包含敏感信息的图片或文件(如身份证、人脸、证件图片等),使用图像处理算法进行模糊化或打码处理。
- 图片的过期机制:在系统设计中,增加图片的过期机制可以有效地控制敏感数据的存储时长,防止数据滥用和泄露,并与客户约定在获取到数据后即时下载保存。通过设计图片过期机制,可以有效管理图片的存储生命周期,增强数据安全和合规性,确保系统的安全和高效运行。
【数据传输加密与完整性验证】
目的: 确保数据在传输过程中不被非法截取、篡改或伪造,维护数据的机密性和完整性。
· 使用TLS加密:所有的请求和响应数据在传输过程中使用TLS(Transport Layer Security)加密协议,以防止数据被中间人截获或篡改。
· 数据签名与完整性验证:使用数字签名(如HMAC或基于PKI的数字签名)来确保数据的完整性和来源的真实性。接收方在收到数据后,对签名进行验证,确保数据未被篡改。
· 支持HTTP/2或HTTP/3协议:这些协议在提高传输效率的同时,提供更强的安全性,减少潜在的攻击面。
【请求频率控制与速率限制】
目的: 防止恶意用户通过频繁的请求导致服务器资源耗尽,同时保障系统的稳定性和可用性。
- 速率限制(Rate Limiting):在服务器端设置每个用户或IP的请求速率限制(例如每分钟100个请求),防止恶意用户频繁访问导致服务器过载或被攻击。
- 请求队列与优先级:对请求进行排队处理,根据请求的优先级(如系统管理员请求、普通用户请求)决定处理顺序,防止高优先级请求被低优先级请求阻塞。
- 自适应阻塞机制:对于短时间内大量的重复请求或异常请求,动态调整其阻塞策略,避免潜在的DDoS(分布式拒绝服务)攻击。
【安全审计与日志记录】
目的: 提供系统行为的可追溯性,及时发现潜在的安全威胁和违规操作,提升整体安全性。
- 详细日志记录:记录每个查询请求的相关信息,包括请求时间、来源IP、用户ID、请求参数、响应结果等。所有的日志都应加密存储,以防止被篡改
- 日志分析与监控:定期分析日志,利用机器学习或规则引擎检测异常行为,如频繁的失败请求、异常的数据访问模式等。
- 审计追踪:对于关键操作(如数据导出、大批量数据查询等),需要进行审计追踪,记录详细的操作历史,支持事后审计和分析。
主动推送机制分析
在主动推送机制中,由数据提供方(系统B)主动将更新的数据推送给请求方(系统A),这种机制通常用于需要及时将数据变化通知到其他系统的场景。在设计主动推送机制时,需要考虑多方面的因素,确保数据的安全性、可靠性、实时性和系统的扩展性。
数据加密与传输安全,数据脱敏和过期机制等和数据查询机制类似,都是需要考虑的点。
推送方式

重试机制
目的: 提高数据推送的可靠性,确保在网络波动或系统故障情况下,数据能够最终一致地到达接收方。
- 消息队列管理:使用消息队列(如Kafka、RabbitMQ)来管理推送数据,以提高数据传输的可靠性和系统的扩展性。消息队列应支持持久化和分布式架构,确保在服务故障或重启后消息不会丢失。
- 重试策略:当推送失败时,系统B应实现重试机制,按照一定的重试策略(如指数回退、最大重试次数)重新尝试发送数据,确保数据最终被成功接收。
- 幂等性支持:确保每条推送消息具有唯一标识(如UUID),接收方能够识别重复的消息并进行去重处理,避免重复消费导致的数据不一致。
推送频率控制与限流
目的: 控制数据推送的频率和数量,防止系统过载,保障服务质量和系统稳定性。
设计要点:
- 限流与速率限制:设置每个接收方的推送速率限制(如每秒钟的推送次数上限),防止系统过载或被滥用。限流策略可以基于接收方的优先级、网络状况等动态调整。
- 批量推送与合并:在数据频繁更新的情况下,可以采用批量推送策略,将多个小数据合并成一个大数据包进行推送,减少网络请求数量,提高推送效率。
- 推送优先级管理:根据推送数据的类型或重要性,设置不同的推送优先级。对于重要数据(如紧急告警或关键事件),应优先推送,确保及时到达接收方。
推送确认与回执机制
目的: 确保推送数据被成功接收和处理,提高数据传输的可靠性和可追溯性。
- 消息确认:系统A在接收到推送数据后,应发送确认回执给系统B,确认消息已成功接收和处理。可以使用HTTP状态码(如200 OK)或自定义协议的确认消息格式。
- 失败处理:如果系统A没有在规定时间内返回确认回执,系统B应触发重试机制或记录该次推送失败,并根据失败原因采取相应措施(如告警或降级处理)。
- 可靠的交付保证:系统B应根据推送数据的重要性,选择不同的交付策略(如确保至少一次交付、确保最多一次交付或精确一次交付)。
其他考虑因素
- 日志记录与监控:记录所有推送操作的详细日志,包括数据内容、推送时间、接收方信息、推送结果等,支持事后审计和异常分析。
- 安全性与合规性:在设计中应遵循相关的数据保护法律法规,确保推送数据的存储、传输和处理符合合规要求。
- 系统扩展性与负载均衡:支持多节点部署和负载均衡机制,确保系统能够扩展以处理大量并发推送请求。
- 在主动推送机制中,处理重复数据推送是一个重要的设计考量。重复数据可能会因网络重试、系统故障、消息队列重复投递等原因发生,导致数据的不一致性和冗余。有效的重复数据处理机制可以确保数据的一致性和准确性
相关文章:
【系统设计】主动查询与主动推送:如何选择合适的数据传输策略
基本描述总结 主动查询机制:系统A主动向系统B请求数据,采用严格的权限控制和身份认证,防止未授权的数据访问。数据在传输过程中使用TLS加密,并通过动态脱敏处理隐藏敏感信息。 推送机制:系统B在数据更新时主动向系统…...
mac 安装brew并配置国内源
前置条件 - Xcode 命令行工具 一行代码安装Homebrew 添加到路径(PATH) - zsh shell为例 背景介绍 最近重装了我的MAC mini (m1 芯片), 很多软件都需要重新安装,因为后续还需要安装一些软件,所以想着安装个包管理软件 什么…...
Temu官方宣导务必将所有的点位材料进行检测-RSL资质检测
关于饰品类产品合规问题宣导: 产品法规RSL要求 RSL测试是根据REACH法规及附录17的要求进行测试。REACH法规是欧洲一项重要的法规,其中包含许多对化学物质进行限制的规定和高度关注物质。 为了确保珠宝首饰的安全性,欧盟REACH法规规定&#…...
mysql高级sql
文章目录 一,查询1.按关键字排序1.1按关键字排序操作(1)按分数排序查询(不加asc默认为升序)(2)按分数降序查询(DESC)(3)使用where进行条件查询(4)使用ORDER BY语句对多个字段排序 1.2使用区间判断查询(and/…...
Linux CentOS 7.9 安装mysql8
1、新建mysql文件夹 数据比较大,所以我在服务器另外挂了一个盘装mysql,和默认安装一个道理,换路径即可 cd ../ //创建文件夹 mkdir mysql //进入mysql文件夹 cd mysql 2、下载mysql8.0安装包并解压、重命名 //下载安装包 wget https://dev…...
替代 Django 默认 User 模型并使用 `django-mysql` 添加数据库备注20240904
替代 Django 默认 User 模型并使用 django-mysql 添加数据库备注 前言 在 Django 项目开发中,默认的 User 模型虽然能够满足许多基础需求,但在实际项目中我们常常需要对用户模型进行定制化。通过覆盖默认的 User 模型,我们可以根据具体的业…...
三维激光扫描点云配准外业棋盘的布设与棋盘坐标测量
文章目录 一、棋盘标定板准备二、棋盘标定板布设三、棋盘标定板坐标测量一、棋盘标定板准备 三维激光扫描棋盘是用来校准和校正激光扫描仪的重要工具,主要用于提高扫描精度。棋盘标定板通常具有以下特点: 高对比度图案:通常是黑白相间的棋盘格,便于识别。已知尺寸:每个格…...
【Python知识宝库】文件操作:读写文件的最佳实践
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、文件读取1. 使用open函数2. 逐行读取3. 使用readlines和readline 二、文件写入1. 写入文本2. 追加内容3. 写入…...
Chapter 13 普通组件的注册使用
欢迎大家订阅【Vue2Vue3】入门到实践 专栏,开启你的 Vue 学习之旅! 文章目录 前言一、组件创建二、局部注册三、全局注册 前言 在 Vue.js 中,组件是构建应用程序的基本单元。本章详细讲解了注册和使用 Vue 的普通组件的两种方式:…...
u盘显示需要格式化才能用预警下的数据拯救恢复指南
U盘困境:需要格式化的紧急应对 在数字信息爆炸的时代,U盘作为便携的数据存储介质,承载着我们工作、学习乃至生活中的大量重要资料。然而,当U盘突然弹出“需要格式化才能用”的提示时,这份便捷瞬间转化为焦虑与不安。这…...
还不懂BIO,NIO,AIO吗
BIO(Blocking I/O)、NIO(Non-blocking I/O)和 AIO(Asynchronous I/O)是 Java 中三种不同的 I/O 模型,主要用于处理输入 / 输出操作。 一、BIO(Blocking I/O) 定义与工作原…...
物联网——DMA+AD多通道
DMA简介 存储器映像 某些数据在运行时不会发生变化,则设置为常量,存在Flash存储器中,节省运行内存的空间 DMA结构图 DMA访问权限高于cpu 结构要素 软件触发源:存储器到存储器传输完成后,计数器清零 硬件触发源&…...
Vue 中 watch 和 watchEffect 的区别
watch 和 watcheffect 都是 vue 中用于监视响应式数据的 api,它们的区别在于:watch 用于监视特定响应式属性并执行回调函数。watcheffect 用于更通用的响应式数据监视,但回调函数中不能更新响应式数据。Vue 中 watch 和 watchEffect 的区别 …...
pip install pyaudio sounddevice error: externally-managed-environment
shgbitaishgbitai-C9X299-PGF:~/pythonworkspace/ai-accompany$ pip install pyaudio sounddevice error: externally-managed-environment This environment is externally managed ╰─> To install Python packages system-wide, try apt installpython3-xyz, where xyz …...
HTML 转 PDF API 接口
HTML 转 PDF API 接口 网络工具 / 文件处理 支持网页转 PDF 高效生成 PDF / 提供永久链接。 1. 产品功能 超高性能转换效率;支持将传递的 HTML 转换为 PDF,支持转换 HTML 中的 CSS 格式;支持传递网站 URL,直接转换页面成对应的 …...
http://localhost:15672/ 无法访问
注意erlang版本和rabbitmq的版本要保持兼容 rabbitmq和erlang对应关系如下:https://www.rabbitmq.com/which-erlang.html 目前我选择的erlang版本是:otp_win64_24.3.3,rabbit版本是:rabbitmq-server-3.10.18.exe 如果两者之间的版…...
6.3图的遍历
图的遍历是指从某点出发,按照某种搜索方式沿着边访问图中所有节点 图的遍历算法主要有两种:广度优先,深度优先 都需要辅助数组visited[]来记录节点是否被访问过 6.3.1广度优先搜索 like层次遍历,需要辅助队列 代码实现 #include<stdio.h> #define maxnum 15 bool vi…...
2024数学建模国赛选题建议+团队助攻资料(已更新完毕)
目录 一、题目特点和选题建议 二、模型选择 1、评价模型 2、预测模型 3、分类模型 4、优化模型 5、统计分析模型 三、white学长团队助攻资料 1、助攻代码 2、成品论文PDF版 3、成品论文word版 9月5日晚18:00就要公布题目了,根据历年竞赛题目…...
大学课程-人机交互期末复习
绪论 什么是人机交互技术?⭐⭐ 是指关于设计、评价和实现供人们使用的交互式计算机系统,并围绕相关的主要现象进行研究的学。狭 义的讲,人机交互技术主要是研究人与计算机之间的信息交换,它主要包括人到计算机和计算机到人的 信息…...
畅游5G高速网络:联发科集成Wi-Fi6E与蓝牙5.2的系统级单芯片MT7922
这周末,除非外面下钞票,否则谁也拦不住我玩《黑神话悟空》(附:两款可以玩转悟空的显卡推荐) IPBrain平台君 集成电路大数据平台 2024年09月03日 17:28 北京 联发科一直以创新技术追赶市场需求…… “不努力向前游就会被海浪拍回岸边…” 芯片设计公司产品层出不穷,想要站…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
