将数据库查询作为微服务API

时间:2019-04-17 03:37:24

标签: mongodb microservices

我们当前正在使用直接数据库连接来从脚本中查询mongodb并检索所需的数据。

作为微服务从DB检索数据是否明智/最佳实践。

1 个答案:

答案 0 :(得分:1)

它一直起作用,直到没有:)

服务需要从某个地方获取数据,数据库是一个好的开始。如果您的负载很高,可能会发现您需要在中间添加缓存,请参阅Instagram Engineering https://instagram-engineering.com/thundering-herds-promises-82191c8af57d

上的这篇文章

编辑(评论后) 一般而言,服务应拥有其数据库,其他服务不应仅通过其API直接访问另一个数据库服务。这样做的目的是保持服务自治,并使它们独立发展。

取决于微服务的大小,这现在总是可行的,因为它可以使拥有服务的开销更多地成为它提供的实用程序(我称之为nanoservices)。另外,如果您有很多服务,那么您就不想让每个人都互相交谈(甚至不通过DB),因为您会遇到很多麻烦。我认为应该有明确的逻辑边界(服务或微服务),然后在每个这样的逻辑服务中,您可能会发现有多个“部分”(我称为aspects)是有意义的,例如它们具有不同的扩展需求或不同的适用技术等。以这种方式进行设置时,各方面可以访问相同的数据库,而服务则不应(并且您仍然可以控制混乱:))

最后要考虑的事情-谁说API只是REST API,您可以在属于另一个服务的数据之上添加视图,只要您将其视为API(安全性,版本控制等)即可。您还可以访问其他服务