代码之家  ›  专栏  ›  技术社区  ›  Finn

Docker容器和第三方集成?

  •  0
  • Finn  · 技术社区  · 7 年前

    我是Docker&微服务,并尝试使用Docker容器将当前的单一服务分解为更小的微服务。其想法是,在逻辑上将整块石划分为更小的独立模块,作为微服务,并将每个模块放入单独的Docker容器中,然后通过Kubernetes对其进行管理,以便进行扩展。

    需要注意的是,这些服务要么通过REST连接到第三方,要么连接到任务关键型海量数据库。这些数据库没有任何本地数据库,所以我不能在有限的上下文中使用任何本地微服务数据库。

    我试图找出重构的最佳方法

    • 我想的一种方法是将DB连接代码放在单独的容器中,并从其他容器中调用它。

    • 类似地,将第三方REST集成逻辑放在一个容器中,并从其他容器调用它。

    问题:

    1. 我能拥有一个没有数据库的微服务吗?
    2. 我可以拥有上面提到的集装箱代码,并且仍然是合格的吗 微服务?
    3. 微服务能否仅仅用于集成?
    4. 使用docker容器是否符合这种情况?
    0 回复  |  直到 7 年前
        1
  •  0
  •   Imran Arshad    7 年前

    这完全取决于你想要实现什么。微服务是一种设计约束,没有单一的正确答案。其想法是创建松散耦合的服务,这些服务可以独立更新、扩展和部署,而不会影响任何其他服务。

    现在评估一下上面所有的事情,看看你是否能做到这一切,并实现devops。是的,你可以在没有数据库的情况下使用微服务,是的,它可以与外部api通信,只要它在操作上是独立的。在你的例子中,与其说是微服务,不如说是重构。e、 g.集成微服务/容器不是一个好主意。您的所有服务都将依赖于它,这是单点故障。

    如果你真的想在微服务中实现整体化,那么从一开始就要正确地做。创建可以单独操作的单个服务,所有依赖项、集成和外部调用都应该只属于单个服务,即使您必须在其他服务中复制相同的调用。数据库是非常重要的一部分,因为您可能有中央数据库,这意味着如果它停止运行,您的服务将不可用,并且再次出现单点故障。一种方法是使用每个服务创建本地数据库,并在业务运营允许的情况下与外部数据库同步。

    只需评估所有场景,看看如何提供独立服务。希望有帮助。

        2
  •  0
  •   Community Mohan Dere    6 年前

    当谈到架构时,没有一个最佳的解决方案,它总是取决于您正在做什么或想要实现什么。 但我也许能回答几个问题。

    微服务是一个将服务水平或垂直划分为小部分的概念,因此,是的,微服务可以不连接数据库。

    您可以拥有容器化的代码,并符合微服务的要求,因为将所有微服务容器化是一种良好的做法。

    • 我认为您应该在逻辑上拆分服务,因此每个微服务的数据库都应该与之配套,而不是为数据库调用其他服务,因为这只会增加成本,而不会带来其他好处。
    • 直接或使用RabbitMQ将微服务彼此连接起来,我认为这样会更好。
    • 创建一个使用第三方REST服务的额外服务&如果需要,还可以公开REST服务。

    同样,这些只是建议,没有完美的方法来开发微服务,所以请尝试最适合您的方法。

    推荐文章