【问题标题】:Microservices on GCPGCP 上的微服务
【发布时间】:2021-08-16 06:40:52
【问题描述】:

我希望将 GCP 用于微服务应用程序。在比较了 AWS 和 GCP 之后,我决定选择 Google,因为该项目的一个主要要求是安排未来运行的任务(云任务),而 AWS 似乎没有提供类似的功能。

我计划将我的服务容器化并使用 Cloud Run 部署到 GCP,同时运行 Redis 集群以进行缓存。

我了解您不能在一个项目中运行多个 Firestore 实例。这是否意味着我的所有服务都将使用同一个数据库?

我希望遵循一个模型(可能在 AWS 上),其中每个服务都有自己的数据库实例,它可以访问。

这种模式在 GCP 上可行吗?

【问题讨论】:

  • AWS 有许多选项可能相当于 GCP“云任务”,具体取决于您的特定要求。比如看AWS SQS
  • 据我了解,Cloud Tasks 实际上只是一个托管的 cron 服务,它不断运行以查看是否需要触发任何任务。我可能只是在 AWS 上实现一个 Redis 实例,它充当一个任务队列,其中一个 cron 作业将每分钟滚动一次以查看是否有任何日期过期

标签: node.js google-cloud-platform google-cloud-firestore microservices


【解决方案1】:

Firestore 目前确实仅限于每个项目一个数据库实例。对于通常不是问题的性能,但对于像您的用例这样的隔离,这确实是寻找其他地方的理由。

Firebase 的原始实时数据库确实允许每个项目有多个实例,并且最近为 provisioning database instances 添加了一个 REST API。由于每个 Google Cloud 项目都可以切换为 Firebase 项目,因此您可以考虑这样做。

【讨论】:

    【解决方案2】:

    这是否意味着我的所有服务都将使用同一个数据库?

    我不知道你案件的所有细节。你认为你可以为每个项目部署一个“微服务”吗?不理想,特别是如果他们要使用 PubSub 进行通信,但可能是一种选择。在这种情况下,如果需要,每个“微服务”都可以拥有自己的 Firestore。

    我认为不应将 GCP 项目视为某种“硬边界”。对我来说,它们只是另一个粒度级别 - 除了文件夹等。

    “一个微服务 - 一个项目”方法也可能有一些好处。例如,依赖较少的生​​命周期,更好(更准确)的安全性,可能是更简单的开发工作流程......

    【讨论】:

    • 这也是我的想法。我认为对于未来的增长,我可能最终会选择 AWS 路线,以便更好地分离关注点,而无需创建多个项目。
    • 为每个微服务创建一个根集合,作为模式的一种代理,是一个好的设计吗?我也在考虑这条路,但担心我目前不知道的任何缺点。
    猜你喜欢
    • 2018-03-29
    • 2018-01-08
    • 2020-11-11
    • 1970-01-01
    • 2019-11-15
    • 2017-10-11
    • 1970-01-01
    • 2020-06-16
    • 2018-02-20
    相关资源
    最近更新 更多