gpt4 book ai didi

database - 微服务和数据库连接

转载 作者:太空狗 更新时间:2023-10-30 01:37:15 25 4
gpt4 key购买 nike

对于将整体式应用程序拆分为微服务的人们,您如何处理拆分数据库的难题。出于性能和简单性的原因,我开发过的典型应用程序会进行大量数据库集成。

如果你有两个逻辑上不同的表(如果你愿意的话,有界上下文)但你经常对大量数据进行聚合处理,那么在单体中你很可能会避开面向对象,而是使用您的数据库的标准 JOIN 功能,用于在将聚合 View 返回到您的应用程序层之前处理数据库中的数据。

您如何证明将此类数据拆分为微服务的合理性,在这些微服务中,您可能需要通过 API 而不是在数据库中“加入”数据。

我读过 Sam Newman 的微服务一书,在关于拆分单体应用的章节中,他举了一个“打破外键关系”的例子,他承认跨 API 进行连接会变慢——但他继续说道无论如何,如果您的应用程序足够快,它比以前慢有关系吗?

这似乎有点油嘴滑舌?人们的经验是什么?您使用了哪些技术来使 API 连接的性能令人满意?

最佳答案

  • 当性能或延迟不太重要时(是的,我们不总是需要它们)只使用简单的 RESTful API 就很好用于查询您需要的其他数据。如果你需要做多个调用不同的微服务并返回一个您可以使用的结果 API Gateway模式。

  • Polyglot persistence 中有冗余是完全没问题的环境。例如,您可以为微服务使用消息队列,并在每次更改内容时发送“更新”事件。其他微服务将监听所需的事件并在本地保存数据。因此,您无需查询,而是将所有必需的数据保存在特定微服务的适当存储中。

  • 此外,不要忘记缓存 :) 您可以使用像 Redis 这样的工具或 Memcached避免过于频繁地查询其他数据库。

关于database - 微服务和数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29761872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com