考虑一个有两个组件的应用程序,可能运行在不同的机器上:
假设生产者将每秒在峰值时间将10-100条记录插入数据库,那么执行通知的最佳方法是什么?数据库技术目前是MySQL,但这不一定是一成不变的。我可以看到几种不同的方式:
就耦合而言:让两个相对独立的应用程序组件对共享数据库执行直接查询是个好主意,还是一个组件“拥有”数据库,而另一个组件通过调用所属组件间接地与DB交互?
发布于 2010-07-22 02:20:23
我喜欢第二个建议的解决方案(中间层),因为它将通知与数据库工作分开,并且可能是两阶段提交XA事务的一部分。如果使用者除了通知之外还需要数据库内容,这可以通过MySQL复制来完成。这也可以解决耦合问题,因为使用者组件可以对其复制的实例进行只读访问。
使用消息传递解决方案还将解决仅数据库解决方案中的任何潜在瓶颈,因为它将通知和存储分离为不同的进程。
根据语言的不同,您有许多用于消息分发的选择。如果您使用的是Java,我实际上会推荐JGroups而不是JMS,因为它更容易配置。
如果Java不是您所选择的语言,那么Apache的主动MQ支持多种语言进行接口。Apache的Qpid是一个AMQP实现,它还支持多种语言( C++、C++、Python等)。
其他消息传递选项可以包括XMPP、STOMP或RestMS实现。
https://stackoverflow.com/questions/3305139
复制相似问题