Nacos安裝及應(yīng)用

Nacos:致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。提供了一組簡(jiǎn)單易用的特性集,幫助您快速實(shí)現(xiàn)動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。
本文只介紹Spring Cloud Alibaba 中Nacos的使用

1. Nacos是什么?

英文全稱Dynamic Naming and Configuration Service,即注冊(cè)發(fā)現(xiàn)服務(wù)(注冊(cè)中心)、配置服務(wù)(配置中心),在Nacos中服務(wù)(Service)是核心。

Nacos是Dubbo體系、Spring Cloud Alibaba體系中重要的注冊(cè)中心實(shí)現(xiàn)。
Nacos = Spring Cloud eurake + Spring Cloud Config。
與同類(lèi)注冊(cè)中心產(chǎn)品相對(duì)比,存在一定優(yōu)勢(shì),支持CP+AP。

Nacos Eurake Zookeeper Consul
一致性協(xié)議 CP+AP AP CP CP
健康檢查 TCP/HTTP/MYSQL/Client Beat Client Beat Keep Alive TCP/Http/gRPC/Cmd
負(fù)載均衡 權(quán)重/metadata/Selector Ribbon - RoundRobin
雪崩保護(hù) 無(wú) 無(wú)
自動(dòng)注銷(xiāo)實(shí)例 支持 支持 支持 不支持
訪問(wèn)協(xié)議 HTTP/DNS HTTP TCP HTTP/DNS
多數(shù)據(jù)中心 支持 支持 不支持 支持
跨注冊(cè)中心同步 支持 不支持 不支持 支持
SpringCloud 支持 支持 - 支持
Dubbo 支持 - 支持 -
K8S 支持 - - 支持

關(guān)鍵特性

  • 服務(wù)發(fā)現(xiàn)和服務(wù)健康監(jiān)控
    支持基于DNS和基于RPC的服務(wù)發(fā)現(xiàn),對(duì)服務(wù)健康的實(shí)時(shí)檢查,阻止像不健康的主機(jī)或服務(wù)實(shí)例發(fā)送請(qǐng)求。
  • 動(dòng)態(tài)配置服務(wù):
    以中心化、外部化、動(dòng)態(tài)化的方式管理所有環(huán)境的應(yīng)用配置和服務(wù)配置。
  • 動(dòng)態(tài)DNS服務(wù):
    支持權(quán)重路由,更容易的實(shí)現(xiàn)中間層的負(fù)載均衡、路由策略、流量控制。
  • 服務(wù)以及元數(shù)據(jù)管理:
    從微服務(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ù)。

2. 環(huán)境及版本

下載地址:https://github.com/alibaba/nacos/releases
Nacos:nacos-server-1.2.1
Maven:apache-maven-3.6.3
JDK:jdk1.8.0_181

版本信息

Windos下安裝

解壓下載的nacos-server-1.2.1.zip文件,進(jìn)入nacos/bin目錄,雙擊startup.cmd。


解壓目錄

啟動(dòng)控制臺(tái)會(huì)顯示nacos的訪問(wèn)地址


啟動(dòng)效果

默認(rèn)賬號(hào)密碼 nacos/nacos 登錄


QQ圖片20200516021317.png

3. Nacos 配置中心

  <!-- SpringCloud Ailibaba Nacos Config -->
  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  </dependency>
#默認(rèn)對(duì)應(yīng)nacos服務(wù)中dataId格式為,${spring.application.name}-${spring.profile.active}.${file-extension}
spring:
  application:
    name: config
  cloud:
    nacos:
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml

我們可以指定數(shù)據(jù)庫(kù)配置,通過(guò)一臺(tái)或者多臺(tái)數(shù)據(jù)庫(kù)進(jìn)行配置中心的配置存儲(chǔ)。

指定數(shù)據(jù)庫(kù)配置,需使用nacos提供的數(shù)據(jù)庫(kù)腳本進(jìn)行初始化
nacos\conf\nacos-mysql.sql
nacos\conf\schema.sql

修改在nacos\conf\application.properties 配置文件

#nacos服務(wù)端口號(hào)
server.port=8848
#數(shù)據(jù)配合
spring.datasource.platform=mysql
#數(shù)據(jù)庫(kù)個(gè)數(shù)
db.num=2
#地址a
db.url.0=jdbc:mysql://127.0.0.1:3306/config-a?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
#地址b
db.url.1=jdbc:mysql://127.0.0.1:3306/config-b?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

新建配置

通過(guò)管控臺(tái)可以直接新建配置信息,提供給我們的服務(wù)使用。


新建配置

配置列表

配置列表中,可以使用Data ID、Group進(jìn)行配置檢索,DataID為我們配置文件的id,Group為分組信息。


QQ圖片20200516021317.png

本地存儲(chǔ)

不論是否使用數(shù)據(jù)庫(kù)進(jìn)行配置管理nacos都會(huì)在本地nacos目錄下創(chuàng)建data\config-data目錄,該目錄下使用Group進(jìn)行分組,來(lái)保存我們的配置文件。也可以將目錄打包為DEV_GROUP.zip文件上傳至nacos。

本地配置文件

4. Nacos注冊(cè)中心

  <!-- SpringCloud Ailibaba Nacos -->
  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>
# 注冊(cè)中心地址配置,可增加配置中心內(nèi)容,服務(wù)的提供者與消費(fèi)者配置相同,更換spring.application.name即可。
spring: 
  application:
    #應(yīng)用名稱 
    name: service-provider
  cloud:
    nacos:
      discovery:
        #服務(wù)注冊(cè)地址
        server-addr: 127.0.0.1:8848

服務(wù)提供者

@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosProviderApplication.class, args);
    }

    @RestController
    class EchoController {
        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string) {
            return "Hello Nacos Discovery " + string;
        }
    }
}

服務(wù)消費(fèi)者

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerApplication {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(NacosConsumerApplication.class, args);
    }

    @RestController
    public class TestController {

        private final RestTemplate restTemplate;

        @Autowired
        public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}

        @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
        public String echo(@PathVariable String str) {
            return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容