Spring Cloud Alibaba 教程 | Nacos(一)


什么是Nacos

Nacos是一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平台。

Nacos 致力於幫助您發現、配置和管理微服務。Nacos提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。

Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平台。 Nacos 是構建以“服務”為中心的現代應用架構 (例如微服務范式、雲原生范式)的服務基礎設施。

使用Nacos組件可以作為微服務架構的注冊中心和配置中心,可以簡單理解為可以代替Netflix解決方案中的Eureka組件和Spring Cloud Config組件。

Nacos官方地址:https://nacos.io/zh-cn/index.html

主要功能

  • 動態配置服務

動態配置服務讓您能夠以中心化、外部化和動態化的方式管理所有環境的配置。動態配置消除了配置變更時重新部署應用和服務的需要。配置中心化管理讓實現無狀態服務更簡單,也讓按需彈性擴展服務更容易。

  • 服務發現及管理

動態服務發現對以服務為中心的(例如微服務和雲原生)應用架構方式非常關鍵。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服務發現。Nacos也提供實時健康檢查,以防止將請求發往不健康的主機或服務實例。借助Nacos,您可以更容易地為您的服務實現斷路器。

  • 動態DNS服務

通過支持權重路由,動態DNS服務能讓您輕松實現中間層負載均衡、更靈活的路由策略、流量控制以及簡單數據中心內網的簡單DNS解析服務。動態DNS服務還能讓您更容易地實現以DNS協議為基礎的服務發現,以消除耦合到廠商私有服務發現API上的風險。

安裝單機版Nacos

Nacos下載地址:https://github.com/alibaba/nacos/releases
截止目前最新版本為:1.1.4
在這里插入圖片描述
下載之后解壓進入到bin目錄執行啟動命令:sh startup.sh -m standalone
在這里插入圖片描述
命令參數中-m表示模式mode,standalone表示啟動的是單機版模式,windows用戶可以使用該命令啟動Nacos: cmd startup.cmd -m standalone

執行啟動命令之后可以查看到啟動日志:tail -fn 200 /home/server/nacos/logs/start.out
在這里插入圖片描述在這里插入圖片描述
Nacos是一個用Java語言編寫的web項目,Tomcat默認端口是8848,訪問8848端口可以打開Nacos管理台。

默認用戶名和密碼都是nacos
在這里插入圖片描述
在這里插入圖片描述
Nacos管理台菜單包含了四大部分:

  • 配置管理(管理配置中心)
  • 服務管理(管理注冊中心)
  • 命名空間
  • 集群管理

使用Nacos注冊中心功能

生產者服務

第一步:創建一個nacos-test項目,包含兩個模塊nacos-provider和nacos-consumer,在父項目pom.xml文件統一管理springboot、spring cloud和spring cloud alibaba版本。
在這里插入圖片描述

<dependencyManagement>
    <dependencies>
        <!--spring-boot-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- spring-cloud -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Greenwich.SR2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- spring-cloud-alibaba -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.1.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

第二步:先來處理nacos-provider模塊項目,在nacos-provider模塊項目的pom.xml配置alibaba-nacos-discovery依賴。

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.0</version>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!--nacos注冊中心-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
</dependencies>

第三步:編寫入口類NacosProvider ,並添加一個EchoController 提供HTTP接口服務。

@SpringBootApplication
@EnableDiscoveryClient
public class NacosProvider {

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

    @RestController
    class EchoController {

        @GetMapping("/echo/{string}")
        public String echo(@PathVariable String string) {
            return "Hello Nacos Discovery " + string;
        }
    }

}

第四步:在bootstrap.yml文件配置nacos配置中心相關參數。

spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.0.127:8848 #注冊中心地址
server:
  port: 17357

第五步:運行nacos-provider,可以從啟動日志看到注冊到了nacos,打開nacos管理台在服務管理菜單下的服務列表項可以看到注冊的實例信息。
在這里插入圖片描述
在這里插入圖片描述

消費者服務

第一步:接下來處理nacos-consumer模塊項目,在nacos-consumer模塊項目的pom.xml配置同樣加上alibaba-nacos-discovery依賴。

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.0</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--注冊中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

第二步:編寫入口類NacosConsumer ,並添加一個TestController提供HTTP接口服務,通過RestTemplate遠程調用NacosProvider。

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumer {

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

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

    @RestController
    public class TestController {

        private final RestTemplate restTemplate;

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

        @GetMapping("/echo/{str}")
        public String echo(@PathVariable String str) {
            return restTemplate.getForObject("http://nacos-provider/echo/" + str, String.class);
        }

    }

}

第三步:在bootstrap.yml文件配置nacos配置中心相關參數。

spring:
  application:
    name: nacos-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.0.127:8848 #注冊中心地址
server:
  port: 17358

第四步:測試消費者調用提供者接口服務。
在這里插入圖片描述
在這里插入圖片描述
nacos默認使用了ribbon做客戶端負載均衡。
在這里插入圖片描述

關注公眾號了解更多原創博文

![Alt](https://img-blog.csdnimg.cn/20191104123907694.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3Mzk1NTE=,size_16,color_FFFFFF,t_70#pic_center =591x339)


免責聲明!

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



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