zoukankan      html  css  js  c++  java
  • 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上,大功告成!

  • 相关阅读:
    如何在 Linux 虚拟机上扩展根文件系统
    Linux 虚拟机中配置 GNOME + VNC
    在 Linux 中使用 Azure Premium 存储的基本优化指南
    如何为运行的 ARM Linux 启用 LAD2.3 版本的诊断扩展
    不要在构造函数中抛出异常
    vtk java
    富文本keditor的一些使用问题
    几个问题
    Java并发编程(十四)并发容器类
    FreeBSD编译安装emacs,不要用ports
  • 原文地址:https://www.cnblogs.com/zhuii/p/13489578.html
Copyright © 2011-2022 走看看