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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Cloud Alibaba搭建(二):Nacos注册中心

發布時間:2023/12/20 javascript 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Cloud Alibaba搭建(二):Nacos注册中心 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

官方文檔地址:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

一、核心功能:

  • 服務注冊:Nacos Client會通過發送REST請求的方式向Nacos Server注冊自己的服務,提供自身的元數據,比如ip地址、端口等信息。Nacos Server接收到注冊請求后,就會把這些元數據信息存儲在一個雙層的內存Map中。
  • 服務心跳:在服務注冊后,Nacos Client會維護一個定時心跳來持續通知Nacos Server,說明服務一直處于可用狀態,防止被踢除,默認5s發送一次心跳。
  • 服務同步:Nacos Server集群之間會互相同步服務實例,用來保證服務信息的一致性。
  • 服務發現:服務消費者(Nacos Client)在調用服務提供者的服務時,會發送一個REST請求給Nacos Server,獲取上面注冊的服務清單,并且緩存在Nacos Client本地,同時會在Nacos Client本地開啟一個定時器任務定時拉取服務端最新的注冊表信息更新到本地緩存。
  • 服務健康檢查:Nacos Server會開啟一個定時任務來檢查注冊服務實例的健康情況,對于超過15s沒有收到客戶端心跳的實例會將它的healthy屬性設置為false,如果某個實例超過30s沒有收到心跳,直接剔除該實例(被踢除的實例如果恢復發送心跳則會重新注冊)。

二、主流注冊中心功能對比

NacoseEurekaConsulCoreDnsZookeeper
一致性協議CP+AP(默認AP)APCPCP
健康檢查TCP/HTTP/MYSQL/Client BeatClient BeatTCP/HTTP/gRPC/CMDKeep Alive
負載均衡策略權重/Metadata/SelectorRibbonFabioRoundRobin
雪崩保護
自動注銷實例支持支持支持不支持支持
訪問協議HTTP/DNSHTTPHTTP/DNSDNSTCP
監聽支持支持支持支持不支持支持
多數據中心支持支持支持不支持不支持
跨注冊中心同步支持不支持支持不支持不支持
Spring Cloud集成支持支持支持不支持支持
Dubbo集成支持不支持支持不支持支持
K8s集成支持不支持支持支持不支持

CAP理論和BASE理論【引用文檔】

  • CAP定理:Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區容錯性); 這三個特性在任何分布式系統中都不能同時滿足,最多同時滿足兩個

    -1-. CA:優先保證一致性和可用性,放棄分區容錯。這也意味著放棄系統的擴展性,系統不再是分布式的,有違設計的初衷。
    -2-. CP:優先保證一致性和分區容錯性,放棄可用性。在數據一致性要求比較高的場合(譬如:zookeeper,Hbase)是比較常見的做法,一旦發生網絡故障或者消息丟失,就會犧牲用戶體驗,等恢復之后用戶才逐漸能訪問。
    -3-. AP:優先保證可用性和分區容錯性,放棄一致性。NoSQL中的Cassandra就是這種架構。跟CP一樣,放棄一致性,不是說一致性就不保證了,而是逐漸的變得一致

  • BASE定理:Basically Available(基本可用)、Soft state(軟狀態)和Eventually consistent(最終一致性)三個短語的簡寫,BASE是對CAP中一致性和可用性權衡的結果,其來源于對大規模互聯網系統分布式實踐的結論,是基于CAP定理逐步演化而來的,其核心思想是即使無法做到強一致性(Strong consistency),但每個應用都可以根據自身的業務特點,采用適當的方式來使系統達到最終一致性(Eventual consistency)。

三、Nacos中AP模式源碼分析

四、Nacos版本選擇

對應版本可參考Spring Cloud Alibaba搭建(一):依賴版本選擇

由上圖可知nacos應下載1.4.2版本 ,下載地址:Nacos官方(GitHub)下載地址、Nacos碼云下載地址(更快)

tips:加速插件是“GitHub加速”,瀏覽器是edge瀏覽器;也可以復制鏈接使用迅雷下載,速度更快。

五、安裝Nacos

Nacos官方文檔:快速開始

1.預備環境準備

Nacos 依賴 Java 環境來運行。如果您是從代碼開始構建并運行Nacos,還需要為此配置 Maven環境,請確保是在以下版本環境中安裝使用:

  • 64 bit OS,支持 Linux/Unix/Mac/Windows,推薦選用 Linux/Unix/Mac。
  • 64 bit JDK 1.8+;下載 & 配置。
  • Maven 3.2.x+;下載 & 配置。

2.下載編譯后壓縮包方式

unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz cd nacos/bin

3.Nacos相關配置

4.Nacos支持三種部署模式

  • 單機模式 - 用于測試和單機試用。
    在0.7版本之前,在單機模式時nacos使用嵌入式數據庫實現數據的存儲,不方便觀察數據存儲的基本情況。0.7版本增加了支持mysql數據源能力,具體的操作步驟:
  • 安裝數據庫,版本要求:5.6.5+
  • 初始化mysql數據庫,數據庫初始化文件:nacos-mysql.sql
  • 修改conf/application.properties文件,增加支持mysql數據源配置(目前只支持mysql),添加mysql數據源的url、用戶名和密碼。
  • spring.datasource.platform=mysqldb.num=1 db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=nacos_devtest db.password=youdontknow

    再以單機模式啟動nacos,nacos所有寫嵌入式數據庫的數據都寫到了mysql

    • 集群模式 - 用于生產環境,確保高可用。
    • 多集群模式 - 用于多數據中心場景。
      Nacos支持NameServer路由請求模式,通過它您可以設計一個有用的映射規則來控制請求轉發到相應的集群,在映射規則中您可以按命名空間或租戶等分片請求…

    5.啟動Nacos(nacos默認有內置存儲)

    # 啟動命令(standalone代表著單機模式運行,非集群模式): startup.[sh|cmd] -m standalone 等價于將startup文件里面的export MODE="cluster" 為 export MODE="standalone "sh startup.sh -m standalone # 如果您使用的是ubuntu系統,或者運行腳本報錯提示[[符號找不到,可嘗試如下運行: bash startup.sh -m standalone# Windows startup.cmd -m standalone

    啟動成功:

    六. 訪問:http://[IP]:[端口]/nacos/

    application.properties可以更改默認的端口8848

    默認的賬號和密碼都是nacos,進入后效果:

    七、常見錯誤以及解決方案

    • 刪除data目錄后,重新運行

    • 必須配置JAVA_HOME,且需要JDK的版本為JDK8及其以上

    • 更換JDK

    八、注冊服務到Nacos

    1.添加依賴

    <!-- Nacos 注冊服務功能 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>

    2.啟動類配置

    Spring Cloud最早是從2014年推出的,在推出的前期更新迭代速度非常快,頻繁發布新版本,目前更趨于穩定,變化稍慢一些;
    Spring Cloud的版本并不是傳統的使用數字的方式標識,而是使用諸如:Angel、Brixton、Camden、Dalston、Edgware、Finchley、GreenWich、Hoxton…等倫敦的地名來命名版本

    3.添加配置

    spring:application:name: service-clint1 # 應用名稱(nacos會將該名稱當作服務名稱),注意:不能使用“—”(下劃線)cloud:nacos:server-addr: 127.0.0.1:8848 # Nacos 配置中心地址discovery:username: nacos # Nacos用戶名,默認為 nacospassword: nacos # Nacos密碼,默認為 nacosnamespace: public # 名稱空間,默認為 public

    關于 Nacos Starter 更多的配置項信息

    3.啟動項目查看注冊結果


    九、通過服務名調用接口

    此處利用RestTemp測試調用

    1.創建兩個項目(nacon_client1、nacons_client2),編寫兩個control層方法

    創建兩個項目

    nacon_client1項目control

    nacon_client2項目control

    2.直接訪問報錯,需要使用帶有負載均衡的RestTemplate

    • java.net.unknownhostexception 錯誤

      解決方法:改造RestTemplate,使其具有負載均衡的效果(加上@LoadBalanced注解)

      @LoadBalanced注解 還報錯,還需要引用loadbalancer依賴(沒報錯就不用添加)
    <!-- 支持 RestTemplate 開啟負載均衡的功能 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>
    • java.lang.IllegalStateException: Request URI does not contain a valid hostname

      解決辦法:服務名稱不能用下劃線,換成中劃線。

    3.訪問成功

    十、Nacos界面功能介紹

    1.服務詳情

    位置:服務管理 -> 服務列表 -> 服務詳情

    十一、Nacos集群

    文檔地址【運維指南->集權部署說明】:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

    任務:使用centos部署Nacos偽集群(在一臺服務器中模擬)
    前提條件:安裝jdk 1.8+maven 3.0+nginxmysql(5.7+),安裝教程

    1.下載Nacos 1.4.2(版本選擇看前面)

    2.使用mysql數據庫,sql初始化腳本在conf目錄的nacos-mysql.sql


    3.將下載的nacos解壓,并修改conf目錄下的application.properties配置,使用外置數據源

    5.將conf\cluster.conf.example改為cluster.conf,添加節點配置

    # 建議不要使用127.0.0.1 172.21.16.4:8849 172.21.16.4:8850 172.21.16.4:8851

    7.如果出現內存不足:修改啟動腳本(bin\startup.sh)的jvm參數

    JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

    8.將一份nacos拷貝三份,并修改端口(conf目錄下的application.properties文件的server.port=8848)

    server.port=8848

    9.官方推薦,nginx反向代理

    upstream nacoscluster {server 172.21.16.4:8849;server 172.21.16.4:8850;server 172.21.16.4:8851; }server {listen 8848; access_log /var/log/nginx/nacos/access.log main;#配置請求規則location /nacos/{proxy_pass http://nacoscluster/nacos/;}}

    10.啟動三個nacos服務,并訪問

    啟動成功(先判斷內存是否夠用 free -h;內存不夠會導致之前的服務掛掉,而且沒有錯誤日志信息)

    使用nginx訪問

    總結

    以上是生活随笔為你收集整理的Spring Cloud Alibaba搭建(二):Nacos注册中心的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。