使用Ocelot做网关
2024-10-02 00:06:17
1首先创建一个json的配置文件,文件名随便取,我取Ocelot.json
这个配置文件有两种配置方式,第一种,手动填写 服务所在的ip和端口;第二种,用Consul进行服务发现
第一种如下:
{
"ReRoutes": [
{
//转发处理格式
"DownstreamPathTemplate": "/api/{url}",
"DownstreamScheme": "http",
//手动指明ip和端口号
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port":
}
],
//请求格式
"UpstreamPathTemplate": "/Ocelot_Consul_Service/{url}",
"UpstreamHttpMethod": [ "Get", "Post" ]
}
]
//例如,我的Ocelot ip是127.0.0.1 端口是8888的情况下,
//我请求的是localhost:8888/Ocelot_Consul_Service/values
//会被转到localhost 的6001端口 6001端口对应的是 Ocelot_Consul_Service 对应的webapi
//请求转后的路径是:localhost:6001/api/Ocelot_Consul_Service/values
}
第二种如下:
{
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/{url}",
"DownstreamScheme": "http", "UpstreamPathTemplate": "/Ocelot_Consul_Service/{url}",
"UpstreamHttpMethod": [ "Get", "Post" ],
//指明服务名
"ServiceName": "Ocelot_Consul_Service",
//指明负载平衡方式
"LoadBalancerOptions": {
"Type": "RoundRobin" //轮询
},
//使用服务发现
"UseServiceDiscovery": true
} ],
//全局配置
"GlobalConfiguration": {
//服务发现的提供者
"ServiceDiscoveryProvider": {
//ip
"Host": "localhost",
//端口
"Port": ,
//由Consul提供服务发现
"Type": "Consul"
}
}
}
2.接下来我们要安装Ocelot install-package Ocelot
3.安装完毕 要在Program.cs文件中使用第一步中创建的json文件,把它读到配置里面去。
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
//解析出从控制台传入的ip和端口号
var config = new ConfigurationBuilder()
.AddCommandLine(args)
.Build();
string ip = config["ip"];
string port = config["port"]; return WebHost.CreateDefaultBuilder(args)
.UseUrls($"http://{ip}:{port}")
//注册应用配置
.ConfigureAppConfiguration((hostingContext,builder)=> {
//false 此文件是否是可选的,不是!true 如果此文件被修改了是否重新加载 是!
builder.AddJsonFile("Ocelot.json", false, true);
})
.UseStartup<Startup>();
}
4.在启动类(startup.cs)文件中添加Ocelot服务
public void ConfigureServices(IServiceCollection services)
{
//这个AddOcelot方法是Ocelot包给IServiceCollection扩展的方法
//如果不使用Consul进行服务发现,只需要services.AddOcelot(configuration)即可
//但是如果使用Consul进行服务发现 后面还要AddConsul()
//要使用AddConsul()必须安装包 Ocelot.Provider.Consul
services.AddOcelot(configuration).AddConsul();
}
一定要注意第4步,使用Consul做服务发现要安装 Ocelot.Provider.Consul 包 并AddConsul()。在实际中 我们要尽量要用Consul进行服务发现。
附上Ocelot文档截图一张如下:
最新文章
- safari浏览器在window下 打开控制台
- 基于TCP和多线程实现无线鼠标键盘-InputMethodManager
- centos 20T硬盘(超过16T)分区
- Alpha版本十天冲刺——Day 8
- AngularJS API之toJson 对象转为JSON
- [学习笔记] 七步从AngularJS菜鸟到专家(6):服务 [转]
- Web服务器处理HTTP压缩之gzip、deflate压缩
- sirius的学习笔记(2)
- linux系统使用密钥登录设置
- Android Framework 记录之二
- winform程序中Label自动换行
- c#无限循环线程如何正确退出
- ubuntu下ruby文件执行蛋疼的一个问题
- 将最小的OWIN身份验证添加到现有的ASP.NET MVC应用程序
- tensorflow学习5----变量管理
- 20155201 网络攻防技术 实验五 MSF基础应用
- python文件处理复习
- 权限管理系统---django版本
- SpringCloud 学习(二) :服务注册与发现Eureka
- Codeforces Round #353 (Div. 2) A. Infinite Sequence 水题
热门文章
- 100万并发连接服务器笔记之Java Netty处理1M连接会怎么样
- [Maven实战](6)仓库(本地仓库,远程仓库,镜像)
- PL/SQL精明的调用栈分析
- python没有++和--操作
- iOS View自定义窍门——UIButton实现上显示图片,下显示文字
- 编译Valgrind arm交叉编译
- tomcat 设置session过期时间(四种方式)
- http500:服务器内部错误案例详解(服务器代码语法错误或者逻辑错误)
- [TypeScript] Simplify asynchronous callback functions using async/await
- 基于 Android NDK 的学习之旅----- C调用Java