动态任务执行框架想法篇

栏目: Groovy · 发布时间: 7年前

内容简介:对于后端而言,数据订正可算是非常非常频繁且常见的事情了,常见的有DB、缓存、内存等数据源中的数据订正,对于非应用内存而言,其他有实体或者可以直接通过官方的提供的控制台连接进行修改的数据订正,相对比较简单,而对于应用内存,如果没有应用内通知并处理相关逻辑,多半就只能重启应用来实现刷新内存缓存了当然我这里说的也不是内存数据更新,最近遇到的一个问题就是redis缓存中的数据有问题,需要订正,而并不是简单的把数据删了就行,需要根据某些数据,做一些计算,然后得出新的数据,并写回到缓存这样看来好像也不太麻烦,如果没有

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

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

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

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

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

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

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

II. 设计

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

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

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

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

1. 项目结构

项目结构图大致如下

动态任务执行框架想法篇

2. 流程说明

a. Task Watcher

主要用来监听所有的Task变动,包括新增,删除or修改脚本,然后将最新的脚本捞出来,扔给框架

b. execute

主体的执行逻辑,主要是解析task(即groovy脚本),并根据task的变更事件,来决定是新增,删除还是更新任务,然后从任务池中停掉旧的任务,执行新的任务

c. plugin

这里提供丰富的第三方插件,供task调用

2. 实现

对于实现,未完待续,下一篇再说

II. 其他

1.一灰灰Blog: https://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Vim实用技巧

Vim实用技巧

[英] Drew Neil / 杨源、车文隆 / 人民邮电出版社 / 2014-5-1 / 59.00元

vim是一款功能丰富而强大的文本编辑器,其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中得到非常广泛的使用。vim能够大大提高程序员的工作效率。对于vim高手来说,vim能以与思考同步的速度编辑文本。同时,学习和熟练使用vim又有一定的难度。 《vim实用技巧》为那些想要提升自己的程序员编写,阅读本书是熟练地掌握高超的vim技巧的必由之路。全书共21章,包括121个技巧。每一章......一起来看看 《Vim实用技巧》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换