SpringCloud+Nacos整合


  之前在公司用過SpringCloud Netflix,但是由於這個Eureka很久都沒更新維護了,再加上網上Nacos評價很好,於是想用Nacos做注冊中心搭一個SpringCloudDemo,話不多說,現在開始吧~

一、Nocas

  Nocas和Eureka不一樣,Eureka需要在Cloud目錄下新建一個EurekaServer,然后啟動Application。Nocas就簡單很多了,下載一個實例啟動就好了。

  1. 可以從GitHub上拉取源碼啟動:

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

  需要注意的是,Nacos官方已經給出了運行環境要求,所以最好是環境滿足要求,不然可能會出些奇奇怪怪的問題~

Nacos 依賴 Java 環境來運行。如果您是從代碼開始構建並運行Nacos,還需要為此配置 Maven環境,請確保是在以下版本環境中安裝使用:

64 bit OS,支持 Linux/Unix/Mac/Windows,推薦選用 Linux/Unix/Mac。 64 bit JDK 1.8+;下載 & 配置。 Maven 3.2.x+;下載 & 配置。

   2. 也可以下載免安裝包啟動,下載地址:https://github.com/alibaba/nacos/tags

   在我們下載完成后,解壓,雙擊bin目錄下的startup.cmd,等一會兒就啟動好了。

  

   然后我們打開瀏覽器,在網址欄輸入http://localhost:8848/nacos,輸入默認的賬號密碼,nacos/nacos,就進入到了注冊中心后台管理界面。

   

  關於Nacos更多的東西,就不說啦,本博客只講如何在SpringCloud里使用Nacos進行注冊。

二、SpringCloudDemo

  先給出博主的Demo目錄結構,Auth認證和GateWay網關暫還未做任何配置,只是在usercenter里做了一個測試。

       

 

  那么是如何創建出這個目錄結構的呢?首先創建一個maven工程。

          

 

   再然后右鍵這個工程,選擇Module即可。

              

  在父pom.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>cloud</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>gateway</module>
        <module>auth</module>
        <module>usercenter</module>
    </modules>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-boot.version>2.2.8.RELEASE</spring-boot.version>
        <spring-cloud.version>2.2.2.RELEASE</spring-cloud.version>
        <spring-nacos.version>2.2.1.RELEASE</spring-nacos.version>
        <apache-httpcomponents.version>4.5.11</apache-httpcomponents.version>
        <jackson.version>2.10.0</jackson.version>
    </properties>

</project>

  usercenter的pom.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>usercenter</artifactId>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${spring-boot.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>${spring-boot.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>${spring-nacos.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-commons -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-commons</artifactId>
            <version>${spring-cloud.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>${apache-httpcomponents.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>${jackson.version}</version>
        </dependency>
    </dependencies>
</project>

  然后在usercenter里創建Application。注意,這里加了@SpringBootApplication和@EnableDiscoveryClient,不要偷懶換成@SpringCloudApplication!!!雖然@SpringCloudApplication注解里包含@SpringBootApplication和@EnableDiscoveryClient,不過它也包含@EnableCircuitBreaker注解。@EnableCircuitBreaker是斷路器的,如果你引用@SpringCloudApplication注解,那么maven需要引入hystrix的JAR包和配置包,很麻煩!!!

package zh;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;


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

  在resources/application.yml里添加配置信息:

server:
  port: 3005 # 服務端口
spring:
  application:
    name: usercenter  #服務名稱
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848 #注冊到Nacos

  然后寫一個測試用例:

package zh.api;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("login")
@RestController
public class LoginApi {

    @RequestMapping("/test")
    public String test(){
        System.out.println("test ok");
        return "test ok";
    }
}

  啟動UserCenterApplication!

  在網址欄輸入http://localhost:3005/login/test,即可看到返回值 test ok 字樣,同時Nacos服務列表也出現了該模塊。

 

   Ok,到此為止,就已經成功的把模塊注冊到了Nacaos上,大功告成!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM