用asp.net core,consul+ocelot实现服务注册、服务发现

        最近流行微服务架构、docker容器化部署,但大都是java技术栈下面的,作为一个.NET技术框架下摸爬滚打这么多年的“资深”程序员,肯定要寻找下在.net下怎么实现?毕竟C#语言优势是不可比拟的,所以呢,前段时间研究了下.net core,首先.net core是支持docker部署的,其次这也是微软未来的发展方向。

        这是我第一次写文章发布在网上,当然平时也有写一些但都是离线的,有什么不足之处还请各位看官多多原谅,废话不多说了。


1.下载安装Consul

官网下载地址:https://www.consul.io/

下载之后解压缩在一个目录下,然后打开cmd命令窗口

用asp.net core,consul+ocelot实现服务注册、服务发现_第1张图片

启动Consul

输入命令:consul agent -dev -client 192.168.10.134 -ui

这里的IP可以localhost,但是为了远程能够访问,就用本机IP了

用asp.net core,consul+ocelot实现服务注册、服务发现_第2张图片

这里只做单机版演示,如果是集群请忽略,加上-ui就可以通过网页查看已注册到consul的服务了,如下图所示,这样就是成功了

用asp.net core,consul+ocelot实现服务注册、服务发现_第3张图片

2.新建WebApi服务

打开VS2019,选择asp.net core web应用程序,然后为项目起个名称,这里就不赘述了。

用asp.net core,consul+ocelot实现服务注册、服务发现_第4张图片

Nuget安装consul,目前最新版是0.7.2.6,安装完成之后就可以开始码代码了

用asp.net core,consul+ocelot实现服务注册、服务发现_第5张图片

修改appsettings.json文件


用asp.net core,consul+ocelot实现服务注册、服务发现_第6张图片

新增一个扩展类,自动注册服务到consul

用asp.net core,consul+ocelot实现服务注册、服务发现_第7张图片

在startup.cs调用注册服务接口,这样就实现了启动服务时自动注册。

用asp.net core,consul+ocelot实现服务注册、服务发现_第8张图片

运行结果:

用asp.net core,consul+ocelot实现服务注册、服务发现_第9张图片

调用http://192.168.10.134:8500/v1/catalog/service/Web.Core.App接口可以得到以下信息,Address和端口都有了,请注意Web.Core.App是我注册的服务名,每个服务名称都不一样。

用asp.net core,consul+ocelot实现服务注册、服务发现_第10张图片

3.新建服务发现项目

Nuget安装Ocelot,及其他依赖项,如下图所示:

用asp.net core,consul+ocelot实现服务注册、服务发现_第11张图片

Ocelot是一个用.NET Core实现并且开源的API网关技术,它的功能包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器、Service Fabric、Skywalking等的集成。而且这些功能都只需要简单的配置即可完成。

我们这个项目只结合Consul服务发现的功能

用asp.net core,consul+ocelot实现服务注册、服务发现_第12张图片

回到项目上,新增一个ocelotSettings.json配置文件

用asp.net core,consul+ocelot实现服务注册、服务发现_第13张图片

修改program.cs类

用asp.net core,consul+ocelot实现服务注册、服务发现_第14张图片

修改startup.cs类

用asp.net core,consul+ocelot实现服务注册、服务发现_第15张图片

运行项目,这样ocelot就自动发现了服务,并且通过路由进行了转发。

原来接口地址是,http://localhost:55796/api/values

用asp.net core,consul+ocelot实现服务注册、服务发现_第16张图片

经过网关之后自动转成了,http://localhost:8083/Web.Core.App/values

用asp.net core,consul+ocelot实现服务注册、服务发现_第17张图片

比较两个结果是一致的,好了就先写到这。

你可能感兴趣的:(用asp.net core,consul+ocelot实现服务注册、服务发现)