关于日志事务的问题
今天公司在讨论关于如何从百万级别库中取出唯一一条记录的问题进行讨论,而且不允许两个用户取同一条记录。方案是有,但是对于错误处理方式有些问题,我提的观点是:将数据放入队列,从队列中获取,但是如果用户获取队列中的数据操作期间失败,这个时候需要将这个数据再放回队列尾部,供其他人使用,但是队列服务器有可能是在其他位置,这样如何此时队列服务器响应慢,返回给客户超时,那此条记录就在队列中丢失,无法跟踪到这条记录,我当时提到的方案是利用日志记录的方式。但是我同事马上提到了,如果日志操作失败呢?
对于这种情况,我也感觉很迷茫,如果按照同事的说法,那么每一步都有可能存在错误,而且在分布式系统中尤其明显,如果每一步都有可能出错,我们这个思想是不是进入了死循环,没有了事物概念可言,那么这样的操作就会出现问题。。。不知道是我的想法除了问题,还是我同事这样对每一步错误追根问底的方式的问题呢?请帮忙分析下。
后来我想到了利用库的方式去保存,但是按照同事的说法,库中存放如果失败,数据仍然丢失。。那么接着用日志,然后日志要失败呢?还是丢失。。。那到什么时候是个头儿呢?