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

2020-06-05 05:56:10 +08:00
 kaiki
如果我能控制那还叫意外吗?
然后我跟他说我最近在写一个服务器受到地震火灾海啸等自然灾害时数据立即备份到云端的服务,你要不要我给你装一个?
他说这东西怎么可能写得出来。
7315 次点击
所在节点    程序员
56 条回复
wweir
2020-06-05 06:04:44 +08:00
应该找客户聊出真实需求,这个听着是个伪需求

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

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

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/678796

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX