当前位置:网站首页>Nacos + aspnetcore + Ocelot actual combat code

Nacos + aspnetcore + Ocelot actual combat code

2022-04-23 16:54:00 Tassel 1990

Record the program you've played recently .

1、AspnetCore( frame NetCore3.1) Service deployment 2 individual docker, As load balancing 2 Nodes , adopt Nacos Self distribution

2、 gateway Ocelot( frame Net5.0, because Ocelot.Provider.Nacos docking Nacos2.0, Low version access 2.0 Of Nacos Will report a mistake ) Do the forwarding , Configuration uses Nacos Load balancing

Some codes and configurations are listed below

A、 Create microservices , The main codes are as follows :

1、 register Nacos( quote Nuget:nacos-sdk-csharp-unofficial.aspnetcore)

public void ConfigureServices(IServiceCollection services)
{
    services.AddNacosAspNetCore(Configuration);
}

2、appsetting.json To configure Nacos as follows :

 "nacos": {
    "ServerAddresses": [ "" ],// Server address 
    "DefaultTimeOut": 15,
    "Namespace": "",//Nacos The namespace of 
    "ListenInterval": 1000,
    "ServiceName": "",// service name 
    "Weight": 100
  }

3、 After successful registration , Can be in Nacos Page to find , Here's the picture :

  One thing to note is that To configure docker You need to specify IP Address with Port port ( Otherwise Nacos Automatically configured docker Inside the container IP Address , It will lead to inaccessibility after forwarding ), So in configuration docker Containers Run When Need to increase the ASPNETCORE_URLS Parameters , As follows :

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 Gateway project (Net5.0 frame ), The main code and configuration are as follows :

1、 Refer to the Nuget There are the following :

nacos-sdk-csharp.Extensions.Configuration

Ocelot.Provider.Nacos

Ocelot.Provider.Polly

2、 The configuration file appsettings.json as follows :

"GlobalConfiguration": {
    "ServiceDiscoveryProvider": {
      "Type": "Nacos"// This sentence is important 
    }
  },
  "nacos": {
    "Listeners": [
      {
        "Optional": false,
        "DataId": "spcreceive-ocelot.json",// Configuration center DataId, The configuration information is written as route jump 
        "Group": "DEFAULT_GROUP"
      }
    ],
    "ServerAddresses": [ "http://xxxxx:8848" ],//nacos Address 
    "ServiceName": "apigateway",// service name 
    "DefaultTimeOut": 5000,    
    "Namespace": "",// Customize Namespace Of Id
    "GroupName": "DEFAULT_GROUP",
    "ClusterName": "DEFAULT",
    "ListenInterval": 1000,
    "RegisterEnabled": true,
    "InstanceEnabled": true,
    "LBStrategy": "WeightRoundRobin", //WeightRoundRobin WeightRandom 
    "NamingUseRpc": true
  }

3、 Main code :

public void ConfigureServices(IServiceCollection services)
{
    // Registration service discovery 
    services.AddOcelot().AddNacosDiscovery();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseOcelot().Wait();// Use Ocelot service 
}

Program.cs file

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 Configuration center configuration item for spcreceive-ocelot.json as follows :

{
  "Routes": [  
    {
      "DownstreamPathTemplate": "/api/xxxxxbe",
      "DownstreamScheme": "http",
      "UpstreamPathTemplate": "/spc/Cxxxxxxiable",
      "UpstreamHttpMethod": [ "Get", "Post" ],
      "ServiceName": "SPCService",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      },     
      //  Use service discovery 
      "UseServiceDiscovery": true      
    }
  ]
}

版权声明
本文为[Tassel 1990]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231359253446.html