向微服务发送请求

时间:2019-08-02 09:19:21

标签: jar microservices

我正在从整体应用程序中提取一部分服务,并创建一个微服务。因此,我有一个整体应用程序和一个微服务(MS)。

问题陈述- 我需要通过REST API与微服务进行通信。因此,我的巨著会将一些特定的API调用转移到微服务。 现在,在进行通信时,是否需要在我的整体中映射微服务的参数?

创建一个jar似乎是一个坏主意,因为它违反了可独立部署的微服务的基本原理。

假设将创建用户API发送给MS, -名称和 - 地址 作为参数

现在在MS端,参数名称为 -纳米 -prms

是1。我是否需要在整体图中映射MS参数? 问题2。还是我应该在之间创建一个新服务来解决这个问题 问题3。还是应该发送未映射的参数,然后让MS解析并从请求中滤除参数

2 个答案:

答案 0 :(得分:0)

让我们讨论每种方法

问题1。我需要在整体图中映射MS参数吗?

当破坏整体应用程序时,应该分部分进行。正如您提到的,您已取出一部分并转换为微服务。您的整体服务和微服务正在并行运行。您可以在单片应用程序中映射参数,只要您的微服务是独立的即可。某个时刻,您的整体应用程序将完成迁移,因此您的每个微服务将在没有整体应用程序的情况下自行接受参数。考虑到这一点,如果您的微服务可以做到这一点,那应该没问题。如果您仍在进行A / B测试,并希望将25%的请求发送到新服务,而其余的仍由您的整体应用程序处理,则此方法很好。如果有任何问题,您只需将所有流量恢复为单片。

问题2。或者我应该在两者之间创建新服务来解决这个问题

此服务将充当您的网关。如果以后要添加更多服务,则此服务比将参数从单片式服务传递到微服务会更加有用。我更喜欢这种方法,因为完成微服务后,无论如何您都将需要网关服务,并且在这种情况下,您已经完成了此服务,并且该服务了解所有微服务,并且从图片中删除整体组件不会破坏任何内容。

问题3。我应该发送未映射的参数,并让MS解析并从请求中滤除参数

我不了解这部分,但是以一种使您的微服务成为可能的输入参数足以完成操作而无需微服务额外做些事情

答案 1 :(得分:0)

设计独立于Monolith的MS。也就是说,您的MS的API签名应遵循良好的标准REST惯例,包括URL路径和参数名称的命名约定。

您的Monolith将允许使用MS的API签名来调用MS。如果Monolith将参数称为“名称”,而您的MS则将其称为“用户名”,那么就这样吧……您的Monolith将像其他外部API一样调用MS,并且必须使用适当的参数该API的名称和安全性。