美文网首页
用asp.net core,consul+ocelot实现服务注

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

作者: 黄隐后人 | 来源:发表于2019-10-31 11:13 被阅读0次

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

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


1.下载安装Consul

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

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

启动Consul

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

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

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

2.新建WebApi服务

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

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

修改appsettings.json文件

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

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

运行结果:

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

3.新建服务发现项目

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

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

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

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

修改program.cs类

修改startup.cs类

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

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

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

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

相关文章

网友评论

      本文标题:用asp.net core,consul+ocelot实现服务注

      本文链接:https://www.haomeiwen.com/subject/bwxkxxtx.html