.Net Core 微服务学习(三): 网关(Gateway)

前面简单说了下 微服务概念 下面说一下网关(Gateway)

上篇文章已经实现了通过consul 对多服务实例的统一管理 包括负载均衡 服务注册与发现 服务心跳检查

 这一篇继续学习  API 网关,即API Gateway,是大型分布式系统中,为了保护内部服务而设计的一道屏障,可以提供高性能、高可用的 API托管服务, 

网关的作用是什么呢

(1)网关层对外部和内部进行了隔离,保障了后台服务的安全性。

(2)对外访问控制由网络层面转换成了运维层面,减少变更的流程和错误成本。

(3)减少客户端与服务的耦合,服务可以独立运行,并通过网关层来做映射。

(4)通过网关层聚合,减少外部访问的频次,提升访问效率。

(5)节约后端服务开发成本,减少上线风险。

(6)为服务熔断,灰度发布,线上测试提供简单方案。

(7)便于进行应用层面的扩展。

其实也就是将服务于客户端隔离,避免客户端直接调用,为了客户端提供统一入口 保证服务安全性

这里我们采用Ocelot ,Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Butterfly Tracing集成。这些功能只都只需要简单的配置即可完成,下面我们会对这些功能的配置一一进行说明。

首先完成以下四部

1.新建WebAPI 程序

2.引入Ocelot nuget 包 

3.Startup配置中间件

4.增加配置文件地址

 

 然后配置单地址路由

 

 ok 我们首先启动三个服务实例 端口分别是 5726 5727 5728 

 

 这里仅举例5726 服务 其余的大家自己想象一样 只是端口号不一样 

然后启动我们的网关实例

 

 这时候 访问 6299 网关端口 就可以访问到5726 端口下的服务 证明我们已经配置成功

 

 

 

但是这样搞 似乎负载均衡并没有起作用 因为访问的永远是5726端口下的服务实例

接下来需要我们在网关下 引入consul 

安装  Ocelot.Provider.Consul 

重新更改下负载均衡配置

 

 此时已经实现了 consul + 网关负载均衡

接下来 服务缓存 引入Ocelot.provider.Polly 包 在startup中AddPolly

 

 

 修改configurat 增加 缓存配置

 

 

 此时请求一下啊 注意时间 调用网关的时候 请求会在网管处直接返回请求 结果并不会访问服务

 虽然只有10秒钟 但是这个如果实在高并发的环境下 每秒拦截的访问数 还是很可观的

 

 限流与熔断

posted @ 2020-04-03 16:25  Felix-Zhang  阅读(4347)  评论(2编辑  收藏  举报