V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
esolve
V2EX  ›  问与答

面试官问单机上一个线程池正在处理服务如果忽然断电该怎么办?

  •  
  •   esolve · 2018-02-12 17:14:23 +08:00 · 5107 次点击
    这是一个创建于 2471 天前的主题,其中的信息可能已经有所发展或是发生改变。

    单机上一个线程池正在处理服务如果忽然断电该怎么办?(正在处理和阻塞队列里的请求怎么处理)?

    这问题怎么回答?

    5 条回复    2018-02-13 13:27:28 +08:00
    whatsmyip
        1
    whatsmyip  
       2018-02-12 20:42:12 +08:00
    感觉跟数据库差不多吧

    就是没处理到的消息丢失了无所谓,已经处理的消息必须持久化(日志)
    forestyuan
        2
    forestyuan  
       2018-02-12 20:57:09 +08:00
    一般的应用就不用考虑停电了吧,关键性的应用就给电脑配个 UPS
    gamexg
        3
    gamexg  
       2018-02-12 22:16:56 +08:00
    正在处理的实现事务功能,下次自动回滚。
    队列实现持久化储存,下次启动自动载入。
    但是实际需要看情况,大体思路是这样。
    agostop
        4
    agostop  
       2018-02-13 11:34:54 +08:00   ❤️ 1
    添加标志位,未处理 0,处理中 1,已处理 2
    每次启动的时候,把所有状态为 1 的,置为 0
    esolve
        5
    esolve  
    OP
       2018-02-13 13:27:28 +08:00
    @gamexg 事务功能在断电时是什么反应?能自动保存当前状况然后等重启时自动回滚?
    持久化用啥? redis ?日志?数据库?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3445 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:45 · PVG 19:45 · LAX 03:45 · JFK 06:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.