Docker容器和第三方集成?

时间:2019-02-18 12:17:43

标签: docker microservices

我是Docker和微服务的新手,并尝试使用Docker容器将当前的单片服务分解为较小的微服务。想法是在逻辑上将单片形式划分为较小的独立模块,作为微服务,并将每个模块放入单独的Docker容器中,并通过Kubernetes对其进行管理以进行扩展。

注意:这些服务要么通过REST连接到第三方,要么连接到任务关键的大量数据库。这些都没有任何本地数据库,所以我在有限的上下文中没有任何本地微服务数据库。

我正在尝试找出最佳的重构方法

  • 我正在考虑的一种方法是将数据库连接代码放入单独的容器中,并从其他容器中调用它。

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

问题:

  1. 我可以拥有未连接数据库的微服务吗?
  2. 我可以使用上面提到的容器化代码并且仍然合格吗? 用于微服务?
  3. 微服务几乎不能用于集成吗?
  4. 使用docker容器是否适合这种情况?

2 个答案:

答案 0 :(得分:0)

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

现在,评估以上所有内容,看看您是否可以全部完成并实现发展。是的,您可以拥有不带数据库的微服务,是的,只要它独立于操作,就可以与外部api通讯。就您而言,它比微服务更像是重构。例如集成微服务/容器不是一个好主意。您所有的服务都将依赖于它,这是单点故障。

如果您真的想在微服务中变成单片,那么请从一开始就正确地做。创建单独的可以单独操作的服务,即使必须在其他服务中重复相同的调用,所有依赖关系,集成和外部调用也应仅属于单个服务。数据库是非常重要的部分,因为您可能拥有中央数据库,如果数据库出现故障,则您的服务将不可用,并再次出现单点故障。一种方法是为每个服务创建本地数据库,并在业务操作允许的情况下与外部数据库同步。

只需评估所有方案并查看如何提供独立服务。希望能有所帮助。

答案 1 :(得分:0)

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

  

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

     

您可以具有容器化的代码并具有微服务资格,因为对所有micorservice进行容器化是一种好习惯。

  • 我认为您应该按逻辑划分服务,因此每个微服务的数据库都应该与之一起使用,而不是为数据库调用其他服务,因为这只会增加成本,而没有其他好处。
  • 直接或使用RabbitMQ相互连接微服务,我认为会更好。
  • 创建一个单独的额外服务,该服务将使用第三方REST服务,并在需要时公开REST服务。
  

同样,这些只是建议,并不是开发微服务的完美方法,因此请尝试最适合您的