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

【系统设计】主动查询与主动推送:如何选择合适的数据传输策略

基本描述总结

主动查询机制:系统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&#xff1a;00就要公布题目了&#xff0c;根据历年竞赛题目…...

大学课程-人机交互期末复习

绪论 什么是人机交互技术&#xff1f;⭐⭐ 是指关于设计、评价和实现供人们使用的交互式计算机系统&#xff0c;并围绕相关的主要现象进行研究的学。狭 义的讲&#xff0c;人机交互技术主要是研究人与计算机之间的信息交换&#xff0c;它主要包括人到计算机和计算机到人的 信息…...

畅游5G高速网络:联发科集成Wi-Fi6E与蓝牙5.2的系统级单芯片MT7922

这周末,除非外面下钞票,否则谁也拦不住我玩《黑神话悟空》(附:两款可以玩转悟空的显卡推荐) IPBrain平台君 集成电路大数据平台 2024年09月03日 17:28 北京 联发科一直以创新技术追赶市场需求…… “不努力向前游就会被海浪拍回岸边…” 芯片设计公司产品层出不穷,想要站…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

jdbc查询mysql数据库时,出现id顺序错误的情况

我在repository中的查询语句如下所示&#xff0c;即传入一个List<intager>的数据&#xff0c;返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致&#xff0c;会导致返回的id是从小到大排列的&#xff0c;但我不希望这样。 Query("SELECT NEW com…...