带API网关的微服务

时间:2015-10-16 07:51:50

标签: c# api gateway microservices

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

我的问题是,

  1. 是否有人知道如何在Api中完成请求路由部分 网关?
  2. 这是否可以通过简单的条件[ 伪代码: >来完成 if(keyword ==“product”)then route(“product service”)]?
  3. 或者这是更好的方法吗?
  4. 我正在使用C#.Net来开发Api 我从https://www.nginx.com/blog/building-microservices-using-an-api-gateway/

    获得了有关Api Gateway的一些信息

    Api Gateway

2 个答案:

答案 0 :(得分:9)

你几乎问了三个问题,他们都有些相关,所以我会尽力解决这三个问题。

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

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

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

答案 1 :(得分:1)

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

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

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

我们的网关是用Node.js实现的,它在/ api之后将apiName路由到该api,然后将URL的以下路径附加到调用本身。

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

这很棒,因为我们不必担心从不同的API跟踪路径并将其存储在某处。

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

然而,我不确定您的要求是什么,并且正如威尔已经回答的那样,它确实会产生相当大的基础设施成本。但是,我们的版本快速而轻松,因为我们不必担心在多个层中进行代码更改,新API将免费获得网关代理,日志记录和身份验证。