提供操作日志、审计日志解决方案思路

操作日志

现在大部分公司一般使用SpringCloud这条技术栈,操作日志通过网关Gateway提供的Globalfilter统一拦截请求解析请求是比较好的选选择。

优点:相对于传统的过滤器、拦截器同步阻塞方案,SpringCloud Gateway使用的Webflux中的reactor-netty响应式编程组件,底层使用了Netty通讯框架,提高了性能。

缺点:请求的解析与传统过滤器、拦截器有所不同,特别是获取请求参数与响应参数这块。

具体方案:在Globalfilter初始化时将需要拦截的路径加载到内存当中,解析请求和响应后构建日志实体,通过mq发送到消息队列,再通过mq监听器将数据落库。拦截路径和一些描述信息可配合swagger api来配置。

虽然请求和响应是异步,但是经过实践,一个Globalfilter就可以完成请求与响应参数的解析。思路是在请求时请求头解析和设置参数,响应时构建日志实体发送mq。

细节补充:注意请求头中直接设置中文会乱码,需要在网关编码和使用的地方解码。请求和响应流是一次性的,获取后需要重新构建,可自行搜索方案。响应流处理有不同方式,区别在于适用大量数据还是少量数据的返回,大量数据这种方式会对DataBuffer进行拼接,可避免少量中文乱码问题。

审计日志

审计日志与使用的数据持久层框架有关,如果使用mybatis,就可以通过mybatis拦截器来实现。方案是解析查询语句,将审计变更前数据缓存到redis,并根据登录token过期时长设置过期时间。拦截修改、逻辑删除等入参以及sql语句,通过入参及sql语句解析,去redis拿到变更前以及参数中变更后的数据生成审计日志实体,发送到mq指定队列,再通过mq监听消息落库。

优点:相对传统的注解解析方案,基本无业务侵入,并且数据库压力减小(无需查询变更前数据)。

缺点:审计粒度不够,对于关联id、状态字段这种,如果需要审计,仍需定制化一些逻辑。风险稍高,mybatis拦截器会对整个系统的sql进行了拦截,解析sql以及参数等需要谨慎实现。对于Mapper.xml定义的一些复杂的查询,不好处理。

细节补充:页面增、删、改基本是在查询后操作,这是方案可行的根本原因。审计字段来源为自己配置,存储方案自己选择,可在mybatis拦截器初始化是放到内存中;格式为系统标识-表名-字段名-id:数据。对于新增、删除这种如果要审计直接去redis拿数据即可。逻辑删除这种只有id参数的通过sql解析出表名扫描映射实体的包,获取字段信息,通过当前系统、表名、字段名、id信息再去redis拿数据即可。

具体代码实现暂不便透露。

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

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

相关文章

资源目录与云SSO

1、开启资源目录 2、创建资源文件夹(根据公司业务划分) 3、资源文件夹内创建或邀请成员 4、创建管控策略(类型访问控制权限授权方法,可以授权给指定给资源文件夹或资源文件夹内成员) 5、可信服务-委派管理员账号数量 …

解锁下载EasyRecovery2024电脑版软件 3步破解下载秘籍!

在数字时代,数据已成为我们生活中不可或缺的一部分。无论是工作中的重要文件,还是珍贵的家庭照片和视频,数据都承载着我们的回忆和努力。然而,数据的丢失也是我们常常遇到的问题。硬盘损坏、误删除、病毒攻击等都可能导致数据丢失…

Nodejs 第七十四章(微服务)

什么是微服务? micro servers 微服务和微前端是类似的,微前端就是借鉴了微服务的理念去实现的,那么微服务指的就是,将应用程序拆分成为一系列小型、独立的服务,每个服务都是专注于执行特定的业务,比如文章…

第N4周:中文文本分类

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、预备知识 中文文本分类和英文文本分类都是文本分类,为什么要单独拎出来个中文文本分类呢? 在自然语言处理(NLP&#x…

Tomcat相关概述和部署

目录 一、Tomcat知识 1.Tomcat概述 2.Tomcat组件构成 3.Tomcat 功能组件结构 4.Tomcat的请求过程 二、tomcat服务部署 1.老样子准备工作——关闭防火墙和selinux,防止其对安装过程的干扰 2.将准备好的软件包拖入/opt目录下,进行安装JDK 3.设置J…

嵌入式学习记录6.5(内存分配/构造函数/析构函数)

目录 目录 一.c动态内存分配回收 1.1分配 1.2回收 1.3new、delete和malloc、free之间的区别(重点) 二.构造函数 2.1功能,格式 2.2示例 三.析构函数 3.1功能,格式 3.2特点 3.3示例 四.思维导图/练习 4.1思维导图 4.2练习 一.c动态内存分配回…

无需复杂步骤,Win11用户轻松开启旧版文件资源管理器!

在Win11电脑操作中,用户可以使用到新版的文件资源管理器,但总是有各种错误、卡顿等问题的出现,所以很多用户都不喜欢新版资源管理器。接下来小编给大家介绍一个简单的方法,帮助Win11用户快速开启旧版文件资源管理器。 具体操作如下…

NumPy 通用函数(ufunc):高性能数组运算的利器

NumPy 通用函数(ufunc) 简介 NumPy 通用函数(ufunc),代表“通用函数”,是一类用于对 ndarray 对象进行逐元素运算的高性能函数。ufunc 使 NumPy 能够在底层高效地利用 C 语言实现向量化操作,从…

【RISC-V】站在巨人的肩膀上——看开源芯片、软件生态、与先进计算/人工智能/安全的结合

目录 会议议程专题二:RISC-V与先进计算基于RISC-V的后量子密码芯片设计,刘冬生,华中科技大学存算一体集成芯片,刘琦,复旦大学面向端侧大模型计算的RISC-V矩阵扩展架构,复旦大学,韩 军 专题五&am…

开源基于Rust编写的Web服务器

基于 RUST 的 WEB 资源服务器 Github 地址 LTPP-GIT 地址 官方文档 该项目于 2024 年 5 月 1 日开始开发 预期功能 功能支持情况当前情况多线程支持是是服务支持配置化是是防盗链支持是是gzip 支持是是反向代理支持是是自定义状态码对应资源文件是是日志支持是是负载均衡支…

easyexcel模板填充列表

引入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version></dependency>编写模板 编写代码 public class FillData {private String name;private Double number;pu…

如何解决 Zabbix模板同步超时:解决运维技术领域的BugFailed to sync Zabbix template due to timeout

如何解决 Zabbix模板同步超时&#xff1a;解决运维技术领域的BugFailed to sync Zabbix template due to timeout 原创作者&#xff1a; 猫头虎 作者微信号&#xff1a; Libin9iOak 作者公众号&#xff1a; 猫头虎技术团队 更新日期&#xff1a; 2024年6月6日 博主猫头虎…

003 Spring注解

文章目录 PathVariable和RequestParamPathVariable 示例RequestParam 示例 GetMapping、PostMapping、PutMapping、DeleteMapping1. GetMapping2. PostMapping3. PutMapping4. DeleteMapping总结 Autowired和ResourceAutowired使用场景如何使用注意事项 Resource1. Resource的作…

毛坏房无从下手,不知道怎么装

毛胚房装修步骤      1验房,      2,借钱      3,出设计图施工图      4,决定找公司还是自装      5,拆除墙体      6,安装中央空调或风管机      7,改水电      8,做地暖      9封阳台      10,做防水      11,铺瓷砖      1…

LabVIEW源程序安全性保护综合方案

LabVIEW源程序安全性保护综合方案 一、硬件加密保护方案 选择和安装硬件设备 选择加密狗和TPM设备&#xff1a;选择Sentinel HASP加密狗和支持TPM&#xff08;可信平台模块&#xff09;的计算机主板。 安装驱动和开发工具&#xff1a;安装Sentinel HASP加密狗的驱动程序和开发…

Java物业管理系统+数据库应用程序开发[JavaSE+JDBC+idea控制台+MySQL]

背景&#xff1a; 使用JavaSEJDBCMySQL技术实现一个物业管理系统&#xff0c;具体要求如下 物业管理系统需求&#xff1a; 需求分析 1.1用户需求分析 在进入系统之前&#xff0c;要进行身份确认&#xff0c;只有用户名和用户密码都相符的用户方可进入本系统&#xff0c;为…

SASAM软件架构静态分析法-系统架构师(六)

1、体系结构权衡分析法&#xff08;Architecture Tradeoff Analysis Method ATAM&#xff09;包含四个主要活动领域&#xff0c;分别是 场景和需求的收集、体系结构视图和场景的实现、&#xff08;&#xff09;、折中。基于场景的架构分析方法&#xff08;Scenarios-based Arch…

读写csv文件的C++实现

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言读写csv文件的C++实现前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对读写csv文件的C++实现做个简单的…

大归纳!!教你使用<string.h>的字符函数与字符串函数!!☑

这篇博客为你归纳了所有的字符函数和最常用的字符串函数&#xff0c;以及对应的模拟实现&#xff01;&#xff01;你可以直接循着目录跳到你需要的段落哦&#xff01;&#xff01;&#x1f60d; 目录 字符函数 字符分类 字符判断函数 islower——判断小写字母 isupper——…

JVM学习-Jprofiler

JProfiler 基本概述 特点 使用方便&#xff0c;界面操作友好对被分析的应用影响小(提供模板)CPU&#xff0c;Tread&#xff0c;Memory分析功能尤其强大支持对jdbc,noSql,jsp,servlet,socket进行分析支持多种模式(离线、在线)的分析支持监控本地、远程JVM跨平台&#xff0c;拥…