1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          nacos(Nacos的作用是什么)

          來源:互聯網轉載 時間:2024-05-01 10:53:01


          OpenAPI

          在講注冊中心內容時,我們已經知道Nacos本質上是一個服務,那么,是服務就會有接口,下面阿鑒給大家介紹一下注冊實例接口

          更多OpenAPI可查看Nacos官網:https://nacos.io/zh-cn/docs/open-api.html

          注冊實例接口

          接口:/nacos/v1/ns/instance

          請求方式:POST

          參數:

          名稱類型是否必選描述
          ip字符串服務實例IP
          portint服務實例port
          namespaceId字符串命名空間ID
          weightdouble權重
          enabledboolean是否上線
          healthyboolean是否健康
          metadata字符串擴展信息
          clusterName字符串集群名
          serviceName字符串服務名
          groupName字符串分組名
          ephemeralboolean是否臨時實例

          測試:

          1. 發送一個curl請求,當然使用Postman也可以

            curl-i-XPOST\-H"Content-Type:application/json"\'http://192.168.2.11:8850/nacos/v1/ns/instance?serviceName=test&ip=123.123.123.123&port=8081&username=nacos&password=nacos'


          2. 打開Nacos控制臺查看效果

            由于只傳了必要參數,所以命名空間和分組名稱都是默認的。

            注意:由于我們只注冊了實例,并未定時發送心跳,所以實例會在一定時間內被Nacos剔除

          3. 打開詳情

            ip和端口號即為我們填入的信息

          OpenAPI在服務中的關系

          相信小伙伴已經發現了,我們在調用接口時傳入的參數是什么,注冊到Nacos上的實例信息就是什么,那么在實際項目中能不能也這樣玩呢?

          在之前我們使用Nacos時,我們使用的配置是這樣:

          server:port:8080spring:application:name:my-ordercloud:nacos:discovery:server-addr:192.168.2.11:8850username:nacospassword:nacos

          此時我們并未使用ip和port配置,Nacos將自動發現本地ip地址進行注冊, port則使用server.port

          現在我們將ipport加上

          server:port:8080spring:application:name:my-ordercloud:nacos:discovery:server-addr:192.168.2.11:8850ip:123.123.123.123port:1234username:nacospassword:nacos

          但實際上我本機ip地址為192.168.65.91

          啟動服務并在控制臺查看服務詳情

          此時IP和端口就成了我們實際配置了的

          心急的小伙伴這時候可能就會給阿鑒個大嘴巴子:講那么多,這有啥用?!

          阿鑒:不急不急

          容器部署

          在實際項目使用時,我們肯定傾向于讓服務自己發現IP和端口號進行注冊。

          多實例部署時,誰關心你的本機ip是個啥,一個服務一會在那臺機器,一會在這臺機器,不可能每次部署時都改下配置。

          但是有一種情況讓Nacos自己發現IP是不可行的。那就是使用容器部署服務。

          1. 比如我們在192.168.2.11的服務器上部署一個my-goods服務,此時Nacos自動發現的IP實際上是容器內部IP,如172.19.0.16

          2. 現在嘗試使用在192.168.2.12的服務器上的my-order服務,對my-goods服務進行調用,此時會收到一個拒絕連接錯誤,因為調用的地址是172.19.0.16,但實際需要的地址是192.168.2.11

          問題解決

          簡單的辦法就是在配置文件中加上ip的配置,如

          server:port:8081spring:application:name:my-goodscloud:nacos:discovery:server-addr:192.168.2.11:8850ip:192.168.2.11username:nacospassword:nacos

          此時my-goods注冊到Nacos上的地址就是服務器的地址了。

          但是這種方式有個很明顯的弊端,就是服務遷移時需要改動配置,多實例部署時需要頻繁改動配置。

          一個更優雅的方式

          我們把配置改成如下:

          server:port:8081spring:application:name:my-goodscloud:nacos:discovery:server-addr:192.168.2.11:8850ip:${HOST_IP_ADDRESS:127.0.0.1}username:nacospassword:nacos

          此時ip配置中增加了變量:HOST_IP_ADDRESS

          docker-compose.yaml

          version:'3.5'services:my-goods:restart:alwaysimage:my-goodscontainer_name:my-goodsenvironment:HOST_IP_ADDRESS:$HOST_IP_ADDRESSTZ:Asia/Shanghaiports:-8081:8081

          在執行docker-compose前,將HOST_IP_ADDRESS輸出到環境變量中

          exportHOST_IP_ADDRESS=$(ifconfigeth0|grep-E"([0-9]{1,3}\.){3}[0-9]{1,3}"|awk'{print$2}'|cut-f2-"d:")

          這行命令表示將本機ip輸出到環境變量HOST_IP_ADDRESS

          這個步驟可根據不同的部署工具進行執行,比如阿鑒用的是gitlab-ci,就是在gitlab-ci中執行的。

          如此,使用容器部署的方式便優雅完成了~

          邊車掛載

          奇技淫巧

          當我們發現了奧秘:只要我們配了IP,配的IP是啥,注冊到Nacos的IP就是啥。

          掌握奇技淫巧的程序員們有沒有想到一些騷操作呢?阿鑒這里卻是想到了一個哦~

          <img src="https://notes.zijiancode.cn/nacos/my-sidecar.png" />

          my-sidercar將my-integral的信息注冊到Nacos上

          1. 新建一個my-sidecar服務,配置如下

            server:port:8082spring:application:name:my-sidecarmain:allow-bean-definition-overriding:truecloud:nacos:discovery:server-addr:192.168.1.11:8850namespace:publicservice:my-integralip:192.168.65.91port:8083username:nacospassword:nacosmanagement:endpoints:web:exposure:include:"*"

            注冊到Nacos的信息是my-integral服務的

          2. 新建一個Spring Boot my-integral服務(注意不是SpringCloud服務,不集成Nacos),配置如下

            server:port:8083spring:application:name:my-integral

            spring.application.name 配置加不加無所謂

          3. my-integral服務中編寫接口

            @Slf4j@RestController@RequestMapping("/integral")publicclassIntegralController{@GetMapping("/remain")publicStringremain(){log.info("積分服務被調用了");Randomrandom=newRandom();inti=random.nextInt(100);return"您當前的積分為:"+i;}}


          4. 啟動項目并打開控制臺

            該信息是由my-sidecar注冊而來,而非my-integer所注冊的,因為my-integral并未集成Nacos

          5. my-order編寫調用代碼

            @RestController@RequestMapping("/order")publicclassOrderController{@ResourceprivateRestTemplaterestTemplate;@GetMapping("/integral")publicStringintegral(){Stringurl="http://my-integral/integral/remain";returnrestTemplate.getForObject(url,String.class);}}


          6. 啟動my-order測試

            服務調用成功了

          回顧一下我們做了什么:我們使用配置ip的奧秘將一個并未集成Nacos的my-integral信息注冊到了Nacos上,然后通過my-order成功發起了調用~

          意義

          這樣做有什么意義呢?難道真就為了騷一把?不是的。

          假設我們現在有這樣的需求,有一個老項目old-project想要加入到微服務系統中,但是這個old-project集成Nacos的成本過高,那么我們就可以使用這樣的方式了。

          這樣的方式支持非Java語言哦~

          這里阿鑒偷偷告訴大家,這個方式其實有個術語,叫做:邊車模式。

          Nacos的邊車模式

          其實Nacos已經實現了邊車模式,集成方式非常簡單

          1. 在原Nacos項目(my-sidecar)中引入依賴

            <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sidecar</artifactId></dependency>


          2. 編寫配置

            server:port:8082spring:application:name:my-sidecarmain:allow-bean-definition-overriding:truecloud:nacos:discovery:server-addr:192.168.1.11:8850service:my-integralsidecar:ip:127.0.0.1port:8083health-check-url:http://127.0.0.1:8083/integral/healthmanagement:endpoints:web:exposure:include:"*"

            ip:my-integral的IP

            port: my-integral的端口

            health-check-url: my-integral的健康檢查地址

          3. my-integral服務中增加接口

            @RestController@RequestMapping("/integral")publicclassIntegralController{@GetMapping("/health")publicMap<String,String>health(){Map<String,String>map=newHashMap<>(2);map.put("status","UP");returnmap;}}

            返回的內容必須是:status: UP

          4. 測試

          感謝各位的閱讀,以上就是“Nacos的作用是什么”的內容了,經過本文的學習后,相信大家對Nacos的作用是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是本站,小編將為大家推送更多相關知識點的文章,歡迎關注!

          標簽:nacos-

          c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...

          2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...

          :喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...

          北京時間5月27日2:45,意甲第37輪,桑普多利亞主場對陣薩索洛。上半場,加比亞迪尼前場搶斷后推射破門,貝拉爾迪迅速扳平比分,僅過了兩分鐘,馬特烏斯-恩里克頭球破門反超比分。下半場,埃爾利奇自擺烏龍,最終,提前四輪降級的桑普多利亞在本賽季最后一場主場比賽中,2-2戰平薩索洛,桑普多利亞已經十輪聯賽未能取勝。(資料圖片)>" content="">點擊查看本場比賽詳細數據>>>" co...

          據了解,2021年,以美元計價,我國進出口規模達到了6.05萬億美元,在2013年首次達到4萬億美元后,2021年連續跨過5萬億美元、6萬億美元兩大臺階,達到了歷史高點。海關數據顯示,2021年我國貨物貿易進出口總值39.1萬億元人民幣,比2020年增長21.4%。其中,出口21.73萬億元,增長21.2%;進口17.37萬億元,增長21.5%。根據最新數據測算,2021年前三季度,我國出口國際市...

          順豐同城騎士單日收入過萬是真的嗎?【#順豐同城回應騎士單日收入過萬#:含用戶打賞約7856元】4月11日晚間,@順豐同城 回應網上關于“順豐同城騎士收入過萬”的消息。據悉,近日網上截圖顯示一順豐同城騎士4月9日實際收入10067.75 元。順豐同城表示,經后臺查詢后確認,該順豐同城騎士共完成60筆同城配送訂單,系企業用戶下單,訂單傭金計提總額達10067.75 元。說明顯示...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>