小編給大家分享一下在Windows下使用AspNetCore Api 和consul的示例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)是一家以網(wǎng)絡(luò)技術(shù)公司,為中小企業(yè)提供網(wǎng)站維護、成都做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站備案、服務(wù)器租用、主機域名、軟件開發(fā)、微信小程序開發(fā)等企業(yè)互聯(lián)網(wǎng)相關(guān)業(yè)務(wù),是一家有著豐富的互聯(lián)網(wǎng)運營推廣經(jīng)驗的科技公司,有著多年的網(wǎng)站建站經(jīng)驗,致力于幫助中小企業(yè)在互聯(lián)網(wǎng)讓打出自已的品牌和口碑,讓企業(yè)在互聯(lián)網(wǎng)上打開一個面向全國乃至全球的業(yè)務(wù)窗口:建站歡迎咨詢:18980820575一、概念:什么是consul:
Consul 是有多個組件組成的一個整體,作用和Eureka,Zookeeper相當,都是用來做服務(wù)的發(fā)現(xiàn)與治理。
Consul的特性:
1、服務(wù)的發(fā)現(xiàn):consul可以把注冊到其中的服務(wù)提供給使用者,也可以主動發(fā)現(xiàn)服務(wù),在consul的客戶端界面中用戶可以得到,服務(wù)的信息,比如IP端口等信息,在客戶端界面中可以很容易的找到注冊的服務(wù),
2、健康檢查:這里健康檢查就是檢查服務(wù)是否在良好的運行,這里判斷服務(wù)是否運行良好,可以用Web服務(wù)的狀態(tài)進行判斷,也可以用服務(wù)器的利用狀態(tài)進行判斷,可以根據(jù)這些狀態(tài)來判斷那些服務(wù)是良好運行的那些是不健康的()這里不健康可以是服務(wù)器的利用率)從而根據(jù)這些判斷路由遠離不健康的服務(wù)。
3、KVStore:就是KEY/Value的存儲,在使用中可以根據(jù)KV的存儲功能做很多事情比如,動態(tài)的進行配置,進行一些特征的標記,協(xié)調(diào),管理的選舉,KV存儲的API是基于HTTP的。
4、多數(shù)據(jù)中心:consul支持多哦數(shù)據(jù)中心,意味著我們這是用consul的過程中不必擔心多做更多的工作來進行擴展。
Consul是一個分布式的高可用的系統(tǒng)。每一個向consul注冊的的服務(wù),在服務(wù)無本身都會運行一個(agents)代理,運行代理的最終目的是為了對當前服務(wù)進行健康檢查,以便通知Consul系統(tǒng),當前節(jié)點的健康與否,在consul的特性(健康檢查)我們已經(jīng)舉過例子。
每個數(shù)據(jù)中心運行一個領(lǐng)事服務(wù)器集群。當提出跨數(shù)據(jù)中心服務(wù)發(fā)現(xiàn)或配置請求時,本地(agents)服務(wù)器將請求轉(zhuǎn)發(fā)到遠程數(shù)據(jù)中心并返回結(jié)果。
(白話)進行健康檢查就是為了決定能不能用這個節(jié)點服務(wù),這個節(jié)點的服務(wù)是否是所有已知節(jié)點中性能好的,不是好的換一個就是了。在使用的過程中每一個服務(wù)器運行時建議模擬出多個可以導(dǎo)致服務(wù)失敗、數(shù)據(jù)丟失的場景,然后為每一個服務(wù)推薦用作安全的服務(wù)器。在這個過程中有一個較大的功臣就是代理(agents),代理實現(xiàn)了和服務(wù)器之間的交流。
了解更多:https://www.consul.io/intro/index.html
二、Consul的安裝:
1、Consul的下載:
地址: https://www.consul.io/
點擊DOWNLOAO 進入下載頁面如下:
我下載的是win版本并且已解壓,大小非常的小
2、安裝運行:
安裝命令為:Consul.exe agent -dev開發(fā)者模式安裝Ctrl+ C可以停止運行如下圖:
開發(fā)者模式安裝只適用于單個服務(wù)器的環(huán)境,不用于生產(chǎn),開發(fā)者模式不保存任何的狀態(tài)。
安裝成功后,我們可以看到,輸出的日志信息中包含了。Client addr: 客戶端地址為,127.0.0.1:8500,DNS為8600 我們可以在瀏覽器中進行訪問,
訪問結(jié)果如下:
在頁面中我們可以看到我們的服務(wù)、consul 在會默認把自己注冊成為一個服務(wù)節(jié)點,界面中向我們展示了自己的運行狀態(tài),IP服務(wù)器等信息
我們還可以通過命令來進行查看 服務(wù)的信息
命令: consul members 下圖是輸出:
圖中向我們輸出了我們自己更加詳細的信息,地址、狀態(tài)、角色、版本信息
在后期我們使用的過程中我們會添加很多的服務(wù),這個時候的輸出可能更多,因為服務(wù)的信息是通過通訊協(xié)議獲取以及注冊的,為了避免consul視圖中的服務(wù)狀態(tài),和服務(wù)器上的狀態(tài)保持一致,就需要通過HttpApi將服務(wù)的狀態(tài)發(fā)送給consul中的管理(agent) 結(jié)合上文中consul的特性3KVStore我們可以更好的理解。
官方翻譯
中斷代理之后,您應(yīng)該看到它離開集群并關(guān)閉。通過優(yōu)雅地離開,領(lǐng)事通知其他集群成員節(jié)點已離開。如果您強制終止代理進程,集群的其他成員將檢測到節(jié)點失敗。當成員離開時,其服務(wù)和檢查將從目錄中刪除。當一個成員失敗時,它的健康狀態(tài)被簡單地標記為關(guān)鍵,但它不會從目錄中刪除。領(lǐng)事將自動嘗試重新連接到失敗的節(jié)點,允許它從某些網(wǎng)絡(luò)條件中恢復(fù),而不再與左側(cè)節(jié)點聯(lián)系。此外,如果代理作為服務(wù)器運行,那么優(yōu)雅的休假對于避免可能導(dǎo)致影響協(xié)商一致協(xié)議的可用性中斷非常重要。
三、Consul的簡單使用:
1、新建一個AspNetCoreAPI項目:
如下圖:
2、在項目中的Startup中Configure方法中實現(xiàn)注冊:
代碼如下:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseMvc(); String ip = Configuration["ip"];//部署到不同服務(wù)器的時候不能寫成127.0.0.1或者0.0.0.0,因為這是讓服務(wù)消費者調(diào)用的地址 int port = int.Parse(Configuration["port"]);//獲取服務(wù)端口 var client = new ConsulClient(ConfigurationOverview); //回調(diào)獲取 var result = client.Agent.ServiceRegister(new AgentServiceRegistration() { ID = "ServerNameFirst" + Guid.NewGuid(),//服務(wù)編號保證不重復(fù) Name = "ServerFirst",//服務(wù)的名稱 Address = ip,//服務(wù)ip地址 Port = port,//服務(wù)端口 Check = new AgentServiceCheck //健康檢查 { DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5),//服務(wù)啟動多久后反注冊 Interval = TimeSpan.FromSeconds(10),//健康檢查時間間隔,或者稱為心跳間隔(定時檢查服務(wù)是否健康) HTTP = $"http://{ip}:{port}/api/Health",//健康檢查地址 Timeout = TimeSpan.FromSeconds(5)//服務(wù)的注冊時間 } }); }
////// 獲取Consul的實例 /// /// private static void ConfigurationOverview(ConsulClientConfiguration obj) { //consul的地址 obj.Address = new Uri("http://127.0.0.1:8500"); //數(shù)據(jù)中心命名 obj.Datacenter = "dc1"; }
3、啟動:首先確保Consul已啟動,我們運行項目注冊
步驟如下:
編譯Api 成功后我們通過命令行的方式運行:
執(zhí)行命令:dotnet 項目DLL --ip 設(shè)置ip -- port 設(shè)置端口(dotnet Framework.WebApi.dll --ip 127.0.0.1 --port 5001) 敲擊回車運行項目
同一個項目我們可以運行多個在命令運行時設(shè)置不同端口就可以運行了
刷新consul客戶端我們可以看到我們的服務(wù)注冊成功了
結(jié)果如下:
以上是“在Windows下使用AspNetCore Api 和consul的示例”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!