Spring Cloud Alibaba---服務註冊、發現、管理中心Nacos

前言


Spring Cloud存在Spring Cloud1.x和Spring Cloud2.x版本,目前主流使用2.x版本,由於服務註冊組件eureka的中止維護,因此目前不少公司都開始使用其餘的替代方案,而阿里系的Spring-Cloud-Alibaba成了微服務生態一個主流解決方案。目前我所在公司也準備使用阿里這套方案進行微服務開發。本文主要介紹服務註冊中心nacos的使用入門html

概念


什麼是Nacos?


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

  • 服務發現和服務健康監測
    Nacos 支持基於 DNS 和基於 RPC 的服務發現。服務提供者使用 原生SDK、OpenAPI、或一個獨立的Agent TODO註冊 Service 後,服務消費者可使用DNS TODO 或HTTP&API查找和發現服務。

    Nacos 提供對服務的實時的健康檢查,阻止向不健康的主機或服務實例發送請求。Nacos 支持傳輸層 (PING 或 TCP)和應用層 (如 HTTP、MySQL、用戶自定義)的健康檢查。 對於複雜的雲環境和網絡拓撲環境中(如 VPC、邊緣網絡等)服務的健康檢查,Nacos 提供了 agent 上報模式和服務端主動檢測2種健康檢查模式。Nacos 還提供了統一的健康檢查儀表盤,幫助您根據健康狀態管理服務的可用性及流量

  • 動態配置服務
    Nacos提供對服務的動態配置,即支持動態修改服務配置文件application.yml中的屬性,利用此特性咱們能夠動態配置Spring Cloud Gateway動態路由。

快速安裝

  • 安裝運行Nacos
    安裝教程查看nacos官網,推薦使用編譯後壓縮包安裝方式,本身編譯可能報錯。
    安裝之後運行或關閉軟件:
    Windows直接運行startup.cmdshutdown.cmd
    linux中執行腳本sh startup.sh -m standalonesh shutdown.sh
  • 檢測安裝
    訪問http://ip:port/nacos,打開nacos後臺主頁說明安裝成功

整合Spring Cloud生態


  • 啓動服務發現
    服務註冊實現:新建項目provider,添加依賴spring-cloud-starter-alibaba-nacos-discovery
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
複製代碼

  在啓動類加上註解@EnableDiscoveryClientspring

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {

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

}
複製代碼

  配置application.yml文件bootstrap

spring:
  application:
    name: service-provider
  cloud:
    nacos:
      discovery:
        server-addr: 10.0.0.205:8848


server:
  port: 9005

feign:
  sentinel:
    enabled: true
複製代碼

配置結束,啓動provider,查看nacos管理後臺查看服務是否註冊成功(被檢測到)bash

   

  • 啓動服務配置
      Spring Cloud Alibaba Nacos ConfigSpring Cloud Config ServerClient 的替代方案,客戶端和服務器上的概念與 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的bootstrap 階段,配置被加載到Spring 環境中。當應用程序經過部署管道從開發到測試再到生產時,您能夠管理這些環境之間的配置,並確保應用程序具備遷移時須要運行的全部內容
      服務配置功能讓咱們能夠經過Nacos後臺去修改微服務配置文件或者在此處來寫,無需重啓項目。咱們以provider爲例來檢測Nacos服務配置的強大功能。
    此處咱們以獲取配置文件中nanshen.name的值爲例

  一、服務端初始化
  在Nacos配置管理列表裏添加一個服務配置:服務器

配置好之後點擊發布便可!
  二、客戶端初始化
  由於咱們已經把服務配置放到Nacos上進行動態管理,因此咱們就不須要在服務中去維護配置文件application.yml了,咱們能夠把它刪除掉,可是存在一個問題,個人微服務怎麼去發現Nacos中的配置呢,因此此時咱們仍然須要一個bootstrap.properties配置文件用於識別Nacos中所在服務器中的配置文件。網絡

  三、測試配置
  編寫一個接口返回配置文件中user.name值:此處須要使用 ConfigurableApplicationContext類,不能使用 @Value註解讀取,由於 @Value爲一次性讀取,讀取一次後會把數據存到內存,不會再去讀取配置環境中的值,因此若是要實現動態配置的話就不能使用 @Value註解。

@RestController
public class TestController {

    @Autowired
    private ConfigurableApplicationContext configurableApplicationContext;

    @GetMapping("/get_name")
    public String getNanShenName(){
        String username=configurableApplicationContext.getEnvironment().getProperty("user.name");
        return username;
    }
}
複製代碼

  測試動態配置:在Nacos對應的配置文件中修改user.name值爲nanshen,而後發佈,能夠在微服務後臺日誌看到user.name值被修改。

如圖能夠看到實現了動態修改配置文件功能,此功能對於網關動態路由技術有很是大的意義。app

示例源碼更新中...ide

相關文章
相關標籤/搜索