.NET Core微服务之基于Ocelot实现API网关服务

一、啥是API网关?

.NET Core微服务之基于Ocelot实现API网关服务

  API 网关一般放到微服务的最前端,并且要让API 网关变成由应用所发起的每个请求的入口。这样就可以明显的简化客户端实现和微服务应用程序之间的沟通方式。以前的话,客户端不得不去请求微服务A(假设为Customers),然后再到微服务B(假设为Orders),然后是微服务C(假设为Invoices)。客户端需要去知道怎么去一起来消费这三个不同的service。使用API网关,我们可以抽象所有这些复杂性,并创建客户端们可以使用的优化后的端点,并向那些模块们发出请求。API网关的核心要点是:所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能(比如验证、鉴权、监控等等)。

  关于API网关,个人觉得园友杨晓东的这篇文章《谈谈微服务中的API网关》值得一读。微服务架构中的任何一个环节,都是可以说很久的,而我没有太多经验,也就不多谈了。

二、开源项目:Ocelot

.NET Core微服务之基于Ocelot实现API网关服务

  Ocelot是一个使用.NET Core平台上的一个API Gateway,这个项目的目标是在.NET上面运行微服务架构。Ocelot框架内部集成了IdentityServer(身份验证)和Consul(服务注册发现),还引入了Polly(上一篇博文中提到过)来处理进行故障处理。目前,腾讯和微软是Ocelot在官网贴出来的客户,我想也是因为这两家公司都是巨头,所以要标榜一下,哈哈。

.NET Core微服务之基于Ocelot实现API网关服务

  Ocelot github : https://github.com/TomPallister/Ocelot

三、快速开始第一个API网关 3.1 安装Ocelot

NuGet>Install-Package Ocelot  

3.2 快速准备两个API服务

  (1)准备一个ClientService

  

.NET Core微服务之基于Ocelot实现API网关服务

  创建一个ASP.NET Core WebAPI程序,保留默认ValuesController,做一下修改:

[Route("api/[controller]")] public class ValuesController : Controller { // GET api/values [HttpGet] public IEnumerable<string> Get() { return new string[] { "ClinetService-value1", "ClinetService-value2" }; } ...... }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppjjf.html