Spring Cloud Alibaba基礎教程-Nacos(一)


2019快結束,也有很久沒寫博客了,今天我們來談談Nacos,如果對您有幫助,麻煩左上角點個關注 ,謝謝 ! 嘻嘻 今天先寫第一篇

為什么要使用Nacos

Eureka 閉源

相信到現在,Eureka 2.0 閉源已經不是什么新鮮事了。在2017-2018年,幾乎在國內掀起了一陣SpringCloud的熱潮,幾乎很大一部分人群隨着對SpringBoot的關注,都開始關注起來了SpringCloud。而由於Eureka注冊中心的易整合等優點,更是大多數使用SpringCloud的首選注冊中心。但是隨着Eureka官網的宣告,如下。

在這里插入圖片描述
簡單點說就是開源項目已經停止維護之類的話,這里就不做介紹了,感興趣可以上Eureka的Github地址上查看 https://github.com/Netflix/eureka/wiki

Nacos也是一個優秀的注冊中心,並且由阿里巴巴開源,並且最近的熱度很高,已經更新到1.14 版本了,基本上更新的很頻繁,也是一個Eureka閉源后的好的選擇。
在這里插入圖片描述
從下面這張可以看出Nacos的優勢
在這里插入圖片描述
從配置中心角度來看,性能方面Nacos的讀寫性能最高,Apollo次之,Spring Cloud Config依賴Git場景不適合開
放的大規模自動化運維API。功能方面Apollo最為完善,nacos具有Apollo大部分配置管理功能,而Spring Cloud
Config不帶運維管理界面,需要自行開發。Nacos的一大優勢是整合了注冊中心、配置中心功能,部署和操作相比
Apollo都要直觀簡單,因此它簡化了架構復雜度,並減輕運維及部署工作。
綜合來看,Nacos的特點和優勢還是比較明顯的,下面我們一起進入Nacos的世界。

Nacos的優勢

什么是Nacos

Nacos 支持基於 DNS 和基於 RPC 的服務發現(可以作為springcloud的注冊中心)、動態配置服務(可以做配置中心)、動態 DNS 服務。

官方介紹是這樣的:

Nacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您實現動態服務發現、服務配置管理、服務及流量管理。
Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平台。 Nacos 是構建以“服務”為中心的現代應用架構(例如微服務范式、雲原生范式)的服務基礎設施。

官網地址: https://nacos.io/zh-cn/docs/what-is-nacos.html

一張圖看到Nacos優勢
在這里插入圖片描述
在這里插入圖片描述
包括虎牙在微服務改造方面 采用Nacos的好處
文章地址 : https://nacos.io/en-us/blog/huya-practice.html
全景圖 :

在這里插入圖片描述

架構及概念的理解

在這里插入圖片描述

  • 服務 (Service)

服務是指一個或一組軟件功能(例如特定信息的檢索或一組操作的執行),其目的是不同的客戶端可以為不同的目的重用(例如通過跨進程的網絡調用)。Nacos 支持主流的服務生態,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service.

  • 服務注冊中心 (Service Registry)

服務注冊中心,它是服務,其實例及元數據的數據庫。服務實例在啟動時注冊到服務注冊表,並在關閉時注銷。服務和路由器的客戶端查詢服務注冊表以查找服務的可用實例。服務注冊中心可能會調用服務實例的健康檢查 API 來驗證它是否能夠處理請求。

  • 服務元數據 (Service Metadata)

服務元數據是指包括服務端點(endpoints)、服務標簽、服務版本號、服務實例權重、路由規則、安全策略等描述服務的數據

  • 服務提供方 (Service Provider)

是指提供可復用和可調用服務的應用方

  • 服務消費方 (Service Consumer)

是指會發起對某個服務調用的應用方

  • 配置 (Configuration)

在系統開發過程中通常會將一些需要變更的參數、變量等從代碼中分離出來獨立管理,以獨立的配置文件的形式存在。目的是讓靜態的系統工件或者交付物(如 WAR,JAR 包等)更好地和實際的物理運行環境進行適配。配置管理一般包含在系統部署的過程中,由系統管理員或者運維人員完成這個步驟。配置變更是調整系統運行時的行為的有效手段之一。

  • 配置管理 (Configuration Management)

在數據中心中,系統中所有配置的編輯、存儲、分發、變更管理、歷史版本管理、變更審計等所有與配置相關的活動統稱為配置管理。

  • 名字服務 (Naming Service)

提供分布式系統中所有對象(Object)、實體(Entity)的“名字”到關聯的元數據之間的映射管理服務,例如 ServiceName -> Endpoints Info, Distributed Lock Name -> Lock Owner/Status Info, DNS Domain Name -> IP List, 服務發現和 DNS 就是名字服務的2大場景。

  • 配置服務 (Configuration Service)

在服務或者應用運行過程中,提供動態配置或者元數據以及配置管理的服務提供者

總結一下優勢

相對於 Spring Cloud Eureka來說,Nacos 更強大。

為什么呢 ?

Nacos 相當於 一挑 2

  • Nacos == Spring Cloud Eureka + Spring Cloud Config
  • Nacos 可以與 Spring, Spring Boot, Spring Cloud 集成,並能代替 Spring Cloud Eureka, Spring Cloud Config。甚至提供圖形化界面管理

通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 實現配置的動態變更。
通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 實現服務的注冊與發現。

Nacos 快速入門 - Quick Start

1.1 安裝Nacos Server

1.1.1 預備環境准備

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

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

1.1.2 下載源碼或者安裝包

你可以通過源碼和發行包兩種方式來獲取 Nacos。

從 Github 上下載源碼方式

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease‐nacos clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

下載編譯后壓縮包方式

您可以從 最新穩定版本 下載 nacos-server-$version.zip 包,本教程使用nacos-server-1.1.3版本。
下載地址:https://github.com/alibaba/nacos/releases

下載后解壓:

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

1.1.3啟動服務器

nacos的默認端口是8848,需要保證8848默認端口沒有被其他進程占用。
進入安裝程序的bin目錄:

Linux/Unix/Mac

啟動命令(standalone代表着單機模式運行,非集群模式):

sh startup.sh -m standalone

如果您使用的是ubuntu系統,或者運行腳本報錯提示[[符號找不到,可嘗試如下運行:

bash startup.sh -m standalone

Windows啟動方式:

啟動命令:

cmd startup.cmd

或者雙擊startup.cmd運行文件。

啟動成功,可通過瀏覽器訪問 http://127.0.0.1:8848/nacos ,打開如下nacos控制台登錄頁面:

在這里插入圖片描述

使用默認用戶名:nacos,默認密碼:nacos 登錄即可打開主頁面。在這里插入圖片描述

1.1.4OPEN API 配置管理測試

啟動nacos成功后,可通過nacos提供的http api驗證nacos服務運行是否正常。
下邊我們通過 curl工具來測試nacos的open api:
curl 是開發中常用的命令行工具,可以用作HTTP協議測試。

本教程下載curl的windows版本:curl-7.66.0_2-win64-mingw,下載地址:https://curl.haxx.se/windows/
下載完成進入curl-7.66.0_2-win64-mingw的bin目錄,進行下邊的測試,通過測試可判斷nacos是否正常工作:

發布配置

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"

上邊的命令表示向nacos發布一個配置:在這里插入圖片描述
點擊詳情
在這里插入圖片描述

獲取配置
向nacos發布配置成功,就可以通過客戶端從nacos獲取配置信息,執行下邊的命令:

獲取 :curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

在這里插入圖片描述

通過測試發現,可以從nacos獲取前邊發布的配置:HelloWorld

1.1.5 關閉服務器

關閉nacos服務的方式如下:

Linux/Unix/Mac方式:

sh shutdown.sh

Windows

cmd shutdown.cmd

或者雙擊shutdown.cmd運行文件。

外部mysql數據庫支持
單機模式時nacos默認使用嵌入式數據庫實現數據的存儲,若想使用外部mysql存儲nacos數據,需要進行以下步
驟:

  • 1.安裝數據庫,版本要求:5.6.5+ ,mysql 8 以下 ,如果沒有的話使用docker的數據庫也行
  • 2.初始化mysql數據庫,新建數據庫nacos_config,數據庫初始化文件:${nacoshome}/conf/nacosmysql.sql
  • 3.修改${nacoshome}/conf/application.properties文件,增加支持mysql數據源配置(目前只支持
    mysql),添加mysql數據源的url、用戶名和密碼。
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.100.128:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456
1.2 Nacos配置入門
1.2.1 發布配置

首先在nacos發布配置。

瀏覽器訪問 http://127.0.0.1:8848/nacos ,打開nacos控制台,並點擊菜單配置管理->配置列表:

在Nacos添加如下的配置:

Data ID: spiritmark-nacos-demo.yaml
Group : DEFAULT_GROUP
配置格式: YAML
配置內容:
 common:
config1: some-spiritmark

Note: 注意dataid是以 properties(默認的文件擴展名方式)為擴展名,這里使用yaml。

像下面這樣 ,復制過去的配置內容 可以按Tab鍵一下 因為是yaml格式 注意層級
在這里插入圖片描述

發布配置
在點擊“發布”,如下圖,點擊確定發布成功。
在這里插入圖片描述
查詢配置

在這里插入圖片描述

1.2.2 Nacos客戶端獲取配置

我們需要新增一個名為spiritmark-nacos-demo的項目,坐標如下:


 <groupId>com.spiritmark.nacos</groupId>
    <artifactId>spiritmark-nacos-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

添加group ID 為 com.alibaba.nacos 和 artifact ID 為 nacos-clientstarter。用於實現項目中使用 Nacos 來
實現應用的外部化配置。

        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.1.3</version>
        </dependency>

(1)完整 pom坐標如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.spiritmark.nacos</groupId>
    <artifactId>spiritmark-nacos-demo</artifactId>
    <version>1.0-SNAPSHOT</version>


    <dependencies>

        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.1.3</version>
        </dependency>

    </dependencies>


</project>

(2)獲取外部化配置

新增java執行類,並在執行過程中獲取配置信息:

package com.spirimark.nacos;

import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.exception.NacosException;

import java.util.Properties;

public class SimpleDemoMain {
    public static void main(String[] args) throws NacosException {
        //nacos 地址
        String serverAddr = "127.0.0.1:8848";
//Data Id
        String dataId = "spiritmark-nacos-demo.yaml";
//Group
        String group = "DEFAULT_GROUP";
        Properties properties = new Properties();
        properties.put("serverAddr", serverAddr);
        ConfigService configService = NacosFactory.createConfigService(properties);
//獲取配置,String dataId, String group, long timeoutMs
        String content = configService.getConfig(dataId, group, 5000);
        System.out.println(content);

    }
}

 common:
    config1: some-spiritmark

說明獲取配置成功。

下一篇 : Spring Cloud Alibaba基礎教程-Nacos(二)

好了 第一篇就先寫到這 ,馬上快過年了,爭取在過年之前寫完 ,這也是 2019年最后的目標的 2020,在接再厲 !

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM