站外推广免费网站,建设银行大丰支行网站,没有公司可以做网站吗,网站建设服务费入一、啥是API网关#xff1f;API 网关一般放到微服务的最前端#xff0c;并且要让API 网关变成由应用所发起的每个请求的入口。这样就可以明显的简化客户端实现和微服务应用程序之间的沟通方式。以前的话#xff0c;客户端不得不去请求微服务A#xff08;假设为Customers API 网关一般放到微服务的最前端并且要让API 网关变成由应用所发起的每个请求的入口。这样就可以明显的简化客户端实现和微服务应用程序之间的沟通方式。以前的话客户端不得不去请求微服务A假设为Customers然后再到微服务B假设为Orders然后是微服务C假设为Invoices。客户端需要去知道怎么去一起来消费这三个不同的service。使用API网关我们可以抽象所有这些复杂性并创建客户端们可以使用的优化后的端点并向那些模块们发出请求。API网关的核心要点是所有的客户端和消费端都通过统一的网关接入微服务在网关层处理所有的非业务功能比如验证、鉴权、监控等等。 关于API网关个人觉得园友杨晓东的这篇文章《谈谈微服务中的API网关》值得一读。微服务架构中的任何一个环节都是可以说很久的而我没有太多经验也就不多谈了。二、开源项目Ocelot Ocelot是一个使用.NET Core平台上的一个API Gateway这个项目的目标是在.NET上面运行微服务架构。Ocelot框架内部集成了IdentityServer身份验证和Consul服务注册发现还引入了Polly上一篇博文中提到过来处理进行故障处理。目前腾讯和微软是Ocelot在官网贴出来的客户我想也是因为这两家公司都是巨头所以要标榜一下哈哈。 Ocelot github : https://github.com/TomPallister/Ocelot三、快速开始第一个API网关3.1 安装OcelotNuGetInstall-Package Ocelot 3.2 快速准备两个API服务 1准备一个ClientService 创建一个ASP.NET Core WebAPI程序保留默认ValuesController做一下修改 2准备一个ProductService 创建一个ASP.NET Core WebAPI程序保留默认ValuesController做一下修改3.3 静态配置两个API服务 1新建一个json文件eg.configuration.json 首先一个最基本的配置文件如下{ReRoutes: [],GlobalConfiguration: {BaseUrl: https://api.mybusiness.com}
} 这里特别注意一下BaseUrl是我们外部暴露的Url比如我们的Ocelot运行在http://123.111.11.1的一个地址上但是前面有一个Nginx绑定了域名http://api.edisonchou.cn那这里我们的BaseUrl就是 http://api.edisonchou.cn。现在我们的实验环境不存在这个条件所以我们暂时不需要配置这个option。下面我们根据模板将刚刚创建并启动的两个Service的信息进行了配置 其中我们得了解一下微服务架构中的上游服务器和下游服务器一般下游服务器指的是提供API服务的REST Service Server比如WebAPI、WCF App等而上游服务器则指的是提供Web网页服务的Web Server比如MVC Application可能需要访问REST Service。那么这里我们可以了解到Downstream 是下游服务配置 即我们刚刚创建的提供API服务的配置我们会指定PathTemplateHost和Port等信息具体调哪一台服务器是由我说了算UpStream 是上游服务配置 即服务消费方eg.MVC Server, SPA App的调用配置你要怎么按照什么URL格式和什么HTTP类型调用我才能理解 通过配置文件我们可以猜测Ocelot的实现原理大致应该就是把客户端对网关的请求(Request)按照configuration.json的映射配置转发给对应的后端http service然后从后端http service获取响应(Response)后再返回给客户端。当然具体细节应该十分复杂等后面有时间深入看看实现机制。 其他不再解释可以看明白另外需要对这个配置文件进行以下设置为了确保直接运行时能够找到这个configuration.json文件 *.通过配置文件可以完成对Ocelot的功能配置路由、服务聚合、服务发现、认证、鉴权、限流、熔断、缓存、Header头传递等。在配置文件中包含两个根节点ReRoutes和GlobalConfiguration。ReRoutes是一个数组其中的每一个元素代表了一个路由我们可以针对每一个路由进行以上功能配置。 2改写Program和StartUp类才能正常使用Ocelot ①在Program类的BuildWebHost中让程序读取configuration.json文件 ②在StartUp类中为Ocelot注入配置并启动Ocelot3.3 测试一下 1先启动ClientService和ProductService 也可以通过在VS中更改启动顺序来指定 2再启动APIGateway在浏览器中直接访问API网关所在的地址和端口这里是192.168.2.231:8800进行测试先请求ClientService再请求ProductService可以看到API网关对请求进行了转发服务消费方不需要记住每个service所在的IP和端口而是只需要告诉网关我需要消费哪个service即可。 *.tip这里配置的PathTemplate大小写不敏感可以选择通过设置ReRouteIsCaseSensitive:true来实现大小写敏感 到这里第一个API网关的实现就结束了但是对于众多的微服务如果我们都一一硬编码地配置其IP和Port在配置文件中不适合微服务架构的风格因为众多的服务地址变化会让静态配置的工作变得越来越大。因此我们学习了服务发现那么是否可以结合服务发现呢Ocelot Consul的方式为我们给出了答案。四、OcelotConsul的结合4.1 实验节点部署结构 这里仍然采用之前的Consul实验集群三个Consul Server节点1个leader2个follwer一个Consul Client节点部署了两个服务ClientService和ProductService以及一个API网关节点基于Ocelot。4.2 启动Consul 启动方式以及步骤这里不再赘述如不了解请浏览我的前两篇博文《.NET Core微服务之基于Consul实现服务治理》以及《.NET Core微服务之基于Consul实现服务治理续》。这里可以看到我们已经成功地注册了ClientService和ProductService。4.3 启动API Gateway 1为了适配Consul服务发现减少服务IP和Port的hard-code我们需要改一下配置文件 Ocelot提供了基本的负载均衡选项LoadBalanceOptions轮询和最小连接数如果我们部署了多个一样的服务那么我们设置一个选项。 2其他代码无须更改对于基本用法我们要做的基本只是对配置文件的修改。配置完成后即可启动API网关项目。4.4 测试 1请求ClientService 2请求ProductService 五、小结 本篇介绍了API网关的基础概念以及一个基于适合于.NET Core的开源项目Ocelot并通过两个小案例一个静态配置服务一个结合Consul服务发现来了解了API网关的作用和Ocelot的最基础的用法。下一篇会继续Ocelot的一些比较有用的功能比如限流、熔断、缓存以及结合Swagger继续做一些实践也希望到时可以总结下来与各位园友分享。参考资料杨晓东《谈谈微服务中的API网关》桂素伟《Ocelot Consul实践》杨中科《.NET微服务直播课课件pdf》李朝强《ASP.NET Core API网关Ocelot》jesse 腾飞《.NET Core开源API网关 – Ocelot中文文档》Ocelot官网https://github.com/ThreeMammals/Ocelot tip: 张善友大队长为主要贡献者之一Ocelot官方文档http://ocelot.readthedocs.io/en/latest/index.html相关文章.NET Core微服务之基于Consul实现服务治理.NET Core微服务之基于Consul实现服务治理续.NET Core微服务之基于PollyAspectCore实现熔断与降级机制原文地址: http://www.cnblogs.com/szlblog/p/9164419.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com