Couchdb 消息总线&x2B;事件存储&x2B;PubSub
我正在考虑构建一个具有许多数据源的应用程序,每个数据源都将事件放入我的系统中。事件具有定义良好的数据结构,可以使用JSON或XML进行编码 我希望能够保证事件被持久保存,并且事件被用作发布/订阅总线的一部分,每个事件可能有多个订阅者 对于数据库来说,可用性非常重要,即使它可以扩展到多个节点,分区容差也很重要,这样我就可以扩展可以存储事件的位置的数量。最终的一致性对我来说已经足够好了 我正在考虑使用JMS企业消息传递总线(例如)或AMQP企业消息传递总线(例如或) 但对于我的应用程序来说,如果我能用CouchDB或类似的东西建立一个发布-订阅系统,它就可以解决我的问题,而不必集成企业消息总线和持久存储系统 哪一个更好?+扩展+负载平衡+某种PubSub机制,还是一个带有最终一致、可用、分区容限存储的显式PubSub消息传递系统?哪一个更容易设置、管理和操作?哪种解决方案在给定成本下具有高吞吐量?为什么?Couchdb 消息总线&x2B;事件存储&x2B;PubSub,couchdb,jms,amqp,mule,Couchdb,Jms,Amqp,Mule,我正在考虑构建一个具有许多数据源的应用程序,每个数据源都将事件放入我的系统中。事件具有定义良好的数据结构,可以使用JSON或XML进行编码 我希望能够保证事件被持久保存,并且事件被用作发布/订阅总线的一部分,每个事件可能有多个订阅者 对于数据库来说,可用性非常重要,即使它可以扩展到多个节点,分区容差也很重要,这样我就可以扩展可以存储事件的位置的数量。最终的一致性对我来说已经足够好了 我正在考虑使用JMS企业消息传递总线(例如)或AMQP企业消息传递总线(例如或) 但对于我的应用程序来说,如果我能
另外,在选择我的技术之前,我还有什么问题要问吗?(顺便说一句,Java是服务器端和客户端语言) 我认为最好的解决方案是CouchDB+Jabber/XMPP服务器(ejabberd)+book:
- JSON是CouchDB的自然存储机制
- Jabber/XMPP服务器包括pubsub支持
- 这本书是必读的
\u将更改
查询
deleted=true
并永久保存,即使在压缩之后!实际上,这对于CouchDB来说是非常好的,因为deleted
操作将通过集群传播,即使网络中断一段时间不幸的是,除非您有重新使用CouchDB的巨大压力,否则我会使用专用的消息传递平台。我对ejabberd作为消息传递平台以及与Google App Engine的通信有很好的经验。)虽然可以使用数据库作为消息队列系统的替代方案,但没有数据库是消息队列系统,甚至CouchDB也是如此。像AMQP这样的消息队列系统提供的不仅仅是消息的持久性,事实上,在RabbitMQ中,持久性只是一个隐藏的不可见服务,它负责处理您必须在CouchDB上自己处理的所有挑战
好好看看RabbitMQ网站,那里有很多关于AMQP的信息以及如何利用它。他们收集了大量关于消息队列的文章和博客。+1对于Erlang消息总线。如果您已经有CouchDB,那么使用相同的语言部署另一台服务器会更容易。ejabberd的脱机消息支持也会有所帮助。如果我记得的话,ejabber可以在其mnesia数据库或MySQL或Postgres中保存脱机客户端的消息。感谢您对您的解决方案和观点的详细描述。你回答了一些问题,问了一些答案。