日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

[转]让.NET应用秒变微服务

發(fā)布時(shí)間:2023/12/4 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]让.NET应用秒变微服务 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
隨著近年來(lái)微服務(wù)的發(fā)展,許多團(tuán)隊(duì)開(kāi)始將自己的單體應(yīng)用改造為微服務(wù)。通常Java或Go的應(yīng)用可以通過(guò)業(yè)界已有的微服務(wù)框架作為微服務(wù)開(kāi)發(fā)和改造的底座,封裝掉解決跨網(wǎng)絡(luò)問(wèn)題帶來(lái)的復(fù)雜性。但以Chassis模式進(jìn)行的微服務(wù)改造有兩大問(wèn)題:多語(yǔ)言框架支持問(wèn)題和侵入式改造代碼問(wèn)題。 在這個(gè)基礎(chǔ)上SideCar模式提供了另外一種接入分布式環(huán)境的方式,它使原有應(yīng)用不與任何框架,平臺(tái)或者服務(wù)綁定。對(duì)業(yè)務(wù)代碼0侵入,因此不需要考慮SDK和應(yīng)用如何結(jié)合,不存在較高的學(xué)習(xí)曲線和耗費(fèi)較長(zhǎng)的開(kāi)發(fā)周期。這種作為基礎(chǔ)設(shè)施層服務(wù)的存在,稱為ServiceMesh。通過(guò)ServiceMesh,類似.NET或NodeJS等常見(jiàn)的Web應(yīng)用不用考慮語(yǔ)言問(wèn)題,尋找適合各自語(yǔ)言的為服務(wù)框架,也不需要侵入式修改代碼就能快速接入微服務(wù)系統(tǒng)。 整體部署方案 從實(shí)現(xiàn)的角度看,CSE mesher是ServiceMesh模式的一種實(shí)現(xiàn),它基于CSE GO-SDK開(kāi)發(fā),通常以SideCar的方式與業(yè)務(wù)服務(wù)部署在一起。它是一種網(wǎng)絡(luò)代理的存在,業(yè)務(wù)服務(wù)并不感知,只需要配置其http_proxy為CSE mesher的地址即可。 下圖是CSE微服務(wù)案例中在線襪子商店SockShop的一個(gè)示例。整個(gè)SockShop由七個(gè)微服務(wù)組成,其中user等服務(wù)作為服務(wù)提供者通過(guò)java-chassis或go-chassis注冊(cè)到服務(wù)注冊(cè)中心。另外front-end是NodeJS實(shí)現(xiàn)的前端服務(wù)應(yīng)用,orders是實(shí)現(xiàn)訂單服務(wù)的.NET應(yīng)用,他們通過(guò)mesher接入服務(wù)注冊(cè)中心和配置中心,具備了服務(wù)發(fā)現(xiàn)以及服務(wù)治理的基本能力。 在線襪子商店SockShop架構(gòu) .NET應(yīng)用與mesher 訂單orders服務(wù)是SockShop在線襪子商店的一個(gè)子服務(wù),主要提供訂單處理(查詢訂單、運(yùn)費(fèi)計(jì)算、創(chuàng)建訂單),訂單狀態(tài)查詢功能。對(duì)接mesher與orders服務(wù),只需要配置完整的代理地址,不需要對(duì)orders服務(wù)代碼做任何修改。此時(shí)orders作為服務(wù)消費(fèi)者訪問(wèn)payment和shipping服務(wù),將由mesher完成相關(guān)微服務(wù)的服務(wù)發(fā)現(xiàn)和負(fù)載均衡,并把請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù),整個(gè)過(guò)程orders服務(wù)本身并不感知。
  • powershell export http_proxy=http://127.0.0.1:30101
  • 復(fù)制代碼 需要注意的是為了使請(qǐng)求通過(guò)代理,由mesher管理運(yùn)行時(shí),不支持使用Halkit框架的.NET服務(wù)。訪問(wèn)其他服務(wù)的代碼可使用簡(jiǎn)單的WebRequest,示例如下。
  • java var shipmentData = System.Text.Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(AShipment).ToString());
  • WebRequest shipmentRequest =WebRequest.Create(AppSettings.ServiceEndpoints.ShippingServiceEndpoint);
  • 復(fù)制代碼 其中ShippingServiceEndpoint配置為http://shipping/shipping。該請(qǐng)求經(jīng)過(guò)mesher時(shí),shipping作為服務(wù)名在mesher中進(jìn)行解析和負(fù)載均衡。
  • json
  • {
  • ??"ServiceEndpoints":{
  • ? ? "PaymentServiceEndpoint":"http://payment/paymentAuth",
  • ? ? "ShippingServiceEndpoint":"http://shipping/shipping"
  • ??},
  • ??"Data":{
  • ? ? "MongoConnection":{
  • ? ?? ?"ConnectionString":"mongodb://127.0.0.1:27017/",
  • ? ?? ?"Database":"data"
  • ? ? }
  • ??},
  • ??"Logging":{...}
  • }
  • 復(fù)制代碼 配置和啟動(dòng)mesher 本例中mesher啟動(dòng)在本機(jī)的30101端口,.NET應(yīng)用orders通過(guò)mesher與其他微服務(wù)通信。mesher本身也是通過(guò)go-chassis構(gòu)建的服務(wù),可以通過(guò)chassis.yaml配置文件配置監(jiān)聽(tīng)地址以及對(duì)接的服務(wù)中心地址。默認(rèn)的go-chassis會(huì)注冊(cè)自己到本地30100端口啟動(dòng)的service-center。
  • yaml
  • protocols:
  • ??http:
  • ? ? listenAddress:x.x.x.x:30101 # listen addr of mesher
  • service:
  • ??registry:
  • ? ? address:http://x.x.x.x:30100 # uri of service center
  • ? ? scope:full #set full to be able to discover other app′s service
  • ? ? watch:false # set if you want to watch instance change event
  • ? ? autoIPIndex:true # set to true if u want to resolve source IP to microservice
  • 復(fù)制代碼 為了使orders稱為服務(wù)提供者需要給mesher配置環(huán)境變量SPECIFIC_ADDR為orders服務(wù)本身暴露的地址。
  • powershell export SPECIFIC_ADDR=127.0.0.1:80
  • 復(fù)制代碼 通過(guò)mesher訪問(wèn)后端微服務(wù) orders訂單服務(wù)作為消費(fèi)者調(diào)用payment與shipping這兩個(gè)服務(wù)。這兩個(gè)服務(wù)的注冊(cè)通過(guò)microservice.yaml來(lái)配置自己注冊(cè)的微服務(wù)名和版本,默認(rèn)版本為0.01。另外可以通過(guò)配置chassis.yaml來(lái)指定應(yīng)用ID,默認(rèn)的應(yīng)用ID為default。啟動(dòng)SDK接入的微服務(wù)后同樣可以在service center中查詢到。 yaml

    ?

    微服務(wù)的私有屬性
  • service_description:
  • 復(fù)制代碼 微服務(wù)的公共屬性
  • APPLICATION_ID: sockshop
  • 復(fù)制代碼 設(shè)置http_proxy為mesher的監(jiān)聽(tīng)地址后可以通過(guò)curl命令訪問(wèn)接入系統(tǒng)的其他服務(wù)。查看mesher日志可以看到mesher負(fù)責(zé)服務(wù)發(fā)現(xiàn),解析出payment服務(wù)注冊(cè)的advertise地址。
  • powershell export http_proxy=http://127.0.0.1:30101 curl http://payment/health
  • 復(fù)制代碼 運(yùn)行.NET應(yīng)用 orders服務(wù)在創(chuàng)建訂單過(guò)程包括對(duì)訂單詳細(xì)信息處理、調(diào)用payment服務(wù)的訂單支付接口進(jìn)行訂單支付、調(diào)用shipping服務(wù)接口進(jìn)行訂單運(yùn)送處理,最后將訂單存入mongodb當(dāng)中。換言之,Orders服務(wù)既作為訂單服務(wù)的提供端,也作為支付和運(yùn)送服務(wù)的消費(fèi)端。在carts中添加襪子后點(diǎn)擊[Proceed to checkout]即可在orders頁(yè)面查看訂單。 在線襪子商店SockShop主頁(yè)

    ?


    ---------------------
    作者:looook
    來(lái)源:CSDN
    原文:https://blog.csdn.net/looook/article/details/80190409
    版權(quán)聲明:本文為作者原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!

    總結(jié)

    以上是生活随笔為你收集整理的[转]让.NET应用秒变微服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。