当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
Business case | how to promote the activity of sports and health app users? It is enough to do these points well
Decentralized Collaborative Learning Framework for Next POI Recommendation
Choreographer全解析
Tensorflow Download
STM32学习记录0007——新建工程(基于寄存器版)
Special test 05 · double integral [Li Yanfang's whole class]
[code analysis (6)] communication efficient learning of deep networks from decentralized data
try --finally
项目中遇到的问题(五)操作Excel接口Poi的理解
MySQL [SQL performance analysis + SQL tuning]
OSS cloud storage management practice (polite experience)
Elmo (bilstm-crf + Elmo) (conll-2003 named entity recognition NER)
Android: answers to the recruitment and interview of intermediate Android Development Agency in early 2019 (medium)
专题测试05·二重积分【李艳芳全程班】
ACFs file system creation, expansion, reduction and other configuration steps
读了一篇博客,重新理解闭包整理一下
redis如何解决缓存雪崩、缓存击穿和缓存穿透问题
Oracle RAC database instance startup exception analysis IPC send timeout
What is the difference between blue-green publishing, rolling publishing and gray publishing?
编程旅行之函数