首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通知数据库插入的应用程序

问通知数据库插入的应用程序
EN

Stack Overflow用户
提问于 2010-07-22 01:29:51
回答 1查看 2.2K关注 0票数 1

考虑一个有两个组件的应用程序,可能运行在不同的机器上:

  • Producer --将记录插入数据库,但很少或根本不读取数据库。多个实例可能同时运行。
  • 当组件A的实例将记录插入数据库时,必须通知Consumer。也有多个实例。

假设生产者将每秒在峰值时间将10-100条记录插入数据库,那么执行通知的最佳方法是什么?数据库技术目前是MySQL,但这不一定是一成不变的。我可以看到几种不同的方式:

  • 使用类似MySQL消息队列的东西向订阅者(消费者)“推送”插入通知。生产者将不知道这种情况正在发生。
  • 让生产者与执行插入的中间层交互,并将通知推送到用户订阅的消息队列。
  • 让消费者频繁地对数据库进行轮询,以检查新添加的内容(似乎是个坏主意)
  • 等。

就耦合而言:让两个相对独立的应用程序组件对共享数据库执行直接查询是个好主意,还是一个组件“拥有”数据库,而另一个组件通过调用所属组件间接地与DB交互?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-22 02:20:23

我喜欢第二个建议的解决方案(中间层),因为它将通知与数据库工作分开,并且可能是两阶段提交XA事务的一部分。如果使用者除了通知之外还需要数据库内容,这可以通过MySQL复制来完成。这也可以解决耦合问题,因为使用者组件可以对其复制的实例进行只读访问。

使用消息传递解决方案还将解决仅数据库解决方案中的任何潜在瓶颈,因为它将通知和存储分离为不同的进程。

根据语言的不同,您有许多用于消息分发的选择。如果您使用的是Java,我实际上会推荐JGroups而不是JMS,因为它更容易配置。

如果Java不是您所选择的语言,那么Apache的主动MQ支持多种语言进行接口。Apache的Qpid是一个AMQP实现,它还支持多种语言( C++、C++、Python等)。

其他消息传递选项可以包括XMPP、STOMP或RestMS实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3305139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档