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