180628-动态任务执行框架想法篇

简介: 对于后端而言,数据订正可算是非常非常频繁且常见的事情了,常见的有DB、缓存、内存等数据源中的数据订正,对于非应用内存而言,其他有实体或者可以直接通过官方的提供的控制台连接进行修改的数据订正,相对比较简单,而对于应用内存,如果没有应用内通知并处理相关逻辑,多半就只能重启应用来实现刷新内存缓存了

image.png

文章链接:

  • blog.hhui.top/hexblog/201…

目前想法已初步实现,见博文:

  • 20180702-QuickTask动态脚本支持框架整体介绍篇


数据订正带来的动态任务执行框架的想法



I. 背景


对于后端而言,数据订正可算是非常非常频繁且常见的事情了,常见的有DB、缓存、内存等数据源中的数据订正,对于非应用内存而言,其他有实体或者可以直接通过官方的提供的控制台连接进行修改的数据订正,相对比较简单,而对于应用内存,如果没有应用内通知并处理相关逻辑,多半就只能重启应用来实现刷新内存缓存了


当然我这里说的也不是内存数据更新,最近遇到的一个问题就是redis缓存中的数据有问题,需要订正,而并不是简单的把数据删了就行,需要根据某些数据,做一些计算,然后得出新的数据,并写回到缓存


这样看来好像也不太麻烦,如果没有第三方依赖,大不了写个python脚本或者php脚本,重新算一下,也没什么毛病


然而实际情况却并不是这样,问题有以下几点:


  • 数据经过ProtoBuf进行编码存入redis,反序列化是个问题
  • 数据计算有依赖外部服务,如只能通过rpc调用第三方接口,而rpc框架没有提供php或python的sdk


基于此,就想也米有办法,可以直接搞一个项目,可以执行Groovy脚本,在Groovy脚本中实现数据订正逻辑?需求如下


  • 支持Groovy脚本的动态更新(支持动态新增,删除和修改脚本)
  • Groovy脚本可友好的访问我们需要的外部资源


II. 设计



根据上面的想法,一个简单的设计思路就新鲜出炉了,我们的框架核心只需要支持两点即可:


  • 实时加载脚本
  • 运行脚本


当然为了扩展,以及提供更优雅的使用环境,则需要支持:


  • 丰富的插件支持
  • json序列化插件
  • http插件
  • rpc插件
  • redis缓存插件
  • 自定义各种插件
  • 插件可动态加载就更棒了
  • 避免蛋疼的jar包冲突



相关文章
|
1月前
|
缓存 小程序 UED
如何利用小程序的生命周期函数实现数据的加载和更新?
如何利用小程序的生命周期函数实现数据的加载和更新?
59 4
|
5月前
|
Java 开发者 Spring
深入解析这两种扩展机制的工作原理和用法
深入解析这两种扩展机制的工作原理和用法
|
6月前
|
搜索推荐 编译器 开发者
应用程序的运行:原理、过程与代码实践
应用程序的运行:原理、过程与代码实践
193 1
|
监控 Java 调度
设置动态线程池参数原理与实践
设置动态线程池参数原理与实践
189 0
设置动态线程池参数原理与实践
|
敏捷开发 前端开发 Ruby
RailsAdmin如何实现自定义操作
RailsAdmin如何实现自定义操作
98 0
|
Java C++ 容器
基础三:控制执行流程
基础三:控制执行流程
81 0
|
缓存
读源码长知识 | 动态扩展类并绑定生命周期的新方式
在阅读viewModelScope源码时,发现了一种新的方式。 协程需隶属于某 CoroutineScope ,以实现structured-concurrency,而 CoroutineScope 应
172 0
|
Web App开发 前端开发 JavaScript
Javascript 的工作原理:引擎、运行时和调用堆栈概述
随着 Javascript 越来越流行,使其应用的场景越来越多,不仅限于前端,可以是后端、混合应用程序、嵌入式设备等等,于是就有了大前端的叫法。本文开始带大家一起回顾总结 Javascript 的构建块以及它们是如何协同工作,理解其原理,将有助于编写更优的代码。
203 0
Javascript 的工作原理:引擎、运行时和调用堆栈概述
|
缓存 JavaScript 开发者
动态组件与 v-once 指令
《Vue学习笔记》
121 0
|
Java 调度 开发工具
QuickTask动态脚本支持框架整体介绍篇
一个简单的动态脚本调度框架,支持运行时,实时增加,删除和修改动态脚本,可用于后端的进行接口验证、数据订正,执行定时任务或校验脚本
263 0
QuickTask动态脚本支持框架整体介绍篇