首页 > 解决方案 > 我应该如何设计我的 Spring 微服务?

问题描述

我正在尝试Microservice architecture为一个爱好项目创建一个,但我对一些决定感到困惑。你能帮我吗,因为我以前从未使用过微服务?

  1. 我的要求之一是我的AngularJSGUI 需要显示一些下拉列表或值列表(例如:国家列表)。这可以使用MicroserviceREST 调用来获取,但是值应该从哪里来?我可以从我的 获取这些Config Server吗?还是应该来自Database?如果是后者,那么每个微服务是否应该有自己的用于查找值的数据库,还是可以是通用的?
  2. 在这种情况下,服务器端验证将如何工作?我的意思是,肯定会有一个微服务调用,GUI 会进行验证,但是验证服务应该是所有用例/屏幕的通用微服务,还是应该每个 GUI 页面一个,或者微服务也应该CRUD被重用于验证?
  3. 如何处理后端不是数据库而是 Web 服务调用的用例?我是否DB还需要一些本地来维护这些调用之间的某种状态(特别是要处理 Web 服务调用失败的情况)并最终将状态传递给 GUI?

标签: springspring-bootmicroservices

解决方案


首先,微服务的设计没有单一的方式 ,必须根据用例和项目需求来选择。

  1. 我可以将这些保存在配置服务器中吗?还是应该来自数据库?

同样,这取决于用例和要求。但是,因为每个 MS 都应该有自己的数据库,所以如果国家/地区只有名称,您可以使用数据库。但是如果他们与 City/State 有某种关系,那么您应该只使用 DB。

  1. 如果数据库应该每个微服务都有自己的用于查找值的数据库,还是可以是通用的?

不,IMO 多个 MS 不应依赖于单个 DB。因为如果 DB 发生故障,那么所有 MS 都将发生故障,这不应该这样做。每个 MS 应单独工作,具体取决于其他 DB 或 MS。

  1. 验证服务是否应该是所有用例/屏幕的通用微服务

与第 2 点相同

  1. 如何处理后端不是数据库调用而是另一个 Web 服务调用的用例?我是否仍需要一些本地数据库来在这些调用之间保持某种状态并最终将状态传递给 GUI?

如果您使用的是 HTTP,那么您不应该保存任何请求的状态。如果您想将请求重定向到另一个 MS,那么您可以使用 Feign 客户端,它提供了一种非常好的调用方式rest-api和其他重要功能,例如:Load balancing.


推荐阅读