我目前正在尝试使用zeromq并构建面向分布式服务的架构。每个服务都需要处理来自公共数据库的数据。
最好的方法是什么:
第二种选择对我来说似乎比较清晰,但我害怕对性能的影响,因为每次请求数据都会有一次网络通信。
将来可能会有数据库以外的数据源。这就是我考虑第二种选择的原因,但我害怕过度设计它。
答案 0 :(得分:3)
由于你正在“正确行事”的长度,建立一个分布式服务导向系统,使用zeromq启动,我会说你应该全力以赴,并在数据库前放置一个服务。 / p>
关于表现,请记住Knuth的建议,即过早优化是万恶之源。最好选择更干净的选项,然后根据需要进行优化,除非您事先知道您将遇到性能问题。 此外,抽象数据库应该允许您在将来需要时更容易扩展(例如通过分发,缓存等)。
话虽如此,如果您正在考虑的另一个选项是共享库,并假设它也是实现的更快的选项,那么您可以始终以这种方式启动并稍后更改它 - 只需将共享库更改为工作使用服务而不是直接使用数据库,所有服务都应该没问题。