启动应用程序的多语言持久性

时间:2014-09-13 15:29:49

标签: scala playframework-2.0 zeromq apache-kafka polyglot-persistance

我正在开发我的下一个应用,我对使用多语言持久性非常感兴趣。我喜欢能够为不同服务查询不同数据结构的想法。我本质上想要同步MongoDB,Neo4j / Titan,SQL以及Cassandra / Hbase。

目前,我将所有内容都包装在try / catch块中,如果一个失败则将它们全部回滚。然而,这对我的写作时间造成了不利影响。我也研究过像Kafka或ZeroMQ这样的AMQP系统,但这些系统似乎更加以数据为中心,而我的应用程序仍然很小,我希望保持高效。

有没有人有这方面的经验?对于小型应用程序来说MQ是个好主意还是我过早地优化了?

由于

3 个答案:

答案 0 :(得分:1)

我对ZeroMQ有很多了解,但对你提到的数据库服务器的了解并不多。

首先,你对ZeroMQ有点困惑。虽然它源于AMQP的经验,但它使用ZMTP有线协议。这是在ZeroMQ开发期间定制设计的[但其他应用程序现在使用它]。

ZeroMQ是一个小而快速的MQ库,对所有节点都是对称的;这对小型应用程序非常有用。这里的问题是你需要在其他系统上讨论ZMTP,无论是ZeroMQ还是桥接器。如果你打算为其他系统制作插件或其他系统,那就好了。

我认为,您正在使用JMS与其他系统进行通信,而不打算为它们开发附加组件。在这种情况下,您可能会遇到JMS。 Kafka是一个新的,我还没有赶上,但RabbitMQ是一个优秀,快速,小型的经纪人。 FWIW。有很多经纪人比较可供你找到。许多人都是狡猾的,因为设置的一个小调整会极大地影响性能,并不一定要比较苹果和苹果。如果想要比较您环境中的代理性能,那么自己做这件事并没有多少捷径。

令我困惑的一件事是您希望经纪人如何帮助您回滚。您仍然需要以基本相同的方式进行回滚,尽管通过代理不同步。

答案 1 :(得分:1)

我在CloudBoost.io(https://www.cloudboost.io)工作,我们构建了一个位于数据库之上的层,并为您提供了Polyglot Persistence持久性的强大功能。我们集成了MongoDB,ElasticSearch,Redis,Cassandra和Neo4j,并为您提供了一个可以查询/存储数据的API。我们会根据您的查询/存储请求模式自动将您的数据分成不同的数据库。

如果这有帮助,请告诉我。 :)

答案 2 :(得分:0)

For syncing data from MongoDB to Neo4j there is now the Neo4j Doc Manager project. It works by monitoring MongoDB for operations and converts the document operation into a property graph model and immediately writes to Neo4j.
相关问题