Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该如何设计我的Spring微服务?_Spring_Spring Boot_Microservices - Fatal编程技术网

我应该如何设计我的Spring微服务?

我应该如何设计我的Spring微服务?,spring,spring-boot,microservices,Spring,Spring Boot,Microservices,我正试图为一个爱好项目创建一个微服务架构,我对一些决定感到困惑。你能帮我一下吗,因为我以前从未使用过微服务 我的要求之一是我的AngularJS GUI需要显示一些下拉列表或值列表,例如:国家列表。这可以使用microservicerest调用获取,但是这些值应该来自哪里呢?我可以从我的配置服务器获取这些吗?还是应该来自数据库?如果是后者,那么每个微服务应该有自己的数据库来查找值,还是可以是一个公共数据库? 在这种情况下,服务器端验证将如何工作?我的意思是,GUI肯定会调用微服务进行验证,但验证

我正试图为一个爱好项目创建一个微服务架构,我对一些决定感到困惑。你能帮我一下吗,因为我以前从未使用过微服务

我的要求之一是我的AngularJS GUI需要显示一些下拉列表或值列表,例如:国家列表。这可以使用microservicerest调用获取,但是这些值应该来自哪里呢?我可以从我的配置服务器获取这些吗?还是应该来自数据库?如果是后者,那么每个微服务应该有自己的数据库来查找值,还是可以是一个公共数据库? 在这种情况下,服务器端验证将如何工作?我的意思是,GUI肯定会调用微服务进行验证,但验证服务是否应该是所有用例/屏幕的通用微服务,还是应该是每个GUI页面一个,或者CRUD微服务是否也应该重复用于验证? 如何处理后端不是数据库而是Web服务调用的用例?我是否仍然需要一些本地数据库来维护这些调用之间的一些状态,特别是处理Web服务调用失败并最终将状态传递给GUI的场景?
微服务架构很简单。在这里,我们将每个任务划分为单独的服务,如Spring boot应用程序。 例如,在每个应用程序中都会有登录功能、注册功能等。在微服务体系结构中,这些功能中的每一个都是独立的服务

1.您可以将其存储在数据库中,因为在feature中,如果您想添加更多值,则很容易添加。 您可以维护单独或单个数据库。单个数据库,每个微服务具有单独的集合或表

验证意味着您询问谁可以使用基于microserviceRole的访问??? 3.我认为您必须使用本地数据库。

首先,没有单向设计微服务,必须根据用例和项目需求进行选择

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

同样,它取决于用例和需求。但是,由于每个MS都应该有自己的DB,因此如果国家/地区只有名称,则可以使用DB。但是如果他们与城市/州有某种关系,那么您应该只使用DB

每个微服务是否应该有自己的数据库用于查找 价值还是普通价值

不,IMO多个MS不应该依赖于单个DB。因为如果DB失败,那么所有MS都将失败,这是不应该做的。根据其他DB或MS,每个MS应单独工作

验证服务应该是所有人的公共微服务吗 用例/屏幕

与第2点相同

如何处理后端不是数据库调用的用例 但是另一个Web服务调用呢?我还需要一些本地数据库吗 在这些调用之间保持一些状态,并最终传递 GUI的状态


如果使用HTTP,则不应保存任何请求的状态。如果您想将请求重定向到另一个MS,那么可以使用它来调用rest api和其他重要功能,如:负载平衡。

微服务是一个松散耦合的服务集合。例如,如果您正在创建电子商务应用程序,则用户管理可以是一项服务,订单管理可以是一项服务,退款和退单管理可以是另一项服务。现在,这些服务中的每一个都可以进一步划分为更小的单元,让我们称它们为API端点。例如,用户管理可以将登录作为端点,并将注册作为另一个端点

如果你想利用真正意义上的微服务架构的力量,下面是我的建议。对于上面的示例,为每个服务创建3个Springboot应用程序。在此之后,您应该做的第一件事是在这些应用程序之间建立信任。我更喜欢JWTs来建立信任。在那之后,一切都是小菜一碟。以下是您正在寻找的答案:

理想情况下,应该使用数据库(而不是将值保留在config server中)来获取国家列表,这样就不必在每次添加新国家时重新编译代码

如果您所指的是基于角色的访问,则可以使用@PreAuthorize轻松限制访问

在此用例中,您可以使用OkHttp或任何其他HttpClient。当然,您不需要维护任何本地数据库。但是,如果需要,您可以缓存webservice调用的输出


附言:如果你不了解所有的美味佳肴,那么在微服务之间建立信任可能是一项复杂的任务。在这种情况下,我建议继续使用单个Springboot应用程序;这是一个整体结构。不过我还是推荐JWTs。

谢谢。没有理解你关于配置服务器的观点。如果任何值发生更改,为什么我需要重新编译代码?我想这些都变了
应用程序可根据需要使用致动器拉动s?否?抱歉,之前没有想到执行器/刷新端点。是的,你完全正确。只要确保在必要时使用@RefreshScope即可。尽管如此,如果配置服务器本身能够将更改推送到客户机,那将是非常酷的。