先上一张图片:
首先要启动consul服务,用于对三个日志服务的注册和发现。(默认端口8500)
然后启动三个日志服务,端口分别为5726、5727、5728。
最后启动网关服务,用于转发客户端请求,端口为9527。
consul服务、日志服务、网关服务,相关服务的代码在前面三篇文章都有说明。
微服务学习总结1(consul服务注册与发现)
微服务学习总结2(消费者调用consul)
微服务学习总结3(网关实现)
下面将网关服务和consul服务联动,实现真正意义上的微服务。步骤如下:
1.网关服务添加引用Ocelot.Provider.Consul程序集。
2.在statup.cs中将consul配置到服务中:
services.AddOcelot(Configuration).AddConsul();
3.修改自动一的网关配置文件configuration.json
{
"ReRoutes": [
{ //官方文档ReRoutes全节点示例
//Upstream表示上游请求,即客户端请求到API Gateway的请求
"UpstreamPathTemplate": "/ApiService/{url}", //请求路径模板
"UpstreamHttpMethod": [ "Get", "Post" ], //请求方法数组
//Downstreamb表示下游请求,即API Gateway转发的目标服务地址
"DownstreamPathTemplate": "/api/{url}", //下游请求地址模板
"DownstreamScheme": "http", //请求协议,目前应该是支持http和https
"LoadBalancerOptions": {
"type": "RoundRobin" // 负载均衡 RoundRobin(轮询)/LeastConnection(最少连接数)
},
"UseServiceDiscovery": true, //使用服务发现,目前Ocelot只支持Consul的服务发现
"ServiceName": "ApiServiceTest"//consul服务名称
}
]
}
经过以上三步,即可将网关与consul关联起来。
浏览器访问网关地址:http://localhost:9527/ApiService/values
不断刷新网页,会发现端口会在5726 、5727、5728之间来回切换。说明consul服务轮询调用三个日志服务。
consul服务的启动方法:
找到consul.exe的文件路径,然后在地址栏中输入cmd,回车,在弹出的命令窗口中输入:
consul agent -dev
命令输入完成,点击回车。就可以启动consul服务了,下面是启动服务的过程:
日志服务和网关服务的启动方法:
找到webapi所在项目文件夹(bin-debug-netcoreappxxx),然后在地址栏中输入cmd,回车,在弹出的命令窗口中输入启动命令:
dotnet NetCore.DemoProject.dll --urls="http://*:5726" --ip="127.0.0.1" --port=5726
NetCore.DemoProject.dll是程序集的名称(项目编译后生成的)。
其他的服务一样,只需要把端口改成5727、5728即可。下面是启动服务的过程: