应无所住,而生其心
排名
1
文章
862
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

.net core3.1使用API网关Ocelot五:配合consul实现动态路由

12854人阅读 2020/9/1 17:25 总访问:5278401 评论:0 收藏:0 手机
分类: 微服务

真正的项目中我们的服务会很多,如果一一地配置到配置文件,将会是一个巨大的工程,这个时候我们就可以让Ocelot与我们的服务发现组件consul配合了,这样也可以比较方便的实现动态路由。

实现效果:如果需要新增服务的时候,不用修改静态配置文件。ocelot自动获取consul发现的所有服务,实现集群功能。

关于consul的用法,我前面写了几篇
https://www.tnblog.net/aojiancc2/article/details/3848

下面就说一下怎么把Ocelot配合consul使用


下载与添加consul依赖

下载consul

  1. install-package Ocelot.Provider.Consul -version 16.0.1

在ConfigureServices中添加consul依赖


在Ocelot全局配置中添加关于consul的配置

  1. "ServiceDiscoveryProvider": {
  2. "Host": "localhost",
  3. "Port": 8500,
  4. "Type": "Consul"
  5. }

效果如下

这样就可以让Ocelot与consul结合起来了是不是很简单


当然前提是你先要把consul正常的跑起来

比如我这里就把consul跑起来并且注入了一个服务进去
consul怎么注入服务可以参考:https://www.tnblog.net/aojiancc2/article/details/3884

然后我们其实就可以通过api网关去访问,服务发现中注入的接口了


可以看到服务是被成功访问的

换一个接口访问试试

也是可以的

好我说一下Ocelot结合Consul的访问规则

大家都知道,其实服务注入,服务发现就是为了降低服务之间的耦合度,可以支持动态扩容,也就是可以通过服务名拿到服务项目的具体ip与端口,这块就是叫服务发现嘛,动态扩展就是服务注入,其实也是一个整体感觉,要分开说的话可以这样理解一下。

所以我们访问的规则其实是:

api网关地址/服务名/具体的接口地址

也就是这里的axj其实是服务名:

对应的就是服务发现的的服务名:

之所以这么做其实挺好的,服务名就代表了那一块服务,然后后面接具体的接口,这样就可以很好的把api网关和服务发现结合起来了


好了这会就写到这里了,留两个问题

1:api网关和服务发现结合后的单独特殊配置
2: 如果consul中一个服务使用了集群,是否可以直接支持负载均衡


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

net core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

使用OLEDB读取不同版本Excel的连接字符串设置

使用OleBD读取excel的时候,excel不同的版本,连接字符串的写法也会不一样。///<summary> ///读取excel ///</su...

C 使用CancellationTokenSource取消多线程

有时间我们在使用多线程的时候,需要取消线程的执行,可以使用CancellationTokenSource来取消对Task开辟多线程的取消如下:...

使用爬虫刷csdn博客访问量

首先了解一下常见反爬虫的检测方法频率监测:有些网站会设置一种频率监测的机制,对于同一IP,若在一定时间内访问的速度超...

Idea下使用maven搭建SSM(一):SpringMVC

Spring MVC是一款基于MVC架构模式的轻量级Web框架,其目的是将Web开发模块化,对整体架构进行解耦,简化Web开发流程。下面...

Idea下使用maven搭建SSM(二):MyBatis

开发Web应用,数据的存储和处理往往离不开数据库和SQL语句。在使用Java开发的Web应用中,自然也少不了连接数据库的步骤。在...

使用 微软自带语音合成类库

//引入语音合成名称空间 usingSystem.Speech.Synthesis; classA { voidtest1() { //实例化并指定字符串播放合成读音 ...

如何使用图标像使用文字一样,使用文本图标的方法

1.首先在Iconfont-阿里巴巴矢量图标库上面找到你需要的图标然后加入你的购物车然后选择图标;注意:每个类型的图标会大小不...

使用七牛云的cdn服务,提高图片的加载速度

CDN介绍CDN的全称是Content Delivery Network,即内容分发网络。CDN加速主要是加速静态资源,如网站上面上传的图片、媒体,...

.net core 使用session

tip:net core 2.2后可以直接启用session了,不用在自己添加一次session依赖,本身就添加了使用nuget添加引用Microsoft.AspN...

使用OutLook发送邮件

publicstaticvoidOutlook(stringSubject,stringTextBody,stringFromAdd,stringFromPass,stringTo,stringCC,List<string&...

SQL Server 中使用游标

--声明一个游标 DECLAREMyCursorCURSOR FORSELECTTOP5FBookName,FBookCodingFROMTBookInfo//定义一个叫MyCursor的游标,...

Windows使用wireshark抓包小心得

wireshrak是个网络抓包工具,常用。但是在数据较大的网络环境中直接使用软件抓包会导致wireshark卡死。为什么呢 ?网卡瞬间...

Oracle自定义函数的简单使用

一.最最最简单的返回一个数字的函数createorreplacefunctionfun_show returnint--申明返回值 as begin return1; end;...

Oracle事务的简单使用

事务:  事务是一个整体,这些操作要么全部执行成功,要么全部不执行。使用事务的原因:保证数据的安全有效。事务的四个特...

Oracle使用游标

其实游标就是把查询的结果放入游标中,然后在去游标里边读取。相当于使用游标做了一个中转,而游标是可以作为参数进行传递...