Ocelot Consul
阿新 • • 發佈:2018-11-01
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文件截圖一張如下: