Nacos

阿里巴巴在2018年7月份發(fā)布Nacos, Nacos是一個(gè)更易于構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)供常、配置管理和服務(wù)管理平臺(tái)。Nacos 支持幾乎所有主流類型的服務(wù)的發(fā)現(xiàn)鸡捐、配置和管理:

  • Kubernetes Service
  • gRPC & Dubbo RPC Service
  • Spring Cloud RESTful Service

Nacos有哪些功能栈暇?

  • 服務(wù)發(fā)現(xiàn)和服務(wù)健康監(jiān)測(cè)

Nacos 支持基于 DNS 和基于 RPC 的服務(wù)發(fā)現(xiàn)。服務(wù)提供者使用 原生SDK箍镜、OpenAPI源祈、或一個(gè)獨(dú)立的Agent TODO注冊(cè) Service 后,服務(wù)消費(fèi)者可以使用DNS TODOHTTP&API TODO查找和發(fā)現(xiàn)服務(wù)色迂。

Nacos 提供實(shí)時(shí)健康檢查香缺,阻止服務(wù)向不健康的主機(jī)或服務(wù)實(shí)例發(fā)送請(qǐng)求。Nacos 支持傳輸層(PING 或 TCP)和應(yīng)用層(如 HTTP脚草、Redis赫悄、MySQL原献、用戶自定義)的健康檢查馏慨。 對(duì)于復(fù)雜的云環(huán)境和網(wǎng)絡(luò)拓?fù)洵h(huán)境中(如 VPC、邊緣服務(wù)等)服務(wù)的健康檢查姑隅,Nacos 提供了 agent 模式和服務(wù)端2種健康檢查模式写隶。Nacos 還提供統(tǒng)一的健康檢查儀表盤,幫助您管理服務(wù)可用性及流量讲仰。

  • 動(dòng)態(tài)配置服務(wù)

動(dòng)態(tài)配置服務(wù)可以讓您以中心化慕趴、外部化和動(dòng)態(tài)化的方式管理所有環(huán)境的應(yīng)用配置和服務(wù)配置。

動(dòng)態(tài)配置消除了配置變更時(shí)重新部署應(yīng)用和服務(wù)的需要,讓配置變得更加高效和敏捷冕房。

配置中心化管理讓無(wú)狀態(tài)服務(wù)實(shí)現(xiàn)變得更簡(jiǎn)單躏啰,讓服務(wù)按需彈性擴(kuò)展變得更容易。

Nacos 提供了一個(gè) 簡(jiǎn)單易用的UI TODO 幫助您管理所有的服務(wù)和應(yīng)用的配置耙册。Nacos 還提供包括配置版本跟蹤给僵、金絲雀發(fā)布、回滾配置以及客戶進(jìn)程配置更新?tīng)顟B(tài)跟蹤在內(nèi)的一系列開(kāi)箱即用的配置管理特性详拙,幫助您更安全地管理配置變更和控制配置變更的風(fēng)險(xiǎn)帝际。

  • 動(dòng)態(tài) DNS 服務(wù)

動(dòng)態(tài) DNS 服務(wù)支持權(quán)重路由,讓您更容易地實(shí)現(xiàn)中間層負(fù)載均衡饶辙、更靈活的路由策略蹲诀、流量控制以及數(shù)據(jù)中心內(nèi)網(wǎng)的簡(jiǎn)單DNS解析服務(wù)。動(dòng)態(tài)DNS服務(wù)還能讓您更容易地實(shí)現(xiàn)以DNS協(xié)議為基礎(chǔ)的服務(wù)發(fā)現(xiàn)弃揽,以消除耦合到廠商私有服務(wù)發(fā)現(xiàn)API上的風(fēng)險(xiǎn)脯爪。

Nacos 提供了一些簡(jiǎn)單的 DNS APIs TODO 幫助您管理服務(wù)的關(guān)聯(lián)域名和可用的 IP:PORT 列表.

  • 服務(wù)及其元數(shù)據(jù)管理

Nacos 能讓您從微服務(wù)平臺(tái)建設(shè)的視角管理數(shù)據(jù)中心的所有服務(wù)及元數(shù)據(jù),包括管理服務(wù)的描述蹋宦、生命周期披粟、服務(wù)的靜態(tài)依賴分析、服務(wù)的健康狀態(tài)冷冗、服務(wù)的流量管理守屉、路由及安全策略、服務(wù)的 SLA 以及最首要的 Metrics 統(tǒng)計(jì)數(shù)據(jù)蒿辙。

Nacos安裝

前往 https://github.com/alibaba/nacos/releases 下載

unzip nacos-server-1.0.0.zip
或者
tar -xvf nacos-server-1.0.0.tar.gz

啟動(dòng)

#Linux/Unix/Mac 下
sh startup.sh -m standalone
#Windows 下
cmd startup.cmd

測(cè)試拇泛,打開(kāi) http://localhost:8848/nacos/#/login ,默認(rèn)賬號(hào)密碼都是nacos

Nacos 實(shí)現(xiàn)配置管理

1. 創(chuàng)建命名空間
創(chuàng)建命名空間
2. 新建配置項(xiàng)
新建配置項(xiàng)
3. 代碼訪問(wèn)配置項(xiàng)

POM.xml

<?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.suoron</groupId>
    <artifactId>SpringbootNacos</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <!-- 繼承父包 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
    </parent>

    <properties>
        <spring-cloud.version>Finchley.SR2</spring-cloud.version>
        <spring-cloud-alibaba.version>0.2.0.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- nacos配置訪問(wèn)依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <!-- 導(dǎo)入Spring cloud相應(yīng)配置項(xiàng)  -->
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!--maven的插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.0</version>
                <configuration>
                    <!--  鏡像名, 也可以使用${project.artifactId} -->
                    <repository>testspringboot</repository>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>

        </plugins>

        <!-- 配置java版本 不配置的話默認(rèn)父類配置的是1.6-->
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

</project>

bootstrap.properties

#對(duì)應(yīng)配置管理項(xiàng)Data,Id
spring.application.name=SpringBootNacos
#namespace填寫DEV對(duì)應(yīng)的ID
spring.cloud.nacos.config.namespace=cc654f1e-cce5-4b38-935d-3e95bbb712a7
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

application.yml

server:
  port: 8080
  tomcat:
    uri-encoding: utf-8

MyApplication.java

package com.suoron.springboot.app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages = "com.suoron.springboot")
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

}

TestController.java

package com.suoron.springboot.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/config")
@RefreshScope   //配置熱更新
public class TestController {

    @Value("${useLocalCache:false}")
    private boolean useLocalCache;

    @Value("${test:aa}")
    private String test;

    @RequestMapping("/get")
    public boolean get() {
        System.out.println(test);
        return useLocalCache;

    }
}

訪問(wèn)測(cè)試: http://localhost:8080/config/get

附A: 注解的方式實(shí)現(xiàn)配置訪問(wèn)

@SpringBootApplication
@NacosPropertySource(dataId = "springcloud-nacos-hello", autoRefreshed = true)
@RestController
public class SpringcloudNacosHelloApplication {
 
  public static void main(String[] args) {
    SpringApplication.run( SpringcloudNacosHelloApplication.class, args );
  }
 
  @NacosValue(value = "${test.properties.useLocalCache:false}", autoRefreshed = true)
  private boolean useLocalCache;
 
 
  @GetMapping("/get")
  public boolean get(){
    return useLocalCache;
  }
 
}

說(shuō)明:
在啟動(dòng)類思灌,加入 @NacosPropertySource 注解其中包含兩個(gè)屬性俺叭,如下:

  • dataId:這個(gè)屬性是需要在Nacos中配置的Data Id。
  • autoRefreshed:為true的話開(kāi)啟自動(dòng)更新泰偿。

@NacosValue:在使用Nacos做配置中心后熄守,需要使用@NacosValue注解獲取配置,使用方式與@Value一樣耗跛,完整啟動(dòng)類代碼如下所示裕照。

附B: Nacos配置數(shù)據(jù)持久化

在添加了自定義配置后,我們打開(kāi)NACOS_PATH/data调塌,會(huì)發(fā)現(xiàn)里邊有個(gè)derby-data目錄晋南,Derby 是 Java 編寫的數(shù)據(jù)庫(kù),屬于 Apache 的一個(gè)開(kāi)源項(xiàng)目羔砾。我們的配置數(shù)據(jù)現(xiàn)在就存儲(chǔ)在這個(gè)庫(kù)中负间。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末偶妖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子政溃,更是在濱河造成了極大的恐慌趾访,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件董虱,死亡現(xiàn)場(chǎng)離奇詭異腹缩,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)空扎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門藏鹊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人转锈,你說(shuō)我怎么就攤上這事盘寡。” “怎么了撮慨?”我有些...
    開(kāi)封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵竿痰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我砌溺,道長(zhǎng)影涉,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任规伐,我火速辦了婚禮蟹倾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猖闪。我一直安慰自己鲜棠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布培慌。 她就那樣靜靜地躺著豁陆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吵护。 梳的紋絲不亂的頭發(fā)上盒音,一...
    開(kāi)封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音馅而,去河邊找鬼祥诽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛用爪,可吹牛的內(nèi)容都是我干的原押。 我是一名探鬼主播胁镐,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼偎血,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼诸衔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起颇玷,我...
    開(kāi)封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤笨农,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后帖渠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谒亦,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年空郊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了份招。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狞甚,死狀恐怖锁摔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哼审,我是刑警寧澤谐腰,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站涩盾,受9級(jí)特大地震影響十气,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜春霍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一砸西、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧址儒,春花似錦籍胯、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至妖爷,卻和暖如春蝶涩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背絮识。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工绿聘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人次舌。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓熄攘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親彼念。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挪圾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容