我是Docker和微服务的新手,并尝试使用Docker容器将当前的单片服务分解为较小的微服务。想法是在逻辑上将单片形式划分为较小的独立模块,作为微服务,并将每个模块放入单独的Docker容器中,并通过Kubernetes对其进行管理以进行扩展。
注意:这些服务要么通过REST连接到第三方,要么连接到任务关键的大量数据库。这些都没有任何本地数据库,所以我在有限的上下文中没有任何本地微服务数据库。
我正在尝试找出最佳的重构方法
我正在考虑的一种方法是将数据库连接代码放入单独的容器中,并从其他容器中调用它。
类似地,将第三方REST集成逻辑放在单个容器中,并从其他容器中调用它。
问题:
答案 0 :(得分:0)
这完全取决于您要实现的目标。微服务是设计约束,没有一个正确的答案。这个想法是创建松散耦合的服务,这些服务可以独立更新,扩展和部署,而不影响任何其他服务。
现在,评估以上所有内容,看看您是否可以全部完成并实现发展。是的,您可以拥有不带数据库的微服务,是的,只要它独立于操作,就可以与外部api通讯。就您而言,它比微服务更像是重构。例如集成微服务/容器不是一个好主意。您所有的服务都将依赖于它,这是单点故障。
如果您真的想在微服务中变成单片,那么请从一开始就正确地做。创建单独的可以单独操作的服务,即使必须在其他服务中重复相同的调用,所有依赖关系,集成和外部调用也应仅属于单个服务。数据库是非常重要的部分,因为您可能拥有中央数据库,如果数据库出现故障,则您的服务将不可用,并再次出现单点故障。一种方法是为每个服务创建本地数据库,并在业务操作允许的情况下与外部数据库同步。
只需评估所有方案并查看如何提供独立服务。希望能有所帮助。
答案 1 :(得分:0)
在谈论架构时,没有任何一种最佳解决方案,它总是取决于您正在做什么或想要实现什么。 但是我也许可以回答几个问题。
微服务是一种将服务水平或垂直划分为小部分的概念,因此,微服务可以不附加数据库。
您可以具有容器化的代码并具有微服务资格,因为对所有micorservice进行容器化是一种好习惯。
同样,这些只是建议,并不是开发微服务的完美方法,因此请尝试最适合您的
。