1:Nacos快速开始

  • 服务注册:

  • 服务发现:  

注意查询时带入namespaceId参数,否则可能注册ok,却查询不到的情形。

如果还是查询不到列表:尝试serverName 参数 加入命名空间@@例如:

DEFAULT_GROUP@@product-api-service

2:下载Github上 Ocelot.Provider.Nacos 源码:

首先修改ProductApi项目的appsetting.json,nacos的配置节点如下:

 "nacos": {"ServerAddresses": [ "http://192.168.219.1:8848" ],"ServiceName": "product-api-service","DefaultTimeOut": 15000,//自定义Namespace Id"Namespace": "8DEF898E-8F3A-1742-E1CB-C43088D5C519","GroupName": "DEFAULT_GROUP","ClusterName": "DEFAULT","ListenInterval": 10000,"Ip": "127.0.0.1", "Port": "5002", //自定义注册到Nacos中端口"RegisterEnabled": true,"InstanceEnabled": true,"LBStrategy": "WeightRandom","NamingUseRpc": false,"Secure": false}

在ProductContoller下新增一个方法:

[HttpGet]public IActionResult Test(){var serverPort = Request.HttpContext.Connection.LocalPort;return Ok($"{DateTime.Now}:_>当前服务实例端口:{serverPort}");}

这一目的是为了后续步骤验证API网关的路由及负载均衡功能。

接着,切换到ProductApi项目所在路径,选中路径后输入cmd回车:切到命令行模式下:执行dotnet run --urls=http://localhost:5002 --port=5002

再次修改端口:比如:5003开启两个实例,目的是为了注册两个服务实例:

3:开启Ocelot API网关:

修改Ocelot api网关 配置:

appsetting.json中的nacos配置:

"nacos": {"ServerAddresses": [ "http://192.168.219.1:8848" ],"ServiceName": "product-api-service","DefaultTimeOut": 15000,//自定义 namespaceId"Namespace": "8DEF898E-8F3A-1742-E1CB-C43088D5C519","GroupName": "DEFAULT_GROUP","ClusterName": "DEFAULT","ListenInterval": 1000,"RegisterEnabled": false,"InstanceEnabled": true,"LBStrategy": "WeightRandom","NamingUseRpc": false}

其中RegisterEnabled=false, //不开启网关的注册,NamingUseRpc=false,//消除日志里的waring警告;

ocelotconfig.json的配置为:

{// 转发路由,数组中的每个元素都是某个服务的一组路由转发规则"Routes": [{"ServiceName": "product-api-service",// Uri方案,http、https"DownstreamScheme": "http",// 下游(服务提供方)服务路由模板"DownstreamPathTemplate": "/api/{everything}",// 上游(客户端,服务消费方)请求路由模板"UpstreamPathTemplate": "/api/{everything}","UpstreamHttpMethod": [ "Get", "Post" ],"LoadBalancerOptions": {"Type": "RoundRobin" //轮询     },"UseServiceDiscovery": true}],"GlobalConfiguration": {"ServiceDiscoveryProvider": {"Type": "Nacos"}}
}

开启Api网关:发现网关每1秒向Nacos服务器请求实例列表。

4:测试网关的路由及负载均衡功能:

LoadBalancerOptions:RoundRobin//轮询机制,循到可用的服务

测试关闭5002端口实例,再看请求1结果只有5003,实现了高可用。

Ocelot API 网关Nacos 服务发现相关推荐

  1. .Net Core微服务入门——Ocelot API网关接入(二)

    Net Core微服务入门--Ocelot API网关接入(二) 我们先接入Consul,实现服务发现 服务发现 1.引入 Ocelot.Provider.Consul 包 2.修改ocelot.js ...

  2. .Net Core微服务入门——Ocelot API网关接入(一)

    .Net Core微服务入门--Ocelot API网关接入 上一章我们测试了一个简单的Client 端访问Consul实现服务注册与发现,但是现实生产环境我们直接通过Client自行连接Consul ...

  3. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(三)

    在前面两篇文章中,我介绍了基于IdentityServer4的一个Identity Service的实现,并且实现了一个Weather API和基于Ocelot的API网关,然后实现了通过Ocelot ...

  4. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(二)

    上文已经介绍了Identity Service的实现过程.今天我们继续,实现一个简单的Weather API和一个基于Ocelot的API网关. 回顾 <Angular SPA基于Ocelot ...

  5. .Netcore 2.0 Ocelot Api网关教程(8)- 缓存

    Ocelot中使用 CacheManager 来支持缓存,官方文档中强烈建议使用该包作为缓存工具. 以下介绍通过使用CacheManager来实现Ocelot缓存. 1.通过Nuget添加 Ocelo ...

  6. .Netcore 2.0 Ocelot Api网关教程(7)- 限流

    本文介绍Ocelot中的限流,限流允许Api网关控制一段时间内特定api的总访问次数. 限流的使用非常简单,只需要添加配置即可. 1.添加限流 修改 configuration.json 配置文件,对 ...

  7. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权

    在上一讲中,我们已经完成了一个完整的案例,在这个案例中,我们可以通过Angular单页面应用(SPA)进行登录,然后通过后端的Ocelot API网关整合IdentityServer4完成身份认证.在 ...

  8. ASP.NET Core on K8s学习之旅(13)Ocelot API网关接入

    [云原生]| 作者/Edison Zhou 这是恰童鞋骚年的第232篇原创文章 上一篇介绍了Ingress的基本概念和Nginx Ingress的基本配置和使用,考虑到很多团队都在使用Ocelot作为 ...

  9. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)

    好吧,这个题目我也想了很久,不知道如何用最简单的几个字来概括这篇文章,原本打算取名<Angular单页面应用基于Ocelot API网关与IdentityServer4+ASP.NET Iden ...

最新文章

  1. JQuery-FullCalendar 多数据源实现日程展示
  2. knight tour java_The Knight’s tour problem
  3. android r 编译找不到头文件_kOS(1):编译
  4. Python3.7模块之hashlib
  5. python 爬虫 selenium
  6. qt5.8连接mysql代码_qt5.8如何连接mysql
  7. linux 安装 wkhtmltox
  8. java数组包含某个值_如何检查Java数组是否包含值?
  9. 第51条:精简initialize与load的实现代码
  10. 牛客暑期多校第五场A:gpa题解(简单01分数规划)
  11. java自动阅卷判断选择题,客观题型自动阅卷系统(管道过滤器模式)
  12. 七号信令:信令网基本概念
  13. 当KPI说谎:数据科学错误的高昂代价
  14. 嵌入式编程经典书籍推荐
  15. 商业虚拟专用网络技术一
  16. Installing Kubernetes Using ‘kubeadm’
  17. android 多版本共存,Android 多版本共存的处理方式
  18. kettle与MySQL数据库建立连接教程
  19. 新加坡南洋理工大学招募博士生、博士后、研究工程师和研究科学家
  20. RISC-V入门必看

热门文章

  1. 移动商城第一篇【搭建项目环境+数据模型】
  2. 使用python读取gif,合并gif,视频转换为gif
  3. linux电子相册登录界面代码,Linux项目开发—电子相册
  4. 面对面翻译小程序是微信团队针对面对面沟通的场景开发的流式语音翻译小程序,通过微信同声传译插件提供了语音识别,文本翻译等功能。
  5. python朋友圈可见_女神说不能每张照片P的一样,所以朋友圈开三天可见,用Python一步解决...
  6. 在服务器设置中smtp协议是指,在outlook的服务器设置中SMTP协议是指
  7. dlna(Upnp媒体服务器)开发
  8. android 计步器
  9. 中间件是什么,系统软件、应用系统定义
  10. 如何使用fpga实现双目视觉