Spring Cloud Alibaba學習筆記:Nacos安裝及服務註冊與發現

本篇要點

  • 簡單瞭解Nacos提供的功能。
  • 簡單介紹Nacos安裝配置及啓動。
  • 演示Nacos做爲服務註冊中心的用法。
  • Nacos與其餘註冊中心的對比。

Nacos簡介

Nacos = (Dynamic) Naming and Configuration Service 註冊中心+配置中心,也就是代替Eureka做爲服務註冊中心,替代Config做爲配置中心,替代Bus做爲消息總線。java

官方網站: http://nacos.iogit

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

服務是Nacos中的頭等公民。Nacos支持幾乎全部類型的服務,入:Dubbo/gRPC,Spring Cloud RESTFUL服務或Kubernetes服務。web

Nacos主要提供的四種功能

服務發現和服務運行情況檢查

Nacos使服務易於註冊本身並經過DNS或HTTP接口發現其餘服務。 Nacos還提供服務的實時運行情況檢查,以防止向不正常的主機或服務實例發送請求。spring

動態配置管理

動態配置服務使您能夠在全部環境中以集中和動態的方式管理全部服務的配置。 Nacos消除了在更新配置時從新部署應用程序和服務的需求,這使配置更改更加有效和敏捷。windows

動態DNS服務

Nacos支持加權路由,使您能夠更輕鬆地在數據中心內的生產環境中實施中間層負載平衡,靈活的路由策略,流控制和簡單的DNS解析服務。它能夠幫助您輕鬆實現基於DNS的服務發現,並防止應用程序耦合到特定於供應商的服務發現API。app

服務和元數據管理

Nacos提供了易於使用的服務儀表板,可幫助您管理服務元數據,配置,kubernetes DNS,服務運行情況和指標統計信息。負載均衡

Windows中Nacos下載及安裝

推薦下載穩定版本:Nacos1.3.1ide

下載地址:https://github.com/alibaba/nacos/releases/tag/1.3.1微服務

下載以後,進入bin目錄,cmd startup.cmd -m standalone啓動單機模式。

接着訪問:http://localhost:8848/nacos/,帳號密碼都是nacos

做爲服務註冊中心演示

新建服務模塊

新建模塊:cloudalibaba-provider-payment9001,引入依賴:

<!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

編寫yml配置

server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

management:
  endpoints:
    web:
      exposure:
        include: '*'

主啓動類

@EnableDiscoveryClient
@SpringBootApplication
public class PaymentMain9001 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain9001.class, args);
    }
}

Controller接口

@RestController
public class PaymentController {
    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") Integer id) {
        return "nacos registry, serverPort: " + serverPort + "\t id" + id;
    }
}

測試

啓動nacos,啓動9001服務,訪問localhost:8848/nacos

服務已經成功註冊進nacos註冊中心。

演示負載均衡

仿照9001模塊再建一個9002模塊,具體步驟就省略了,端口號改一改就能夠。接着依次啓動nacos,9001,9002,觀察nacos服務註冊中心的狀況:

nacos-payment-provider服務下包含了兩個實例。

新建消費者模塊

新建cloudalibaba-consumer-nacos-order83,依舊引入依賴:

<!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

nacos默認支持負載均衡:是由於該依賴已經集成ribbon,故自然支持。

編寫yml配置

server:
  port: 83


spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848


#消費者將要去訪問的微服務名稱(註冊成功進nacos的微服務提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider

主啓動類

@EnableDiscoveryClient
@SpringBootApplication
public class OrderNacosMain83 {
    public static void main(String[] args) {
        SpringApplication.run(OrderNacosMain83.class, args);
    }
}

Controller接口

@RestController
@Slf4j
public class OrderNacosController {
    @Resource
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")
    private String serverURL;

    @GetMapping(value = "/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id) {
        return restTemplate.getForObject(serverURL + "/payment/nacos/" + id, String.class);
    }

}

配置類

@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

測試一下

啓動nacos,80消費者,9001,9002服務提供模塊。

訪問:http://localhost:83/consumer/payment/nacos/1,將會輪詢訪問服務接口。

Nacos與其餘註冊中心對比

源碼下載

本系列文章爲《尚硅谷SpringCloud教程》的學習筆記【版本稍微有些不一樣,後續遇到bug再作相關說明】,主要作一個長期的記錄,爲之後學習的同窗提供示例,代碼同步更新到Gitee:https://gitee.com/tqbx/spring-cloud-learning,而且以標籤的形式詳細區分每一個步驟,這個系列文章也會同步更新。

相關文章
相關標籤/搜索