文章链接:
- 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包冲突