【系统设计】主动查询与主动推送:如何选择合适的数据传输策略
基本描述总结
主动查询机制:系统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 北京 联发科一直以创新技术追赶市场需求…… “不努力向前游就会被海浪拍回岸边…” 芯片设计公司产品层出不穷,想要站…...

SpringSecurity原理解析(一)
一、SpringSecurity 核心组件 在SpringSecurity中的jar包有4个,作用分别为: spring-security-coreSpringSecurity的核心jar包,认证和授权的核心代码都在这里面spring-security-config如果使用Spring Security XML名称空间进行配置或Spring S…...

在Ubuntu 20.04上安装Nginx的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 Nginx 是世界上最流行的 Web 服务器之一,负责托管互联网上一些最大和流量最高的网站。它是一个轻量级选择,…...

基于苹果Vision Pro的AI NeRF方案:MetalSplatter
随着苹果Vision Pro的发布,混合现实(Mixed Reality, MR)技术迎来了一个新的发展阶段。为了充分利用Vision Pro的潜力,一款名为MetalSplatter的Swift/Metal库应运而生,它允许开发者在Vision Pro上以全立体的方式体验捕捉内容。本文将详细介绍MetalSplatter的特点及其如何为…...

linux系统中,计算两个文件的相对路径
realpath --relative-to/home/itheima/smartnic/smartinc/blocks/ruby/seanet_diamond/tb/parser/test_parser_top /home/itheima/smartnic/smartinc/corundum/fpga/lib/eth/lib/axis/rtl/axis_fifo.v 检验方式就是直接在当前路径下,把输出的路径复制一份࿰…...

[数据集][目标检测]抽烟检测数据集VOC+YOLO格式22559张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):22559 标注数量(xml文件个数):22559 标注数量(txt文件个数):22559 标…...

C和指针:结构体(struct)和联合(union)
结构体和联合 结构体 结构体包含一些数据成员,每个成员可能具有不同的类型。 数组的元素长度相同,可以通过下标访问(转换为指针)。但是结构体的成员可能长度不同,所以不能用下标来访问它们。成员有自己的名字,可以通过名字访问…...

[数据集][目标检测]电动车头盔佩戴检测数据集VOC+YOLO格式4235张5类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4235 标注数量(xml文件个数):4235 标注数量(txt文件个数):4235 标注…...

软件工程知识点总结(2):需求分析(一)——用例建模
1 软件项目开发流程: 需求分析→概要设计→详细设计→编码实施→测试→产品提 交→维护 2 系统必须做什么? 获取用户需求,从用户角度考虑,用户需要系统必须完成哪些工作,也就是对目 标系统提出完整、准确、清晰、具体…...

2024 年高教社杯全国大学生数学建模竞赛C题—农作物的种植策略(讲解+代码+成品论文助攻,均已更新完毕)
2024数学建模国赛选题建议团队助攻资料-CSDN博客文章浏览阅读1k次,点赞20次,收藏24次。通过分析5个题目的特点,可知数学建模常用的模型大概可以分为五大类——https://blog.csdn.net/qq_41489047/article/details/141925859 本次国赛white学长…...

?.操作符是什么
?.操作符在不同的编程语言和上下文中可能有不同的含义和用途,但一般来说,它并不是一个广泛存在于所有编程语言中的标准操作符。不过,基于一些编程语言的特性和习惯,我们可以对?.操作符进行一些推测和解释。 1. 可选链操作符&am…...