在design robinhood的问题里面,我们用了saga pattern,我们把不同server的state的信息丢到了kafka里面,然后watchdog会读kafka里面的数据,我想问的是watchdog怎么保证同一个transaction在不同server 的state msg能及时被watchdog读到?如果有很多partial state被watchdog读到是不是需要存在watchdog的内存?这个时候如果watchdog crash了怎么办?
watchdog 有自己的数据库用来记录哪些event 已经被读到过,并且有 timer 来计算event发生了多久了,这样的话,一旦一个预期的event在指定时间内没有发生,watchdog可以进行干预。Watchdog 的服务 crash 之后,其他的 watchdog 可以替代这台的功能,因为都是 stateless 的,状态都存在数据库中。