2

我目前正在试验 zeromq 并构建一个面向服务的分布式架构。每个服务都需要处理来自公共数据库的数据。

最好的方法是什么:

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

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

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

4

1 回答 1

3

既然你要“做对了”,构建一个面向服务的分布式系统,启动 zeromq,我想说你应该一路走下去,把服务放在数据库前面。

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

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

于 2011-03-27T15:46:24.910 回答