Ocelot的使用(结合Consul实现负载均衡)
继续对之前的项目进行修改
对Gateway项目中的ocelot.json配置文件进行修改,对于负载均衡的轮询模式还是在Ocelot的配置文件中配置的
"LoadBalancerOptions": {
"Type": "RoundRobin"
}
其实只需要Ocelot配置的服务名对应在Consul中有多个服务实例就行了。
{"ReRoutes": [{"UpstreamPathTemplate": "/Service2/{url}","UpstreamHttpMethod": [ "Get", "Post" ],"UseServiceDiscovery": true,"ServiceName": "demoName","DownstreamPathTemplate": "/api/{url}","DownstreamScheme": "http",//"DownstreamHostAndPorts": [// {// "Host": "localhost",// "Port": 5001// }//],"LoadBalancerOptions": {"Type": "RoundRobin"}//缓存//"FileCacheOptions": {// "TtlSeconds": 30, //缓存时间(秒)// "Region": "CacheArea" //缓存区(名称自定义),表示改配置缓存放到哪个区域,可以在配置管理中进行维护//}}],"GlobalConfiguration": {"ServiceDiscoveryProvider": {"Host": "127.0.0.1","Port": 8500,"Type": "Consul" //PollConsul}}
}
修改Consul中的配置文件
服务名都是demoName但是有两个服务实例
{"services": [{"id": "consul-service-demo1","name": "demoName","tags": [ "demo" ],"address": "127.0.0.1","port": 5001,"checks": [{"id": "ApiServiceA_Check","name": "ApiServiceA_Check","http": "http://127.0.0.1:5001/api/Health/Index","interval": "10s","tls_skip_verify": false,"method": "GET","timeout": "1s"}]},{"id": "consul-service-demo2","name": "demoName","tags": [ "demo" ],"address": "127.0.0.1","port": 5002,"checks": [{"id": "ApiServiceB_Check","name": "ApiServiceB_Check","http": "http://127.0.0.1:5002/api/Health/Index","interval": "10s","tls_skip_verify": false,"method": "GET","timeout": "1s"}]}]}
通过命令consul agent -dev -config-dir=D:\Soft\consul_1.8.5_windows_amd64启动Consul
然后对Service1的webapi项目分别运行在5001和5002端口处
通过http://localhost:8500可以看到
服务demoName就是我们刚才配置的,可以看到有2个实例
点击进去看可以看到,就是我们刚才配置文件上设置的demoName的两个实例
现在我们启动网关程序Gateway,可以通过http://localhost:5000/Service2/values/GetById?id=123访问得到数据,此时我们随便关掉一个实例
但是通过http://localhost:5000/Service2/values/GetById?id=123刚开始可能会有几次访问不通,到Consul界面总出现上面的画面时就又可以访问到数据了。这是因为Consul设置的
为每10s进行一次健康检查,因此10s内访问的话还会去访问到其中刚关掉的某个实例,当Consul通过健康检查检测到某个服务停掉后就会剔除,接下来就会去访问正常的服务了,
所以之后访问又可正常了。
代码:https://gitee.com/sammy520/OcelotDemo
Ocelot的使用(结合Consul实现负载均衡)相关推荐
- ASP.NET Core中Ocelot的使用:基于服务发现的负载均衡
本系列相关文章: <ASP.NET Core中Ocelot的使用:API网关的应用> <ASP.NET Core中Ocelot的使用:基于Spring Clound Netflix ...
- .net core Ocelot Consul 实现API网关 服务注册 服务发现 负载均衡
大神张善友 分享过一篇 <.NET Core 在腾讯财付通的企业级应用开发实践>里面就是用.net core 和 Ocelot搭建的可扩展的高性能Api网关. Ocelot(http:// ...
- Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)
来源:https://www.cnblogs.com/7tiny/p/10493805.html [前言] Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请 ...
- .net core grpc consul 实现服务注册 服务发现 负载均衡(二)
在上一篇 .net core grpc 实现通信(一) 中,我们实现的grpc通信在.net core中的可行性,但要在微服务中真正使用,还缺少 服务注册,服务发现及负载均衡等,本篇我们将在 .net ...
- 服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)
服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置) 原文:服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置) [前言] ...
- java负载均衡框架_SpringCloud与Consul集成实现负载均衡功能
负载均衡(Load Balance,简称LB)是一种服务器或网络设备的集群技术.负载均衡将特定的业务(网络服务.网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性.负 ...
- Ocelot(二)- 请求聚合与负载均衡
Ocelot(二)- 请求聚合与负载均衡 作者:markjiang7m2 原文地址:http://letyouknow.net/ocelot/ocelot-tutorial-2.html 源码地址:h ...
- 基于Docker + Consul + Nginx + Consul-template的服务负载均衡实现
前言 上一篇文章使用 Consul 和 Registrator 在 docker 的容器环境中搭建了服务注册和发现集群.在服务发现和注册的基础上,本文将引入 Nginx反向代理服务器和 Consul- ...
- 基于consul实现微服务的服务发现和负载均衡
一. 背景 随着2018年年初国务院办公厅联合多个部委共同发布了<国务院办公厅关于促进"互联网+医疗健康"发展的意见(国办发[2018]26号)>,国内医疗IT领域又迎 ...
最新文章
- c语言万年历设计目的,万年历设计报告
- 基于android的记账本论文,(毕业论文)基于安卓的记账本.doc
- Java基础之static关键字的用法
- 中国已消失的九所世界级大学
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.18. 数组函数和操作符...
- oracle 的使用
- 服务器配置多个域名冲突
- Halcon教程十四:训练自己的模型然后识别相似的图像
- 台式计算机常用总线,计算机中常见的总线有哪些
- 在PyG上构建自己的数据集
- 使用bash解析xml
- android接入华为推送
- 用计算机升级ipad系统软件,ipad2版本太低,设置里又没办法升级,咋自己升级ios系统...
- java实现ln10_Java数学函数
- 前端面试 - JS总结(1) - 基础 (数据类型, 事件与函数, 原型链)
- Smartbanner: Intelligent banner design framework that strikes a balance between freedom and rules
- 征战希洛克集卡活动显示服务器没角色,希洛克征战模式
- python mk趋势检验_时序数据常用趋势检测方法
- 【效率为王】超详细 Hexo + Github Pages 博客搭建教程
- 输出以个小于1万亿的正整数的拼音读法
热门文章
- 图像增强---空域滤波之平滑
- 电动汽车感应电动机优化控制与仿真分析
- 《设计的品格 探索×呈现×进化的InDesign美学》—第1课1.5节字符
- 男生减肚子赘肉简单方法
- 妇产科护理学重点归纳
- 新制造两年,阿里云迅速完成了“原始积累”
- Unity实战篇 | 接入 声网SDK 实现 视频通话——自己动手做一个 视频通话
- 基于VoIP视频通话系统构建
- 02-linux yum方式快速安装java6步骤,卸载java2步骤
- java.util.ConcurrentModificationExceptionat java.util.ArrayList$Itr.checkForComodification