如何在微服务之间共享代码?

时间:2015-12-22 00:57:07

标签: architecture microservices

例如,我有一个项目有4个微服务:client-web,admin-web,client-api,admin-api。

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

是否违反微服务原则?

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

我认为您应该小心制作共享库并将其包含在您的微服务中,因为它可以为您提供耦合点,这意味着如果您必须对库进行更改,则可能必须更改所有服务,然后你就失去了这种体系结构的一个好处 - 在没有部署整个应用程序的情况下部署小型服务。

我认为更好的方法是让它自己成为微服务。

答案 2 :(得分:0)

微服务应拥有自己的数据库逻辑。因此,对于数据库的每个桃子,您都应该有一个与其通信的微服务。横切关注点应该在自己的服务中调用其他服务,或者在最能代表功能的服务中。

答案 3 :(得分:0)

您可以为数据库创建一个http接口,该接口可以使用REST API与其他微服务进行通信。然后,您可以检查用户权限以了解哪个客户端可以访问给定资源。