我正在为一个爱好项目创建一个Microservice architecture
,我对某些决定感到困惑。你可以帮助我,因为我之前从未使用过微服务吗?
AngularJS
GUI需要显示一些下拉列表或值列表(例如:国家/地区列表)。这可以使用Microservice
REST调用获取,但值应该来自何处?我可以从Config Server
获取这些内容吗?还是应该来自Database
?如果是后者,那么每个微服务应该有自己的数据库用于查找值还是可以是常见的?CRUD
微服务?用于验证?DB
来维持这些调用之间的某种状态(特别是为了处理Web服务调用失败的情况)并最终将状态传递给GUI?答案 0 :(得分:1)
首先,没有单一的设计微服务 ,必须根据用例和项目要求进行选择。
我可以将它们保存在配置服务器中吗?或者它应该来自数据库?
同样,它取决于用例和要求。但是,因为每个MS都应该拥有自己的数据库,所以如果国家/地区只有名称,则可以使用数据库。但如果他们与城市/州有某种关系,那么你应该只使用数据库。
如果DB应该每个微服务都有自己的DB进行查找 价值还是常见的?
不,IMO多MS不应该依赖于单个DB。因为如果DB失败则所有MS都将失败,这不应该完成。每个MS应该独立工作,具体取决于其他DB或MS。
验证服务应该是所有人的共同微服务 UseCases /屏幕
与第2点相同
如何处理后端不是数据库调用的用例 但另一个网络服务电话?我还需要一些本地数据库吗? 在这些调用之间保持一些状态,最后传递给 GUI的状态?
如果您使用的是HTTP,则不应保存任何请求的状态。如果您想将请求重定向到另一个MS,那么您可以使用Feign client,这提供了一种非常好的方式来调用rest-api
和其他重要功能,例如:Load balancing
。
答案 1 :(得分:0)
微服务架构很简单。在这里,我们将每个任务划分为单独的服务(如Spring-boot应用程序)。 每个应用程序中的示例都会有登录功能,注册功能等等。这些将是微服务架构中的单独服务。
1.您可以将其存储在数据库中,因为在功能中如果要添加更多值,则很容易添加。 您可以维护单独的或单个数据库。单个数据库,每个微服务都有单独的集合或表。
3.我认为你必须使用本地数据库。
答案 2 :(得分:0)
Microservices是一个松散耦合的服务集合。例如,如果您要创建电子商务应用程序,用户管理可以是服务,订单管理可以是服务,退款&退款管理可以是另一项服务。现在每个服务可以进一步划分为更小的单元,让我们称之为API端点。例如 - 用户管理可以将登录作为端点,将注册作为另一个端点。
如果你想真正意义上利用微服务架构的力量,我建议这就是。对于上面的示例,为每个服务创建3个Springboot应用程序。在此之后您应该做的第一件事是在这些应用程序之间建立信任。我更喜欢JWTs建立信任。之后,一切都是小菜一碟。以下是您要寻找的答案:
理想情况下,您应该使用数据库,而不是保留配置服务器中的值,以获取国家/地区列表,这样您就无需在每次添加新国家/地区时重新编译代码。
< / LI>如果基于角色的访问权限是您所指的,则可以使用@PreAuthorize
轻松限制访问权限。
您可以在此用例中使用OkHttp或任何其他HttpClient。你当然不需要维护任何本地数据库。但是,如果需要,可以缓存webservice调用的输出。
P.S。:如果你不了解所有的美食,在微服务之间建立信任可能是一项复杂的任务。在这种情况下,我建议继续使用单个Springboot应用程序;这是一个单片架构。我仍然会推荐JWT。