最近流行微服务架构、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

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