2015-10-16 86 views
7

对于我的新项目,我必须使用微服务与Api网关。所以我收集了有关Micro Service的详细信息,但Api Gateway部分尚不清楚。微服务与API网关

我的问题是,

  1. 有没有人知道如何路由部分请求在阿比 网关做了什么?
  2. 是可以通过简单的做,如果条件[伪代码: 如果(关键字==“产品”),那么路径(“产品服务”)?
  3. 或者是否有更好的方法来做到这一点?

我正在使用C#.Net开发Api。
我得到了API网关的一些信息从https://www.nginx.com/blog/building-microservices-using-an-api-gateway/

Api Gateway

+1

API网关就像一个安全的代理+日志记录。您可以将url传递给您想要访问的“产品”服务,网关将代理它。 – sed

回答

9

你几乎问了三个问题,而且都有点关系,所以我会尽我所能来解决所有三个在一起。

首先,API网关中的请求路由不仅仅是一个代理,实现不会涉及在将它发送到下游服务之前检查请求的条件。 API网关可能是您的服务的唯一入口点,在该入口点,该层中的身份验证也将被处理,以确保请求具有访问下游服务的权限。认证可能是另一项服务本身。 API网关的高级实施可能会整合所有下游服务中的大多数(如果不是全部)端点。

让我们来看一个小例子,例如一个电子商务应用程序,其中包含一个用于列出产品,搜索产品和购物车的服务。然后,API网关也会拥有相同的端点,并将该请求进一步委派给负责该请求的服务。此示例中的API可能有/products列出所有产品,/products?query=...以搜索产品,最后/carts/:id/products列出购物车中的产品。希望这回答你的问题。

除此之外,我知道你已经提到过它的一个新项目,只是想给你2美分,如果你的团队真的很小,这可能不是用于新项目的最佳体系结构,因为有很大的运营开销。需要标准化,自动化部署,集成等的开销。它最好从传统的MVC体系结构开始,并在项目启动时慢慢演变成微服务。

+0

它提供了一些想法。谢谢! –

1

根据您的体系结构,您可以使用一些非常酷的软件,如CoreOS的Weave(https://github.com/weaveworks/weave)。我们使用Docker将我们的应用程序分发到CoreOS节点,然后内部DNS由Weave处理。

这真的很棒,因为我们只需将端口转发到应用程序名称,然后我们即将离开。

例如,一个用户请求application.com/api/apiName/request/path

我们的网关与节点来实现。js,并且它使用/ api之后的apiName将其路由到该api,然后将该URL的以下路径附加到该调用本身。

所以来自网关的请求将作为apiName:8080/request/path在内部被代理。在这方面,当新服务出现时,API不需要更改,因为路径是根据请求动态创建的。

这很好,因为我们不必担心跟踪来自不同API的路径并将它们存储在某处。

如果不是这样,您将不得不维护一些(可能是外部的)端点列表,以使其更容易。这可以通过API本身以编程方式完成。

但是,我不确定你的要求是什么,而且正如威尔所回答的那样,它的确会产生相当大的基础设施成本。然而,我们的版本是快速和无痛的,因为我们不必担心在多个层次上进行代码更改,新的API可以免费获得我们的网关代理,日志记录和认证。