我们有两个系统,其中系统 A 向系统 B 发送数据。要求每个系统都可以独立于另一个系统运行,并且如果另一个系统宕机,任何一个系统都不会崩溃。问题是在满足解耦要求的同时,系统 A 与系统 B 进行通信的最佳方式是什么。
系统 B 当前有一个进程轮询 db 表中的数据并处理已插入的任何新行。
一种建议的设计是系统 A 只需将数据插入到系统 b 的 db 表中,并让系统 B 通过现有进程处理新行。问题是这个解决方案是否满足两个系统解耦的要求?数据库是否被认为是系统 B 的一部分,可能变得不可用并导致系统 A 崩溃?
另一种解决方案是系统 A 将数据放入 MQ 队列,并有一个进程从 MQ 中读取,然后插入到系统 B 的数据库中。但这只是额外的开销吗?最终,MQ 队列是否比 db 表更容错?