Nacos作為服務注冊中心

      網友投稿 827 2025-03-31

      @toc

      1、Nacos簡介

      1.1 Nacos是什么?

      一個更易于構建云原生應用的動態服務發現、配置管理和服務管理平臺。

      Nacos就是服務注冊中心+配置中心的組合,等價于

      N

      a

      c

      o

      s

      =

      E

      u

      r

      e

      k

      a

      +

      C

      o

      n

      f

      i

      g

      +

      B

      u

      s

      Nacos = Eureka+Config +Bus

      Nacos=Eureka+Config+Bus

      1.2 Nacos能做什么?

      替代Eureka做服務注冊中心

      替代Config做服務配置中心

      項目地址:https://github.com/alibaba/Nacos

      Nacos作為服務注冊中心

      官網文檔:https://nacos.io/zh-cn/index.html

      1.3 各種注冊中心比較

      據說 Nacos 在阿里巴巴內部有超過 10 萬的實例運行,已經過了類似雙十一等各種大型流量的考驗

      2、安裝并運行Nacos

      前提條件:本地Java8+Maven環境已經配置成功。

      先從官網下載Nacos:https://github.com/alibaba/nacos/releases

      解壓安裝包,直接運行bin目錄下的startup.cmd

      命令運行成功后直接訪問http://localhost:8848/nacos,默認賬號密碼都是nacos

      3、Nacos作為服務注冊中心演示

      官網文檔:https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_nacos_discovery

      3.1 基于Nacos的服務提供者

      3.1.1 新建cloudalibaba-provider-payment9001

      3.1.2 pom

      父pom

      本模塊的pom:

      com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test

      3.1.3 yml

      server: port: 9001 spring: Application: name: nacos-payment-provider cloud: nacos: discovery: server-addr: localhost:8848 #配置Nacos地址 management: endpoints: web: exposure: include: '*'

      3.1.4 主啟動類

      @EnableDiscoveryClient @SpringBootApplication public class PaymentMain9001 { public static void main(String[] args) { SpringApplication.run(PaymentMain9001.class, args); } }

      3.1.5 業務類

      @RestController public class PaymentController { @Value("${server.port}") private String serverPort; @GetMapping(value = "/payment/nacos/{id}") public String getPayment(@PathVariable("id") Integer id) { return "nacos registry, serverPort: "+ serverPort+"\t id"+id; } }

      3.1.6 測試

      啟動本模塊之后查看Nacos控制臺

      訪問:http://localhost:9001/payment/nacos/1

      測試是沒有問題的。

      3.1.7 再搭建cloudalibabaprovider-payment9002模塊

      除了端口號外,其他幾乎與cloudalibabaprovider-payment9001模塊一致,搭建過程不在贅述。

      3.2 基于Nacos的服務消費者

      3.2.1 新建Module

      新建cloudalibaba-consumer-nacos-order83模塊。

      3.2.2 pom

      com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.atguigu.springcloud cloud-api-commons ${project.version} org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test

      nacos默認是支持負載均衡的,因為我們查看它的依賴文件可以發現,它默認引入了Ribbon負載均衡組件。

      3.2.3 yml

      server: port: 83 spring: application: name: nacos-order-consumer cloud: nacos: discovery: server-addr: localhost:8848 #消費者將要去訪問的微服務名稱(注冊成功進nacos的微服務提供者) service-url: nacos-user-service: http://nacos-payment-provider

      3.2.4 主啟動類

      @EnableDiscoveryClient @SpringBootApplication public class OrderNacosMain83 { public static void main(String[] args) { SpringApplication.run(OrderNacosMain83.class,args); } }

      3.2.5 業務類

      OrderNacosController

      @RestController public class PaymentController { @Value("${server.port}") private String serverPort; @GetMapping(value = "/payment/{id}") public String getPayment(@PathVariable("id") Integer id) { return "nacos registry, serverPort: "+ serverPort+"\t id"+id; } }

      ApplicationContextBean配置類

      @Configuration public class ApplicationContextBean { @Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); } }

      3.2.6 測試

      啟動該服務之后查看Nacos控制臺

      訪問:http://localhost:83/consumer/payment/nacos/13

      第一次:

      第二次:

      多刷新幾次就可以發現,提供服務的端口號一直在9001和9002之間切換,因為我們默認負載均衡算法用的是輪詢算法。

      3.3 服務注冊中心對比

      3.3.1 Nacos生態圖

      可以看到,阿里巴巴的野心還是很大的。

      3.3.2 Nacos和CAP

      3.3.3 Nacos支持AP和CP模式的切換

      ==C是所有節點在同一時間看到的數據是一致的;而A的定義是所有的請求都會收到響應。==

      何時選擇使用何種模式?

      一般來說,如果不需要存儲服務級別的信息且服務實例是通過nacos-client注冊,并能夠保持心跳上報,那么就可以選擇AP模式。當前主流的服務如 Spring cloud 和 Dubbo 服務,都適用于AP模式,AP模式為了服務的可能性而減弱了一致性,因此AP模式下只支持注冊臨時實例。

      如果需要在服務級別編輯或者存儲配置信息,那么 CP 是必須,K8S服務和DNS服務則適用于CP模式。

      CP模式下則支持注冊持久化實例,此時則是以 Raft 協議為集群運行模式,該模式下注冊實例之前必須先注冊服務,如果服務不存在,則會返回錯誤。

      curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

      到此,Nacos作為服務注冊中心就介紹完了,作為配置中心請查看下一篇文章。

      Spring Cloud web前端 微服務

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:為什么電子表格取整如此重要?探索電子表格取整的技巧與應用
      下一篇:word文檔怎樣插入excel表格的柱形圖(excel做的柱狀圖怎么放到word)
      相關文章
      亚洲码在线中文在线观看| 亚洲天天做日日做天天欢毛片| 亚洲一级片在线播放| 亚洲国产成人久久精品影视 | 亚洲免费在线视频观看| 亚洲国产精品国自产电影| 亚洲妇熟XXXX妇色黄| 久久亚洲国产欧洲精品一| 亚洲午夜久久久久妓女影院 | 亚洲欧洲国产成人精品| 78成人精品电影在线播放日韩精品电影一区亚洲| 欧洲亚洲国产清在高| 国产成人无码综合亚洲日韩| 国产亚洲精品a在线观看app| 亚洲国产第一站精品蜜芽| 亚洲AV日韩AV天堂一区二区三区| 亚洲AV无码成人精品区蜜桃| 亚洲伦理一区二区| 亚洲视频免费在线播放| 亚洲婷婷综合色高清在线| 亚洲精品伊人久久久久| 亚洲永久网址在线观看| 亚洲国产av玩弄放荡人妇| 国产亚洲漂亮白嫩美女在线| 亚洲精品国产福利一二区| 国产偷国产偷亚洲高清日韩 | 亚洲依依成人亚洲社区| 无码一区二区三区亚洲人妻| 亚洲精品色婷婷在线影院| 成人午夜亚洲精品无码网站| 亚洲阿v天堂在线| 亚洲最大成人网色| 亚洲一级毛片免费看| 亚洲熟妇无码八V在线播放| 国产精品亚洲专区无码WEB| 亚洲色偷偷狠狠综合网| 久久久久久久综合日本亚洲| 亚洲视频一区网站| 久久综合久久综合亚洲| 亚洲日韩在线中文字幕综合 | 亚洲人成电影在线观看青青|