当前位置:网站首页>Nacos+AspnetCore+Ocelot实战编码
Nacos+AspnetCore+Ocelot实战编码
2022-04-23 13:59:00 【流苏1990】
纪录下最近玩的这个方案。
1、AspnetCore(框架NetCore3.1)服务部署2个docker,作为负载均衡的2个节点,通过Nacos自行分配
2、网关Ocelot(框架Net5.0,因Ocelot.Provider.Nacos对接Nacos2.0,低版本访问2.0的Nacos会报错)做转发,配置采用Nacos负载均衡
以下列出部分代码以及配置
A、创建微服务,主要代码如下:
1、注册Nacos(引用Nuget:nacos-sdk-csharp-unofficial.aspnetcore)
public void ConfigureServices(IServiceCollection services)
{
services.AddNacosAspNetCore(Configuration);
}
2、appsetting.json配置Nacos如下:
"nacos": {
"ServerAddresses": [ "" ],//服务器地址
"DefaultTimeOut": 15,
"Namespace": "",//Nacos的命名空间
"ListenInterval": 1000,
"ServiceName": "",//服务名
"Weight": 100
}
3、注册成功后,可以在Nacos 页面找到,如下图:
有个需要注意的地方是 配置docker 启动的时候需要指定IP地址跟Port端口(不然Nacos自动配置了docker容器的内部IP地址,会导致转发后访问不了),所以在配置docker 容器Run 的时候 需要增加ASPNETCORE_URLS参数,具体如下:
docker run --name=umsspc1 --restart=always -d -p 85:9002 -e "ASPNETCORE_URLS=http://xxxxx:85" --link umsreports:nameasreporttest -v /usr/pm/umsspccollect/plug:/spccore/plug -v /usr/pm/umsspccollect/jsonConfig:/spccore/jsonConfig umsspcapi
B 、Ocelot网关项目(Net5.0框架),主要代码以及配置如下:
1、引用的Nuget有如下:
nacos-sdk-csharp.Extensions.Configuration
Ocelot.Provider.Nacos
Ocelot.Provider.Polly
2、配置文件appsettings.json如下:
"GlobalConfiguration": {
"ServiceDiscoveryProvider": {
"Type": "Nacos"//这句话是重要的
}
},
"nacos": {
"Listeners": [
{
"Optional": false,
"DataId": "spcreceive-ocelot.json",//配置中心的DataId,配置信息写的是路由跳转
"Group": "DEFAULT_GROUP"
}
],
"ServerAddresses": [ "http://xxxxx:8848" ],//nacos地址
"ServiceName": "apigateway",//服务名
"DefaultTimeOut": 5000,
"Namespace": "",//自定义Namespace的Id
"GroupName": "DEFAULT_GROUP",
"ClusterName": "DEFAULT",
"ListenInterval": 1000,
"RegisterEnabled": true,
"InstanceEnabled": true,
"LBStrategy": "WeightRoundRobin", //WeightRoundRobin WeightRandom
"NamingUseRpc": true
}
3、主要代码:
public void ConfigureServices(IServiceCollection services)
{
//注册服务发现
services.AddOcelot().AddNacosDiscovery();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseOcelot().Wait();//使用Ocelot服务
}
Program.cs文件
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, builder) =>
{
var c = builder.Build();
builder.AddNacosV2Configuration(c.GetSection("nacos"));
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
4、Nacos的配置中心配置项spcreceive-ocelot.json 如下:
{
"Routes": [
{
"DownstreamPathTemplate": "/api/xxxxxbe",
"DownstreamScheme": "http",
"UpstreamPathTemplate": "/spc/Cxxxxxxiable",
"UpstreamHttpMethod": [ "Get", "Post" ],
"ServiceName": "SPCService",
"LoadBalancerOptions": {
"Type": "RoundRobin"
},
// 使用服务发现
"UseServiceDiscovery": true
}
]
}
版权声明
本文为[流苏1990]所创,转载请带上原文链接,感谢
https://blog.csdn.net/fuweiping/article/details/120378986
边栏推荐
- Using Baidu Intelligent Cloud face detection interface to achieve photo quality detection
- 收藏博客贴
- Move blog to CSDN
- Tensorflow & pytorch common error reporting
- scikit-learn構建模型的萬能模板
- 19c RAC steps for modifying VIP and scanip - same network segment
- JS force deduction brush question 102 Sequence traversal of binary tree
- Force deduction brush question 101 Symmetric binary tree
- [code analysis (1)] communication efficient learning of deep networks from decentralized data
- VsCode-Go
猜你喜欢
Express②(路由)
2022年江西最新建筑八大员(质量员)模拟考试题库及答案解析
Quartus prime hardware experimental development (de2-115 board) experiment II function adjustable comprehensive timer design
groutine
【报名】TF54:工程师成长地图与卓越研发组织打造
MySQL index [data structure + index creation principle]
SQL learning | complex query
STM32学习记录0007——新建工程(基于寄存器版)
Android 面试主题集合整理
零拷貝技術
随机推荐
编程旅行之函数
Android: answers to the recruitment and interview of intermediate Android Development Agency in early 2019 (medium)
2022年江西最新建筑八大员(质量员)模拟考试题库及答案解析
Chapter 15 new technologies of software engineering
Question bank and answer analysis of the 2022 simulated examination of the latest eight members of Jiangxi construction (quality control)
初识go语言
Using Jupiter notebook in virtual environment
大专的我,闭关苦学 56 天,含泪拿下阿里 offer,五轮面试,六个小时灵魂拷问
About note 1
JS force deduction brush question 102 Sequence traversal of binary tree
SQL learning window function
The art of automation
收藏博客贴
Jiannanchun understood the word game
Yarn online dynamic resource tuning
第一章 电商秒杀商品回顾
Modify the Jupiter notebook style
Reading notes: Secure federated matrix factorization
[code analysis (7)] communication efficient learning of deep networks from decentralized data
Oracle告警日志alert.log和跟踪trace文件中文乱码显示