设计任务系统缓存

2021-01-03  本文已影响0人  Lupino

Periodic Task System 是我设计的一个可以用来做定时任务或实时任务的任务系统。

任务系统的服务端可以将数据储存在 sqlite 或在 postgres 数据库。

存到数据库需要对数据进行编码,取出数据需要进行解码,其实这个过程挺耗 CPU 的。

对于一些马上要执行的任务,是不需要存进数据库,我们直接缓存起来就好。

data Memory = Memory {...}

我利用 hashmap 设计一个内存的数据库,用来存储任务数据,这些任务数据不需要进行解码或者编码。

我将这个内存数据库作为缓存数据库,存储一定数量并马上要执行的任务数据到内存数据库中,这里设置的是 1 分钟内执行的任务。

data Cache db = Cache
  { memory  :: Memory
  , backend :: db
  , maxSize :: Int64
  }

这样子我们就把热任务和冷任务分开来,保证任务系统的高效运行。

具体代码参见:
Cache.hs

上一篇 下一篇

猜你喜欢

热点阅读