我正在开发我的下一个应用,我对使用多语言持久性非常感兴趣。我喜欢能够为不同服务查询不同数据结构的想法。我本质上想要同步MongoDB,Neo4j / Titan,SQL以及Cassandra / Hbase。
目前,我将所有内容都包装在try / catch块中,如果一个失败则将它们全部回滚。然而,这对我的写作时间造成了不利影响。我也研究过像Kafka或ZeroMQ这样的AMQP系统,但这些系统似乎更加以数据为中心,而我的应用程序仍然很小,我希望保持高效。
有没有人有这方面的经验?对于小型应用程序来说MQ是个好主意还是我过早地优化了?
由于
答案 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)