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包冲突



相关文章
|
2月前
|
缓存 小程序 UED
如何利用小程序的生命周期函数实现数据的加载和更新?
如何利用小程序的生命周期函数实现数据的加载和更新?
87 4
|
监控 Java 调度
设置动态线程池参数原理与实践
设置动态线程池参数原理与实践
198 0
设置动态线程池参数原理与实践
|
Java C++ 容器
基础三:控制执行流程
基础三:控制执行流程
86 0
|
前端开发
前端工作小结42-生命周期和执行函数
前端工作小结42-生命周期和执行函数
99 0
前端工作小结42-生命周期和执行函数
|
缓存
读源码长知识 | 动态扩展类并绑定生命周期的新方式
在阅读viewModelScope源码时,发现了一种新的方式。 协程需隶属于某 CoroutineScope ,以实现structured-concurrency,而 CoroutineScope 应
178 0
|
缓存 JavaScript 开发者
动态组件与 v-once 指令
《Vue学习笔记》
126 0
|
Java 调度 开发工具
QuickTask动态脚本支持框架整体介绍篇
一个简单的动态脚本调度框架,支持运行时,实时增加,删除和修改动态脚本,可用于后端的进行接口验证、数据订正,执行定时任务或校验脚本
266 0
QuickTask动态脚本支持框架整体介绍篇
|
存储 缓存 NoSQL
180729-Quick-Task 动态脚本支持框架之任务动态加载
前面几篇博文分别介绍了整个项目的基本架构,使用说明,以及整体框架的设计与实现初稿,接下来则进入更细节的实现篇,将整个工程中核心实现捞出来,从为什么这么设计到最终的实现给予说明
147 0
CheckListView扩展之框架修改
我之前写过一个自定义的选框列表https://www.jianshu.com/p/e4cebd5d79bc 当时我说功能就我能想到哪些就先把哪些可能需要的功能怼进去,然后在实战中,我发现它不能满足我所有的需求,所以这个框架要改。
993 0