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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章