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

【极客日常】后端任务动态注入执行策略的一种技术实现

近期做项目时遇到一个场景,是需要在后端任务执行时动态注入策略。具体而言,笔者负责的后端服务,可以理解是会在线上服务发布时,对服务风险做实时扫描,那么这个扫描就需要根据当前线上服务发布上下文,匹配对应的策略。但这里扫出来的策略都是静态持久化的,前端也有产品化的配置,而有些业务则希望能够在任务执行时,动态注入一些业务自己理解需要的扫描策略,不在前端做静态配置。

对于这类定制化需求,笔者想到的一种比较低成本实现的方式是这样的:

首先这类动态生成的策略还是需要持久化的,但不需要在前端做产品化,只不过后端查配置的时候,能够根据一定的逻辑识别出来哪些策略是静态配置,哪些策略是动态生成。具体的识别逻辑怎么做,一个解法就回溯到刚进大学学计算机网络那个年代,IP是怎么划分的,那么动态策略的ID就可以怎样划分。

然后是选数值段,这里需要确保db里面id范围和内存里面数据类型是一致的,比如mysql的bigint可以对应上Golang里面int64,那么就确保不会出现数值的隐式转换。然后我们就可以像IP划分一样,给一个非常大的prefix(比如0x1234567800000000)以及一个mask(对应的是0x7FFFFFFF00000000),那么只要有一个ID,就可以根据prefix和mask判断这个ID是动态策略的还是静态策略的,并且有了prefix,动态策略ID和落库主键ID也可以相互转化。

最后对于整个系统,根据ID去CRUD执行策略的逻辑都需要做变换,需要先校验是动态策略还是静态策略,然后再走对应的分支逻辑。否则会出现问题。

http://www.xdnf.cn/news/15354.html

相关文章:

  • 解决bash终端的路径名称乱码问题
  • Spring之【写一个简单的IOC容器EasySpring】
  • 批量自动运行多个 Jupyter Notebook 文件的方法!!!
  • 创建Spring Boot项目
  • 基于 Redisson 实现分布式系统下的接口限流
  • 网络安全初级第一次作业
  • MacOS环境下运行EasySearch报错无法信任Java包的解决方案
  • ServiceNow Portal前端页面实战讲解
  • GGE Lua 详细教程
  • 【6.1.1 漫画分库分表】
  • c#中生成随机数的三种方法
  • pgsql模板是什么?
  • Kafka——聊聊Kafka的版本号
  • 【理念●体系】从零打造 Windows + WSL + Docker + Anaconda + PyCharm 的 AI 全链路开发体系
  • 1Panel V1 无缝升级到 V2 版本 实现多个 PHP 网站共享一个容器
  • Spring Boot整合MyBatis+MySQL实战指南(Java 1.8 + 单元测试)
  • AIStarter新版重磅来袭!永久订阅限时福利抢先看
  • ARM架构CPU的市场和生态
  • 使用云虚拟机搭建hadoop集群环境
  • Claude Code是什么?国内如何使用到Claude Code?附国内最新使用教程
  • 四、神经网络——正则化方法
  • 喷涂机器人cad【1张】+三维图+设计说明书+降重
  • redis数据结构和数据类型
  • vector之动态二维数组的底层
  • 2025年亚太中文赛B题第一版本超详细解题思路
  • C++:非类型模板参数,模板特化以及模板的分离编译
  • Java大厂面试故事:谢飞机的互联网医疗系统技术面试(Spring Boot、MyBatis、Kafka、Spring Security、AI等)
  • FastAPI + SQLAlchemy (异步版)连接数据库时,对数据进行加密
  • 【字节跳动】数据挖掘面试题0016:解释AUC的定义,它解决了什么问题,优缺点是什么,并说出工业界如何计算AUC。
  • UE5多人MOBA+GAS 18、用对象池来设置小兵的队伍的生成,为小兵设置一个目标从己方出生点攻打对方出生点,优化小兵的血条UI