2015-12-22 156 views
2

例如,我有一个有4个微服务的项目:client-web,admin-web,client-api,admin-api。如何在微服务之间共享代码?

这四个微服务应该共享一个DB代码,我应该如何将DB代码作为git的子模块并在每个微服务中使用它?

是否违反微服务原则?

+0

这可能取决于所使用的语言,哪种解决方案效果最好,仍然可能是基于意见的。但我不明白共享一段代码是否会违反微服务原则。毕竟,他们每个人都需要连接到数据库,那么为什么要复制代码? – GolezTrol

+0

通过创建一个库? – jgauffin

+0

名称上的4个微服务似乎更像客户端服务器架构而不是微服务。通常,每个微服务都有自己的实体/数据库访问代码。也许你拥有的DB​​代码本身就是微型服务? – longday

回答

3
  1. 创建一个库。
  2. 为具有语义版本控制的库进行版本控制,并使用环境的程序包管理功能(例如,如果您使用的是.NET,则为Nuget)创建程序包。
  3. 在微服务中包含该程序包作为依赖项。
2

我认为你应该小心制作一个共享库并将它包含在你的微服务中,因为它可以给你一个耦合点,这意味着如果你必须对库进行更改,则可能必须全部更改你的服务,然后你放弃了这种体系结构的好处之一 - 部署小型服务而不需要部署整个应用程序。

我认为一个更好的方法是使其成为一个微服务。

+0

“如果你必须改变图书馆,你可能不得不改变你的所有服务”,是的,抱歉,但不,这就是为什么它被称为“共享”库,而不是“静态”;) – nonchip

+1

我认为它是总是一个糟糕的主意,有一个“持久性”的微服务。这是一种微服务反模式,它导致了微服务整体。 –