Spring Cloud Alibaba系列(一)nacos作為服務註冊中心

来源:https://www.cnblogs.com/zhixie/archive/2020/05/08/12848317.html

Spring Cloud Alibaba各組件版本關係 | Spring Cloud Alibaba Version | Sentinel Version | Nacos Version | RocketMQ Version | Dubbo Version | Seata Version | | | ...


Spring Cloud Alibaba各組件版本關係

Spring Cloud Alibaba Version Sentinel Version Nacos Version RocketMQ Version Dubbo Version Seata Version
2.2.1.RELEASE 1.7.1 1.2.1 4.4.0 2.7.6 1.1.0
2.2.0.RELEASE 1.7.1 1.1.4 4.4.0 2.7.4.1 1.0.0
2.1.2.RELEASE or 2.0.2.RELEASE 1.7.1 1.2.1 4.4.0 2.7.6 1.1.0
2.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE 1.7.0 1.1.4 4.4.0 2.7.3 0.9.0
2.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE 1.6.3 1.1.1 4.4.0 2.7.3 0.7.1

畢業版本依賴關係

Spring Cloud Version Spring Cloud Alibaba Version Spring Boot Version
Spring Cloud Hoxton.SR3 2.2.1.RELEASE 2.2.5.RELEASE
Spring Cloud Hoxton.RELEASE 2.2.0.RELEASE 2.2.X.RELEASE
Spring Cloud Greenwich 2.1.2.RELEASE 2.1.X.RELEASE
Spring Cloud Finchley 2.0.2.RELEASE 2.0.X.RELEASE
Spring Cloud Edgware 1.5.1.RELEASE 1.5.X.RELEASE

這次項目中我們用的alibaba版本是2.2.1.REALEASE,因此各組件的版本與之對應,在實際應用中請務必使用與Spring Cloud Alibaba版本相對應的Spring Cloud版本和Spring Boot版本。

什麼是nacos

在spring cloud版本中我們使用eureka、consul等做為服務註冊中心,使用spring cloud config做為配置中心。而在spring cloud alibaba中,使用nacos組件即可完成服務註冊發現與服務配置兩大功能。

安裝nacos

下載地址:https://github.com/alibaba/nacos/releases

nacos支持的三種模式:

  • 單機模式 - 用於測試和單機試用。
  • 集群模式 - 用於生產環境,確保高可用。
  • 多集群模式 - 用於多數據中心場景。

下載完成後解壓,我們發現有兩個啟動文件,stratup.cmd 和 startup.sh。打開這兩個文件我們發現startup.cmd預設支持的是單機模式,startup.sh預設支持的是集群模式。

我們雙擊運行startup.cmd。

  • nacos預設埠是:8848
  • 預設用戶名:nacos
  • 預設密碼:nacos

訪問http://127.0.0.1:8848/nacos/index.html,如果出現以下界面則安裝正常。

註冊一個服務到nacos

  1. 新建一個服務,在pom中加入必要的依賴
  <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.2.5.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <dependencyManagement>
    <dependencies>
      <!--Spring cloud Hoxton.SR3-->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Hoxton.SR3</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--Spring cloud alibaba 2.1.0.RELEASE-->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2.2.1.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
  </dependencies>
  1. 在application.yml中配置服務名稱和nacos地址
server:
  port: 9001
spring:
  application:
    name: nacos-discovery-server
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
  1. 提供一個介面
@SpringBootApplication
public class NacosDiscoveryServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosDiscoveryServerApplication.class, args);
    }
    @RestController
    static class TestController {
        @GetMapping("/hello")
        public String hello(@RequestParam String name) {
            return "hello,nacos discovery! " + name;
        }
    }
}
  1. 啟動服務,控制台列印以下內容,就說明註冊成功了。
2020-04-28 14:49:42.749  INFO 9864 --- [           main] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, DEFAULT_GROUP nacos-discovery-server 192.168.9.114:9001 register finished
  1. 打開nacos控制台,我們可以在服務列表中發現我們的服務了。

註意事項

  1. 為什麼我們的啟動類上沒有加@EnableDiscoveryClient註解,但是已經把服務註冊到nacos上了?

    在springcloud E版本的時候,對服務註冊進行了優化,在依賴了spring-cloud-starter-alibaba-nacos-discovery之後,預設會將服務註冊到註冊中心。

  2. 在已經依賴spring-cloud-starter-alibaba-nacos-discovery的情況下,如果我們不想讓我們的服務註冊到nacos應該怎麼做?

    在配置文件中添加如下依賴即可:

spring:
  cloud:
    nacos:
      discovery:
        enabled: false

代碼示例


您的分享是我們最大的動力!

更多相關文章
  • 效果圖 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> <link rel="stylesheet" href="css/style.css"> </head ...
  • 本文詳細闡述了Vue的watch、函數式組件、非同步更新、非同步組件、批量導入等高級特性 ...
  • 效果圖 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> <link rel="stylesheet" href="css/reset.css"> <link ...
  • 問題原因:參考element-ui文檔: W3C 標準中有如下規定: When there is only one single-line text input field in a form, the user agent should accept Enter in that field as ...
  • 效果圖 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> <link rel="stylesheet" href="css/style.css"> </head ...
  • 效果圖 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> <link rel="stylesheet" href="https://cdn.bootcss.co ...
  • SPI服務發現機制 SPI是Java JDK內部提供的一種服務發現機制。 SPI Service Provider Interface,服務提供介面,是Java JDK內置的一種服務發現機制 通過在ClassPath路徑下的META INF/services文件夾查找文件,自動載入文件里所定義的類 ...
  • 軟體設計七大原則 1、 開閉原則 定義:一個軟體實體,如類、模塊和函數應該對擴展開放,對修改關閉。中心思想:用抽象構建框架,用實現擴展細節。即面向抽象編程。優點:提高軟體系統的可復用性和可維護性。舉例:很多互聯網公司實行彈性制考勤,每天上班8小時,這是不可修改的,但是什麼時間上班和下班,是開放的。 ...
一周排行
  • 文章篇幅較長,閱讀完大概20min,建議收藏閱讀, 讀完會有收穫。歡迎點贊關註 原文鏈接:https://www.softwaretestinghelp.com/types-of-software-testing/ 有多少軟體測試類型呢? 我們作為測試人員瞭解很多種不同的軟體測試類型,例如功能測試( ...
  • 過場CG: 接到公司領導的文件指示,“小熊”需要在6月底去海外執行一個行動代號為【定時任務】的營救計劃,這個計劃關係到公司某個項目的生死(數據安全漏洞),作戰部擬定兩個作戰方案: 方案一:使用務定時任務框架quartz; 方案二:使用windows Service服務。 最終的作戰方案為:兩者配套使 ...
  • 為什麼編寫TaskSchedulerEx類? 因為.NET預設線程池只有一個線程池,如果某個批量任務一直占著大量線程,甚至耗盡預設線程池,則會嚴重影響應用程式域中其它任務或批量任務的性能。 特點: 1、使用獨立線程池,線程池中線程分為核心線程和輔助線程,輔助線程會動態增加和釋放,且匯流排程數不大於參數 ...
  • 前幾天,公眾號後臺有朋友在問Core的中間件,所以專門抽時間整理了這樣一篇文章。 一、前言 中間件(Middleware)最初是一個機械上的概念,說的是兩個不同的運動結構中間的連接件。後來這個概念延伸到軟體行業,大家把應用操作系統和電腦硬體之間過渡的軟體或系統稱之為中間件,比方驅動程式,就是一個典型 ...
  • 參考文檔: https://www.cnblogs.com/liaods/p/10101513.html https://www.cnblogs.com/zyz-Notes/p/12030281.html 本示例使用MVC項目做演示(不推薦,推薦直接用WebAPI),框架版本使用 4.6.2 為了支 ...
  • 引用NModbus 在NuGet搜索NModbus,添加引用。 封裝ModbusTcp類 public class ModbusTCP { private ModbusFactory modbusFactory; private IModbusMaster master; private TcpCl ...
  • 系列文章 基於 abp vNext 和 .NET Core 開發博客項目 - 使用 abp cli 搭建項目 基於 abp vNext 和 .NET Core 開發博客項目 - 給項目瘦身,讓它跑起來 基於 abp vNext 和 .NET Core 開發博客項目 - 完善與美化,Swagger登場 ...
  • Microsoft.AspNetCore.Mvc.Versioning //引入程式集 .net core 下麵api的版本控製作用不需要多說,可以查閱https://www.cnblogs.com/dc20181010/p/11313738.html 普通的版本控制一般是通過鏈接、header此類 ...
  • 結合 AOP 輕鬆處理事件發佈處理日誌 Intro 前段時間,實現了 EventBus 以及 EventQueue 基於 Event 的事件處理,但是沒有做日誌(EventLog)相關的部分,原本想增加兩個介面, 處理事件發佈日誌和事件處理日誌,最近用了 AOP 的思想處理了 EntityFrame ...
  • 什麼是sam 轉換 Single Abstract Method 實際上這是java8中提出的概念,你就把他理解為是一個方法的介面的就可以了 看一下我們每天都在使用的線程池 ExecutorService executorService= Executors.newScheduledThreadPo ...