昨天遇到一个问题,双活,两个实例同时跑了一个job,这个job还同时跑到了同一个task,导致重复执行,而底层确是有状态的,比如往两个vm上同时挂载同一个共享卷,这个卷是有状态的。
而且只能在两个状态下挂载,可用或者正在使用,挂载请求下发后卷的状态会变成正在挂载,这个时候是不允许挂载的,当然,我们这里已经做了判断,只有在能够挂载的情况下我们才下发挂载请求。
但是,如果两个service同时去查询,同时查询到状态是可用,那么便会同时去挂载——这种情况我们期望的是,虽然是同时,但是肯定有一前一后,哪怕再短的时间,突然写不下去了。。。。(没有一次挂载成功。。。)
然后,今天想搞清楚到底执行的流程是怎么样的,找到日志,去思考当时到底发生了什么,发现脑袋不够用了,竟然不能在两个空间灵活的转移,竟然还想到了人脑只有一个核,来回切换必然会占用更多的堆栈,而好像有那么一个说法,说人脑最多一次只能记住七件事。。。
我想问下,大神们是怎么推演分布式流程的呢?