Mar*_*eon 2 decoupling system-design
我们有两个系统,其中系统A向系统B发送数据.要求每个系统可以独立于另一个系统运行,如果另一个系统停机,它们都不会爆炸.问题是系统A在满足解耦要求的同时与系统B通信的最佳方式是什么.
系统B当前有一个进程,用于轮询db表中的数据并处理已插入的任何新行.
一个提出的设计是系统A只是将数据插入系统b的db表中,并让系统B通过现有过程处理新行.问题是这个解决方案是否满足解耦两个系统的要求?数据库是否被视为系统B的一部分,可能变得不可用并导致系统A爆炸?
另一种解决方案是系统A将数据放入MQ队列,并具有从MQ读取然后插入系统B数据库的进程.但这只是额外的开销吗?最终是MQ队列比db表更容错吗?
一般而言,数据库共享是一种紧密耦合,除非可能用于速度目的,否则不是优选的.不仅是出于可用性目的,还因为系统A和B将在未来的几个点进行更改和升级,并且彼此之间应该具有最小的依赖性 - 消息传递是明显的依赖性,而共享数据库往往会咬你(或者你的继承人)在后期最不期望的时候.如果您使用数据库共享路由,至少使用专用表或视图使共享接口显式化.
有四种常见的集成级别:
可以在各种情况下应用和组合,具有不同的可用性和可维护性.您可以在企业集成模式站点上获得出色的概述.
与任何集中式集成基础架构一样,MQ应托管在具有高可用性,完全故障转移和c的环境中.还有其他队列解决方案允许您分发队列协调.
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |