architecture - ZeroMQ 服务和数据访问

标签 architecture zeromq soa

我目前正在尝试 Zeromq 并构建一个面向分布式服务的架构。每个服务都需要操作公共(public)数据库中的数据。

最好的方法是什么:

  • 在定义模型的所有服务中使用共享库。每个服务都连接到数据库
  • 使用抽象数据库的数据服务。所有其他服务都通过此服务访问数据。可以使用 Protocol Buffer 传输数据。

第二个选项对我来说似乎更干净,但我担心会对性能产生影响,因为每个数据请求都需要多一次网络通信。

将来可能会有数据库以外的数据源。这就是为什么我想到了第二种选择,但我担心它会过度设计。

最佳答案

既然你要“做对”,构建一个分布式的面向服务的系统,用 Zeromq 启动,我想说你应该走完全程,把一个服务放在数据库前面。

关于性能,请记住 Knuth 的建议:过早的优化是万恶之源。最好选择更清洁的选项,然后根据需要进行优化,除非您事先知道将会遇到性能问题。 此外,如果将来有需要,抽象数据库应该可以让您更轻松地进行扩展(例如通过分发、缓存等)。

话虽这么说,如果您正在考虑的另一个选项是共享库,并且假设它也是实现速度更快的选项,那么您始终可以以这种方式开始并稍后更改它 - 只需更改共享库即可工作使用服务而不是直接使用数据库,并且您的所有服务都应该没问题。

关于architecture - ZeroMQ 服务和数据访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5442161/

相关文章:

android - Android 上的详细日志记录

java - java 中的多线程和异常处理的责任链

sockets - ZeroMQ职位分配

java - 拒绝连接到 Swordfish 服务注册表

architecture - 微服务治理与 SOA

Java 架构 - 自管理类与管理类

OOP 哲学(摘自《Scala 编程》中的组合和继承)

php-zmq 段错误

php - 使用带有 voryx Thruway WAMP 消息传递系统的 php 发送消息

open-source - 开源 SOA 堆栈