1. 程式人生 > >Ocelot Consul

Ocelot Consul

1首先建立一個json的配置檔案,檔名隨便取,我取Ocelot.json

 這個配置檔案有兩種配置方式,第一種,手動填寫 服務所在的ip和埠;第二種,用Consul進行服務發現

第一種如下:

複製程式碼
{
  "ReRoutes": [
    {
      //轉發處理格式
      "DownstreamPathTemplate": "/api/{url}",
      "DownstreamScheme": "http",
      //手動指明ip和埠號
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 6001
        }
      ],
      //請求格式
      "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": 8500,
      //由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文件截圖一張如下: