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

基本描述总结

主动查询机制:系统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应根据推送数据的重要性,选择不同的交付策略(如确保至少一次交付、确保最多一次交付或精确一次交付)。

其他考虑因素

  • 日志记录与监控:记录所有推送操作的详细日志,包括数据内容、推送时间、接收方信息、推送结果等,支持事后审计和异常分析。
  • 安全性与合规性:在设计中应遵循相关的数据保护法律法规,确保推送数据的存储、传输和处理符合合规要求。
  • 系统扩展性与负载均衡:支持多节点部署和负载均衡机制,确保系统能够扩展以处理大量并发推送请求。
  • 在主动推送机制中,处理重复数据推送是一个重要的设计考量。重复数据可能会因网络重试、系统故障、消息队列重复投递等原因发生,导致数据的不一致性和冗余。有效的重复数据处理机制可以确保数据的一致性和准确性

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Java并发编程实战 05 | 什么是线程组?

1.线程组介绍 在 Java 中,ThreadGroup 用于表示一组线程。通过 ThreadGroup,我们可以批量控制和管理多个线程,使得线程管理更加方便。 ThreadGroup 和 Thread 的关系就像它们的字面意思一样简单:每个线程 (Thread) 必定属于一个线…

基于R语言的统计分析基础:操作XML文件与YAML文件

XML文件简介 在处理从文本文件中读取数据的任务时,用户承担着至关重要的责任,即需要充分理解和明确指定在创建该文件时所遵循的一系列约定和规范。这些约定涵盖了多个方面,包括但不限于: 注释字符:识别并忽略文件中用…

kubeadm 初始化 k8s 证书过期解决方案

概述 在使用 kubeadm 初始化的 Kubernetes 集群中,默认情况下证书的有效期为一年。当证书过期时,集群中的某些组件可能会停止工作,导致集群不可用。本文将详细介绍如何解决 kubeadm 初始化的 Kubernetes 集群证书过期的问题,并提…

CSP-J基础之常见的竞赛题库

文章目录 CSP-J基础之常见的竞赛题库1. 可达 (KEDA)2. 洛谷 (Luogu)3. Codeforces 洛谷账号的注册总结 CSP-J基础之常见的竞赛题库 在备战CSP-J(Certified Software Professional Junior)及其他信息学竞赛时,选手们常需要借助在线题库来进行…

android framework工程师遇到成长瓶颈迷茫怎么办?千里马经验分享

背景 近来有一些framework老司机粉丝朋友发来了一些framework工作中的一些疑问,具体描述如下: 这个同学遇到的问题,其实就是大部分framework开发者工作比较久后遇到的一个上升瓶颈问题。 具体总结有以下几个瓶颈问题 1、framework属于系…

Clion不识别C代码或者无法跳转C语言项目怎么办?

如果是中文会显示: 此时只需要右击项目,或者你的源代码目录,将这个项目或者源码目录标记为项目源和头文件即可。 英文如下:

STM32内部闪存FLASH(内部ROM)、IAP

1 FLASH简介 1 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 2 通过在程序中编程(IAP)实现程序的自我更新 (OTA) 3在线编程(ICP把整个程序都更新掉) 1 系统的Bootloader写死了,只能用串口下载到指定的位置&a…

【MacOS】mac定位服务中删除已经卸载的软件

mac定位服务中删除已经卸载的软件 网上的帖子真不靠谱 直接右键 WeTypeSettings ,查找位置,丢废纸篓即可!会提示你卸载的!

VLAN原理学习笔记

以太网是一种基于CSMA/CD的数据网络通信技术,其特征是共享通信介质。当主机数目较多时会导致安全隐患、广播泛滥、性能显著下降甚至造成网络不可用。 在这种情况下出现了VLAN (Virtual Local Area Network)技术解决以上问题。 1、VLAN快速配置 Vlan:Virtual Local…

C和指针:结构体(struct)和联合(union)

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

springboot流浪天使乐园管理系统

基于springbootvue实现的流浪天使乐园管理系统(源码L文ppt)4-039 第4章 系统设计 4.1 总体功能设计 一般个人用户和管理者都需要登录才能进入流浪天使乐园管理系统,使用者登录时会在后台判断使用的权限类型,包括一般使用者…

以太网交换机工作原理学习笔记

在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以太网协议是充分理解数据链路层通信的基础。以太网交换机是实现数据链路层通信的主要设备,了解以太网交换机的工作原理也是十分必要的。 1、以太网协议…

Qt/C++编写的Onvif调试助手调试神器工具/支持云台控制/预置位设置等/有手机版本

一、功能特点 广播搜索设备,支持IPC和NVR,依次返回。可选择不同的网卡IP进行对应网段设备的搜索。依次获取Onvif地址、Media地址、Profile文件、Rtsp地址。可对指定的Profile获取视频流Rtsp地址,比如主码流地址、子码流地址。可对每个设备设…

ESP32_获取心知天气

目录 前言 一、获取心知天气API 二、编写代码 1.下载代码 2.代码讲解 1.安装Arduino.Json库 2.输入WIFI名称和密码 3.添加API 4.关于API的补充 三.数据的打印和处理 1.获取的数据 2.数据输出 总结 前言 环境:Arduino 芯片:ESP32 软件&…

基于springboot+vue实现的农家乐管理系统

基于springbootvue实现的山庄农家乐管理系统前后端分离项目(文末查看源码lw)4-10 系统角色: 管理员、用户 主要功能: (1)用户关键功能包含用户注册登陆、个人信息修改、首页、农家乐、美食信息、民宿信息…

【LeetCode】20.有效的括号

题目要求 解题思路 利用栈来解决本道题&#xff0c;左括号进栈&#xff0c;右括号出栈。需要判断第一个字符是右括号的情况 代码实现 class Solution { public:bool isValid(string s) {//利用栈来解决stack<char> st;for(auto& e:s){//是左括号就进if(e(||e[||…

SpringBoot开启多端口探究--基于多ApplicationContext

文章目录 前情提要一、思路概要二、具体实现三、其他问题父子关系部分依赖 总结 前情提要 前面探讨了management端口开启&#xff0c;grpc端口开启&#xff0c;本文继续探讨在SpringApplication中开启多个端口的方式之多ApplicationContext, 相比management端口基于多WebServe…

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统&#xff1f; 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能…

基于Spring Boot的火车订票管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JAVA语言 Spring Boot框架 工具&#xff1a;IDEA/Eclipse、Navicat、Tomcat 系统展示 首页 管理…

【动手学深度学习】05 线性代数(个人向笔记)

1. 线性代数 向量的一些公式 ∣ ∣ a ∣ ∣ ||a|| ∣∣a∣∣ 表示向量 a 的范数&#xff0c;课上没有讲范数的概念 其中第一条为求向量的二范数 第四条表示如果a为标量&#xff0c;那么向量 ∣ ∣ a ⋅ b ∣ ∣ ||ab|| ∣∣a⋅b∣∣ 的长度等于 ∣ a ∣ ⋅ ∣ ∣ b ∣ ∣…