天天看点

服务重启丢数据解决方案

背景:一定时线程往一队列写数据,若直接停止重启服务会造成队列数据丢失。

问题:如何解决重启数据丢失。

方案1:

      停止服务时几个步骤:

      1)停止往队列写数据,

      2)对应处理队列的线程shutdown,不再接受新的任务。

      3)将现有队列内容存到文件中。

     4)kill进程(如何判断队列内容已落地,可以通过记日志来处理)。

     开启服务时步骤:

      1) 判断落地文件是否为空,不为空则先将其入队列。

方案2:

      将文件改为共享存储,比如redis,mc等。

      这样,当服务为分布式时,当一台机器停止时,队列内容可以通过其他机器读取。

继续阅读