V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kaiki
V2EX  ›  程序员

客户给我提了一个奇葩需求,让程序被意外关闭的时候及时回滚数据。

  •  
  •   kaiki · 2020-06-05 05:56:10 +08:00 · 7292 次点击
    这是一个创建于 1411 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果我能控制那还叫意外吗?
    然后我跟他说我最近在写一个服务器受到地震火灾海啸等自然灾害时数据立即备份到云端的服务,你要不要我给你装一个?
    他说这东西怎么可能写得出来。
    56 条回复    2020-06-05 13:52:27 +08:00
    wweir
        1
    wweir  
       2020-06-05 06:04:44 +08:00 via Android   ❤️ 10
    应该找客户聊出真实需求,这个听着是个伪需求

    不懂技术的人,更多应该提感受、期待,而不是提出技术解决方案
    johnchshen
        2
    johnchshen  
       2020-06-05 06:10:38 +08:00 via Android
    肯定是系统老出错影响到用户工作了。

    另外是不是出错会导致用户手头未提交工作丢失?

    可以参考 word,未保存内容缓存在硬盘,重启后重新恢复。
    kaiki
        3
    kaiki  
    OP
       2020-06-05 06:23:10 +08:00
    @johnchshen 他直接就说了停电问题,这种问题并不能靠软件解决,只能说的确是个无法实现的需求。
    wd
        4
    wd  
       2020-06-05 06:26:53 +08:00 via iPhone   ❤️ 3
    这当然可以实现了,你去看看数据库都怎么处理的。
    johnchshen
        5
    johnchshen  
       2020-06-05 06:42:11 +08:00 via Android
    @kaiki 如果说是停电,火灾,地震等意外,客户要的可能是高可用性。
    johnchshen
        6
    johnchshen  
       2020-06-05 06:43:45 +08:00 via Android
    高可用性很多解决方案和参考架构的,而且直接给客户预算倍数增长,何乐而不为呢?
    green15
        7
    green15  
       2020-06-05 06:44:46 +08:00 via iPhone   ❤️ 1
    客户这就是要自动保存功能……怎么没法实现,你把每次自动保存的间隔时间缩短,停电又能怎么了。再说了,如果保存时间很长,再建议客户加个 UPS 备用电源配合自动保存。
    如果再保守点,直接上现成的异地容灾备份系统……楼主以为各大厂商对于数据的预防是怎么,假定 A 地发生火灾地震海啸或什么,即时从 B 地同步切换。钱给够,怕地球爆炸,上传到太空备份都行。
    also24
        8
    also24  
       2020-06-05 06:46:13 +08:00 via Android
    这不就是事务么?
    3rdFaust
        9
    3rdFaust  
       2020-06-05 06:48:55 +08:00   ❤️ 4
    你卖他一套异地容灾
    winnerczwx
        10
    winnerczwx  
       2020-06-05 06:50:41 +08:00 via iPhone   ❤️ 1
    每次提交的时候把请求持久化到磁盘,请求成功后标记这个请求已成功,或者直接删除。程序启动时检测一下有没有已被持久化却没被标记为成功的请求,如果有,执行回滚。
    msg7086
        11
    msg7086  
       2020-06-05 07:04:39 +08:00
    这功能多少年之前就实现了。文件系统实现过,数据库实现过,说简单点你直接 MySQL InnoDB 上开个事务就行了,断电的时候下次启动自动滚回去。
    kaiki
        12
    kaiki  
    OP
       2020-06-05 07:08:13 +08:00
    @green15 我只是在说客户在提不合实际的需求,以及让我的程序做完全不属于这个程序该做的内容而已。
    delectate
        13
    delectate  
       2020-06-05 07:18:51 +08:00
    并非不能做,就是加工期,加预算呗。

    持久化、定期保存+异地容灾备份+守护进程,反正能想到的都做进去。
    bilibilifi
        14
    bilibilifi  
       2020-06-05 07:19:19 +08:00 via iPhone
    @kaiki 这个是在分布式环境里要求系统 crash-recovery 级别异常下正常工作吧。感觉要求太高了
    mscb
        15
    mscb  
       2020-06-05 07:26:47 +08:00 via Android   ❤️ 1
    告诉他这个功能很难,不属于合同中的开发范畴,要加钱咯
    opengps
        16
    opengps  
       2020-06-05 07:54:27 +08:00 via Android
    异地多活系统
    elfive
        17
    elfive  
       2020-06-05 07:58:22 +08:00 via iPhone   ❤️ 1
    单纯针对停电的话……加个 UPS 不就搞定了?不行就加两个呗?
    littleangel
        18
    littleangel  
       2020-06-05 08:06:20 +08:00 via iPhone
    可以做 加钱。
    IvanLi127
        19
    IvanLi127  
       2020-06-05 08:14:09 +08:00 via Android
    意外关闭而已,又不是设备爆炸什么的,定时自动保存,下次开启的时候再根据之前保存的数据恢复就是了。
    jzphx
        20
    jzphx  
       2020-06-05 08:28:22 +08:00
    @elfive 真相了,且成本最低
    butterf1y
        21
    butterf1y  
       2020-06-05 08:40:06 +08:00
    @wweir 公司产品最喜欢提技术解决方案 关键是方案基本没有任何价值

    厨子不看菜谱 看上兵法了
    xnode
        22
    xnode  
       2020-06-05 08:41:51 +08:00
    加钱
    silvernoo
        23
    silvernoo  
       2020-06-05 08:50:44 +08:00
    利用快照吧
    reus
        24
    reus  
       2020-06-05 08:57:13 +08:00 via Android   ❤️ 2
    你水平不行,连 sqlite 都支持断电回滚事务,你居然觉得奇葩?
    如果你的程序断电后再开启,不能保持数据完整一致,那你的程序就是劣质的。
    xingyuc
        25
    xingyuc  
       2020-06-05 08:58:25 +08:00
    @3rdFaust 中间商 hhh
    Chenamy2017
        26
    Chenamy2017  
       2020-06-05 09:18:36 +08:00
    数据库事务了解下。
    chouxiaozi1989
        27
    chouxiaozi1989  
       2020-06-05 09:21:42 +08:00
    舍得给钱啥都能做,真的
    toan
        28
    toan  
       2020-06-05 09:23:49 +08:00
    提供一些容灾方案给客户。
    daozhihun
        29
    daozhihun  
       2020-06-05 09:27:34 +08:00
    主流数据库都支持断电重启后事务自动回滚啊,没什么你需要操作的
    jasamboro
        30
    jasamboro  
       2020-06-05 09:33:29 +08:00
    这需求没毛病吧,没要求不能丢正在处理的数据啊,只是让回滚而已
    cs419
        31
    cs419  
       2020-06-05 09:44:18 +08:00
    还记得那个根据用户手机壳颜色切换软件主题颜色的需求吗
    你直接说不能做 容易干起来 不利于工作

    你说实现这个需要 需要单独订制手机壳 人家自然会知难而退
    如果说对方死咬 就是随便的手机配上随便的手机壳都要实现这个功能
    真有这种不讲理的 别和他谈啊 找自己的领导或者对方的领导谈这个问题
    Tink
        32
    Tink  
       2020-06-05 09:47:20 +08:00
    我觉得没问题啊,这个需求处理不了?
    kaiki
        33
    kaiki  
    OP
       2020-06-05 09:47:26 +08:00
    @cs419 没这么复杂,我就跟客户输了一句傻逼,他回了我个哈哈,您先忙。
    heyhumor
        34
    heyhumor  
       2020-06-05 09:52:07 +08:00
    @kaiki 看来客户给的钱不够
    ma836323493
        35
    ma836323493  
       2020-06-05 09:53:38 +08:00
    @kaiki 如果这个问题解决不了,我就解决掉提出这个问题的人 哈哈
    crist
        36
    crist  
       2020-06-05 10:15:53 +08:00
    LZ 词不达意,标题是回滚数据,内容描述却是备份数据、
    rizon
        37
    rizon  
       2020-06-05 11:04:20 +08:00
    要发掘甲方真实需求,并引导甲方去思考你的方案,让他误以为是他自己想出来。 这样就是 win-win 了
    kaiki
        38
    kaiki  
    OP
       2020-06-05 11:05:15 +08:00
    @crist 内容提到的是我给他开的另一个玩笑,用来表示这种拿大炮打蚊子的操作不可取。
    kimqcn
        39
    kimqcn  
       2020-06-05 11:07:25 +08:00
    楼主应该是专门做客户端的,需求应该提给服务端或者运维,楼主把需求转给销售,让销售去找对的人。
    kaiki
        40
    kaiki  
    OP
       2020-06-05 11:10:26 +08:00
    @kimqcn 差不多,客户的需求根本不是在我这块实现的
    ganbuliao
        41
    ganbuliao  
       2020-06-05 11:10:26 +08:00
    就是实时的预存储数据呗 这个很多软件都有吧 看是存本地还是云上了
    FourAndHalf
        42
    FourAndHalf  
       2020-06-05 11:14:49 +08:00
    每 1 秒保存一次,啥,你说慢,来来你行你上
    fansfans
        43
    fansfans  
       2020-06-05 11:18:03 +08:00
    回滚数据是指 从应用开启到关闭产生的所有数据吗 包括上传到服务器的请求也需要撤回我觉得有点奇葩, 当然如果只是持久化 实时保存那没什么问题
    kaiki
        44
    kaiki  
    OP
       2020-06-05 11:19:39 +08:00
    @fansfans 你就是那个客户吗,怎么对这个需求的逻辑这么清楚。
    Wao
        45
    Wao  
       2020-06-05 11:53:34 +08:00
    @kaiki #33 这么直接的嘛 O_O
    tanrunhao
        46
    tanrunhao  
       2020-06-05 12:13:46 +08:00
    看到评论, 发现主要分两派。 一是真的按技术要求实现回滚备份, 一是理解实际要求把客户需求描述改成自动保存。

    明显第二种是更加实际的方式
    jones2000
        47
    jones2000  
       2020-06-05 12:22:41 +08:00
    很好奇,地震火灾海啸等自然灾害时, 电力和网络应该都是被破坏了吧, 怎么能备份到云端呢?
    tuochenlyu
        48
    tuochenlyu  
       2020-06-05 12:24:41 +08:00 via iPhone
    异地容灾,说得轻松,市值 200 亿的工厂也不一定搞得起这个
    jones2000
        49
    jones2000  
       2020-06-05 12:26:38 +08:00
    我感觉还是让你客户对他的重要数据买一个保险, 比较靠谱点。起码保险公司能赔钱给客户。
    skylancer
        50
    skylancer  
       2020-06-05 12:40:38 +08:00   ❤️ 1
    就单纯这个需求而言,客户不奇葩,我只觉得卤煮懒、菜和奇葩
    woofee
        51
    woofee  
       2020-06-05 12:57:55 +08:00
    有时候用户描述的可能不是很专业,但是你可以打开自己的思维,用其他的方法去给他想要的东西,而不是顺着他的思路去想
    xiaoyong
        52
    xiaoyong  
       2020-06-05 13:15:36 +08:00
    明显不是真实需求,只是遇到了问题之后自己以为的自己的需求。这个需要了解客户遇到的问题是什么?
    rooob1
        53
    rooob1  
       2020-06-05 13:48:56 +08:00
    技术差怪产品经理,哈哈
    rooob1
        54
    rooob1  
       2020-06-05 13:49:37 +08:00
    @rooob1 用户每步操作,不管是存服务器还是存本地,都应该做保存。下次启动软件恢复数据
    rioshikelong121
        55
    rioshikelong121  
       2020-06-05 13:50:23 +08:00
    哪里奇葩了。 人菜不要怪需求
    crab
        56
    crab  
       2020-06-05 13:52:27 +08:00
    @tuochenlyu 大部分都是扯淡忽悠的,光纤被挖断中断服务的例子不少了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5508 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:10 · PVG 17:10 · LAX 02:10 · JFK 05:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.