? ? ? ? 最近流行微服務(wù)架構(gòu)徙菠、docker容器化部署,但大都是java技術(shù)棧下面的郁岩,作為一個.NET技術(shù)框架下摸爬滾打這么多年的“資深”程序員婿奔,肯定要尋找下在.net下怎么實(shí)現(xiàn)?畢竟C#語言優(yōu)勢是不可比擬的问慎,所以呢萍摊,前段時間研究了下.net core,首先.net core是支持docker部署的如叼,其次這也是微軟未來的發(fā)展方向冰木。
? ? ? ? 這是我第一次寫文章發(fā)布在網(wǎng)上,當(dāng)然平時也有寫一些但都是離線的笼恰,有什么不足之處還請各位看官多多原諒踊沸,廢話不多說了。
1.下載安裝Consul
官網(wǎng)下載地址:https://www.consul.io/
下載之后解壓縮在一個目錄下社证,然后打開cmd命令窗口
啟動Consul
輸入命令:consul agent -dev -client 192.168.10.134 -ui
這里的IP可以localhost逼龟,但是為了遠(yuǎn)程能夠訪問,就用本機(jī)IP了
這里只做單機(jī)版演示追葡,如果是集群請忽略腺律,加上-ui就可以通過網(wǎng)頁查看已注冊到consul的服務(wù)了,如下圖所示辽俗,這樣就是成功了
2.新建WebApi服務(wù)
打開VS2019疾渣,選擇asp.net core web應(yīng)用程序,然后為項(xiàng)目起個名稱崖飘,這里就不贅述了榴捡。
Nuget安裝consul,目前最新版是0.7.2.6朱浴,安裝完成之后就可以開始碼代碼了
修改appsettings.json文件
新增一個擴(kuò)展類吊圾,自動注冊服務(wù)到consul
在startup.cs調(diào)用注冊服務(wù)接口,這樣就實(shí)現(xiàn)了啟動服務(wù)時自動注冊翰蠢。
運(yùn)行結(jié)果:
調(diào)用http://192.168.10.134:8500/v1/catalog/service/Web.Core.App接口可以得到以下信息项乒,Address和端口都有了,請注意Web.Core.App是我注冊的服務(wù)名梁沧,每個服務(wù)名稱都不一樣檀何。
3.新建服務(wù)發(fā)現(xiàn)項(xiàng)目
Nuget安裝Ocelot,及其他依賴項(xiàng),如下圖所示:
Ocelot是一個用.NET Core實(shí)現(xiàn)并且開源的API網(wǎng)關(guān)技術(shù)频鉴,它的功能包括了:路由栓辜、請求聚合、服務(wù)發(fā)現(xiàn)垛孔、認(rèn)證藕甩、鑒權(quán)、限流熔斷周荐、并內(nèi)置了負(fù)載均衡器狭莱、Service Fabric、Skywalking等的集成概作。而且這些功能都只需要簡單的配置即可完成腋妙。
我們這個項(xiàng)目只結(jié)合Consul服務(wù)發(fā)現(xiàn)的功能
回到項(xiàng)目上,新增一個ocelotSettings.json配置文件
修改program.cs類
修改startup.cs類
運(yùn)行項(xiàng)目仆嗦,這樣ocelot就自動發(fā)現(xiàn)了服務(wù)辉阶,并且通過路由進(jìn)行了轉(zhuǎn)發(fā)。
原來接口地址是瘩扼,http://localhost:55796/api/values
經(jīng)過網(wǎng)關(guān)之后自動轉(zhuǎn)成了,http://localhost:8083/Web.Core.App/values
比較兩個結(jié)果是一致的垃僚,好了就先寫到這集绰。