我目前正在试验 zeromq 并构建一个面向服务的分布式架构。每个服务都需要处理来自公共数据库的数据。
最好的方法是什么:
- 在定义模型的所有服务中使用共享库。每个服务都连接到数据库
- 使用抽象数据库的数据服务。所有其他服务都通过该服务访问数据。可以使用协议缓冲区传输数据。
第二个选项对我来说似乎更干净,但我担心对性能的影响,因为每个数据请求都有一个网络通信。
将来,可能会有数据库以外的数据源。这就是为什么我想到了第二种选择,但我害怕过度设计它。
我目前正在试验 zeromq 并构建一个面向服务的分布式架构。每个服务都需要处理来自公共数据库的数据。
最好的方法是什么:
第二个选项对我来说似乎更干净,但我担心对性能的影响,因为每个数据请求都有一个网络通信。
将来,可能会有数据库以外的数据源。这就是为什么我想到了第二种选择,但我害怕过度设计它。
既然你要“做对了”,构建一个面向服务的分布式系统,启动 zeromq,我想说你应该一路走下去,把服务放在数据库前面。
关于性能,请记住 Knuth 的建议,即过早优化是万恶之源。最好使用更清洁的选项,然后根据需要进行优化,除非您事先知道您将遇到性能问题。此外,如果将来需要,抽象数据库应该允许您更轻松地扩展(例如,通过分发、缓存等)。
话虽这么说,如果您正在考虑的另一个选项是共享库,并且假设它也是实现更快的选项,那么您总是可以以这种方式开始并稍后更改它 - 只需更改共享库以使用服务而不是直接使用数据库,您的所有服务都应该没问题。