异步系统设计:push vs pull

今天讨论问题时,有个同事说系统A是主动去系统B里“拿”消息,我们把它称为“pull”模式。他认为pull方式效率比较低,为什么不用“push”模式呢。就是说让系统B收到消息主动通知并把消息发给系统A。

我认为他说的是对的。

可是老板给我们讲了一个故事,让我觉得单纯从模式的角度来探讨系统性能有点“坐井观天”。

如果系统B通知系统A之后,系统A会消费这条消息,如果这个处理过程包含一系列的复杂操作,那么这个时候系统B在做什么呢?在等!系统B block等待系统A的返回境况。哈哈,我们发现系统B的效率很慢,但是不是有本身引起的。

我们就不能简单地说push就比pull好了。

事实上,以上的情况可以通过系统B-->JMS Queue-->系统A解决。也就是:

push into JMS Queue

pull from JMS Queue

让两个系统松散耦合。

可是引入JMS之后就一定能增加效率吗?我们拭目以待,具体情况具体分析。

猜你喜欢

转载自george-gu.iteye.com/blog/1026508