Spring Cloud Alibaba系列(一)nacos做爲服務註冊中心

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版本。html

什麼是nacos

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

安裝nacos

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

nacos支持的三種模式:github

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

下載完成後解壓,咱們發現有兩個啓動文件,stratup.cmd 和 startup.sh。打開這兩個文件咱們發現startup.cmd默認支持的是單機模式,startup.sh默認支持的是集羣模式。spring

咱們雙擊運行startup.cmd。app

  • nacos默認端口是:8848
  • 默認用戶名:nacos
  • 默認密碼:nacos

訪問http://127.0.0.1:8848/nacos/index.html,若是出現如下界面則安裝正常。spring-boot

註冊一個服務到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應該怎麼作?code

    在配置文件中添加以下依賴便可:

spring:
  cloud:
    nacos:
      discovery:
        enabled: false

代碼示例

相關文章
相關標籤/搜索