.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 @   Felix-Zhang  阅读(4533)  评论(2编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
历史上的今天:
2019-04-03 关于SQL 导出脚本失败 及SQL 的重装
点击右上角即可分享
微信分享提示