我们当前正在使用直接数据库连接来从脚本中查询mongodb并检索所需的数据。
作为微服务从DB检索数据是否明智/最佳实践。
答案 0 :(得分:1)
它一直起作用,直到没有:)
服务需要从某个地方获取数据,数据库是一个好的开始。如果您的负载很高,可能会发现您需要在中间添加缓存,请参阅Instagram Engineering https://instagram-engineering.com/thundering-herds-promises-82191c8af57d
上的这篇文章编辑(评论后) 一般而言,服务应拥有其数据库,其他服务不应仅通过其API直接访问另一个数据库服务。这样做的目的是保持服务自治,并使它们独立发展。
取决于微服务的大小,这现在总是可行的,因为它可以使拥有服务的开销更多地成为它提供的实用程序(我称之为nanoservices)。另外,如果您有很多服务,那么您就不想让每个人都互相交谈(甚至不通过DB),因为您会遇到很多麻烦。我认为应该有明确的逻辑边界(服务或微服务),然后在每个这样的逻辑服务中,您可能会发现有多个“部分”(我称为aspects)是有意义的,例如它们具有不同的扩展需求或不同的适用技术等。以这种方式进行设置时,各方面可以访问相同的数据库,而服务则不应(并且您仍然可以控制混乱:))
最后要考虑的事情-谁说API只是REST API,您可以在属于另一个服务的数据之上添加视图,只要您将其视为API(安全性,版本控制等)即可。您还可以访问其他服务