Microservices 微服务应用程序的最佳实践

Microservices 微服务应用程序的最佳实践,microservices,Microservices,我有一个完整的应用程序,我正在考虑重写该应用程序,以朝着微服务体系结构发展,但是有一些事情我很难理解 微服务是否需要有自己的web api?我想只需要一个api网关,然后引用类库。然而,我注意到很多示例都有一个web api网关,然后还有针对不同服务的web api,我不明白为什么 我的数据库有很多引用约束,因为很多表相互引用,不能分离。最好的做法是有一个公共的DB层,并将这些依赖项注入到每个服务中吗?这是一个非常广泛的问题,超出了答案的范围。我将为您提供一些进一步挖掘的方向和链接 微服务是否需

我有一个完整的应用程序,我正在考虑重写该应用程序,以朝着微服务体系结构发展,但是有一些事情我很难理解

微服务是否需要有自己的web api?我想只需要一个api网关,然后引用类库。然而,我注意到很多示例都有一个web api网关,然后还有针对不同服务的web api,我不明白为什么


我的数据库有很多引用约束,因为很多表相互引用,不能分离。最好的做法是有一个公共的DB层,并将这些依赖项注入到每个服务中吗?

这是一个非常广泛的问题,超出了答案的范围。我将为您提供一些进一步挖掘的方向和链接

微服务是否需要有自己的web api?我在想 只有一个api网关,然后引用类库。 但是注意到很多示例都有一个WebAPI网关,然后 我不明白为什么有不同服务的web api

这就是所谓的。请查看所提供的链接,了解其优点和原因。这在微服务体系结构中非常常见

我的数据库和很多表一样有很多引用约束 相互参照,不能分开。最好是 实践是有一个公共的DB层,并将依赖项注入这些层中 每项服务

视情况而定。如果不能将数据管理层拆分为不同的垂直部分,那么可以为所有服务共享同一个数据库

微服务体系结构中的数据管理可以有多种形式:

  • 每个服务的数据库
  • 共享数据库
  • (编舞与配器)
  • CQRS
  • 活动来源
  • 应用程序事件
你可以查一下

更新


拥有API网关人们倾向于如何设计他们的应用程序? 他们是否有仅从api引用的类库 gateway,这不是在挫败“微服务”的想法吗


API网关是一个面向公众的独立微服务,处理来自客户端的所有请求/响应。它是一个薄层,负责客户端身份验证(根据客户端的凭据提供身份验证令牌、证书验证等,并终止TLS/SSL)和将调用(通过HTTP REST调用或某些RPC调用)委派给其他服务。它还通过在网关层快速失败来防止错误API调用的进一步污染。这里的其他服务不是类库或任何类型的静态依赖项。它们是独立的微服务。

微服务体系结构的主要优点是每个微服务都是松散耦合的。这种松散耦合是可能的,因为每个微服务都可以维护自己的接口(可以通过Web API或其他方式)和状态(可以通过持久数据库或其他方式)

我不确定我是否正确理解了您的示例,但听起来您计划使用一个API接口来引用来自不同“微服务”的多个类库。在这种情况下,API接口和类库之间的耦合将阻止您在API接口或类库中进行独立更改。因此,您经常会看到具有各自独立的Web API的实现


至于您的数据库设计,我推荐这种模式。跨不同服务共享数据库被认为是一种反模式,因为它会在数据层耦合您的服务。

有API网关人们倾向于如何设计他们的应用程序?他们是否有只从api网关引用的类库,这不是违背了“微服务”的理念吗?@KTOV检查更新。还要检查我提供的链接,它解释了关于API网关的所有内容以及交互是如何发生的。