当前位置:网站首页>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
边栏推荐
- 33 million IOPs, 39 microsecond delay, carbon footprint certification, who is serious?
- Taobao released the baby prompt "your consumer protection deposit is insufficient, and the expiration protection has been started"
- Crontab timing task output generates a large number of mail and runs out of file system inode problem processing
- UNIX final exam summary -- for direct Department
- 村上春树 --《当我谈跑步时,我谈些什么》句子摘录
- scikit-learn构建模型的万能模板
- crontab定时任务输出产生大量邮件耗尽文件系统inode问题处理
- Problems encountered in the project (V) understanding of operating excel interface poi
- JS force deduction brush question 102 Sequence traversal of binary tree
- Oracle RAC database instance startup exception analysis IPC send timeout
猜你喜欢

33 million IOPs, 39 microsecond delay, carbon footprint certification, who is serious?

JS brain burning interview question reward

Express②(路由)

第一章 电商秒杀商品回顾

Handling of high usage of Oracle undo

【报名】TF54:工程师成长地图与卓越研发组织打造

scikit-learn構建模型的萬能模板

Leetcode? The first common node of two linked lists

scikit-learn构建模型的万能模板

JS 烧脑面试题大赏
随机推荐
[VMware] address of VMware Tools
2022年江西最新建筑八大员(质量员)模拟考试题库及答案解析
Express middleware ③ (custom Middleware)
编程旅行之函数
Using Baidu Intelligent Cloud face detection interface to achieve photo quality detection
服务器中挖矿病毒了,屮
cnpm的诡异bug
Introduction to spark basic operation
SQL learning window function
Android: answers to the recruitment and interview of intermediate Android Development Agency in early 2019 (medium)
Reading notes: meta matrix factorization for federated rating predictions
Reading notes: fedgnn: Federated graph neural network for privacy preserving recommendation
Haruki Murakami -- Excerpt from "what do I talk about when I talk about running"
Leetcode brush question 𞓜 13 Roman numeral to integer
SQL learning | set operation
Oracle RAC database instance startup exception analysis IPC send timeout
Express中间件③(自定义中间件)
Choreographer full resolution
Leetcode brush question 897 incremental sequential search tree
初识go语言