实际上,我正在研究微服务体系结构,有些地方我不明白。
事实上,我知道当用户发送请求时,请求(在这种情况下是/users)由API网关处理。
这个API网关知道,当像/ user /*这样的url被调用时,它应该从服务注册中心(在本例中是ZooKeeper)中发现用户服务信息。
-> --这意味着API网关应该知道在每种不同的模式上,它必须得到相关的服务。每次都是这样吗?
然后,API网关知道如何将请求/users重定向到更正服务(通过服务注册中心),然后向好的端点发出好的请求(想象微服务没有像/users这样的端点,而是/utilisateurs )。网关必须知道
->是否意味着API网关对每个微服务API端点都有了解?或者它是否存在一种更好的(自动化的)方式来使它工作?
发布于 2015-10-12 13:24:43
网关不一定需要具体了解每个端点。我想您可能是想解决这样一个问题:知道端点之后,封装就中断了,并且存在一个隐式耦合。
就我个人而言,我喜欢通常由下游服务提供的抽象的组合。由于所有服务都为某人如何调用服务提供了一个契约,因此在这种情况下,它还应该为抽象层提供一个客户端。客户端内部将知道端点,但方法可能是抽象的,例如。列出用户的用户服务可能会调用userServiceClient.getUsers或类似的东西。服务注册中心的另一个概念也可以存在于这个客户机中,因为它应该知道它所代表的服务正在注册到什么。
现在,在API网关中,可以将其作为一个包导入,并在不知道端点的情况下使用,但知道存在一些可以列出用户的用户服务。抽象的另一个好处是,它可以使用协议,而不要求上游服务对其实现有任何了解。希望这能有所帮助!
https://stackoverflow.com/questions/33078422
复制相似问题