Architecture zeromq服务和数据访问

Architecture zeromq服务和数据访问,architecture,zeromq,soa,Architecture,Zeromq,Soa,我目前正在试验zeromq并构建一个分布式面向服务的体系结构。每个服务都需要操作来自公共数据库的数据 最好的方式是什么: 在定义模型的所有服务中使用共享库。每个服务都连接到数据库 使用抽象数据库的数据服务。所有其他服务都通过此服务访问数据。数据可以使用协议缓冲区传输 第二个选项对我来说似乎更干净,但我担心对性能的影响,因为每个数据请求都有一个网络通信 将来,可能会有数据库以外的数据源。这就是为什么我想到了第二种选择,但我担心过度设计。既然你要“正确地做”,构建一个分布式面向服务的系统,用ze

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

最好的方式是什么:

  • 在定义模型的所有服务中使用共享库。每个服务都连接到数据库
  • 使用抽象数据库的数据服务。所有其他服务都通过此服务访问数据。数据可以使用协议缓冲区传输
第二个选项对我来说似乎更干净,但我担心对性能的影响,因为每个数据请求都有一个网络通信


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

既然你要“正确地做”,构建一个分布式面向服务的系统,用zeromq引导,我想你应该一路走,把一个服务放在数据库前面

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


也就是说,如果您正在考虑的另一个选项是共享库,并且假设它也是实现起来更快的选项,那么您可以始终以这种方式开始,稍后再进行更改-只需将共享库更改为与服务一起使用,而不是直接与数据库一起使用,您的所有服务都应该可以使用。

谢谢您的建议。正如您所说的,第二个选项将允许更轻松地进行扩展,我有效地设想添加一些缓存。由于我还有一段时间,我想我会尝试两种方法,并进行一些负载测试,看看会发生什么。Elad,你能详细介绍一下数据库前面的服务是什么样子的吗?我特别想知道,如果您使用ORM,它将如何工作。谢谢