springcloud框架的简单搭建(服务注册中心)

Java框架

浏览数:197

2019-5-25

AD:资源代下载服务

发现很多招聘都需要会springcloud,所以最近在学习springcloud。

必须要从零开始用IDEA搭建一下这个springcloud框架,本文是采用Eureka作为服务注册与发现的组件。

  1. 先用IDEA创建一个MAVEN项目。

    下一步需要填写GroupId和ArtifactId,这里按照自己的习惯去填写就好了。

    下一步选择项目位置和项目名称点击完成就可以了。
  2. 在该MAVEN项目下新建一个模块,这里就需要新建的是springboot了。

    这里选择的是spring initializr进行springboot的创建。

    还是要对Group和Artifact进行设置。

    点击下一步之后,我们需要选择Cloud Discovery下的Eureka Server,点击下一步然后点击完成就可以了。
  3. 现在我们需要对服务中心eureka-server进行一些相关的配置了。
    打开它的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>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.5.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.zhouxiaoxi</groupId>
        <artifactId>eureka-server</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>eureka-server</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
            <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    然后我们需要启动一个服务注册中心,这需要在springboot工程的启动application类上加一个注解@EnableEurekaServer:

    package com.zhouxiaoxi.eurekaserver;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaServerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaServerApplication.class, args);
        }
    
    }

    先将配置文件改为yml,然后进行相关的配置,如下:

    #端口号
    server:
      port: 8080
    
    eureka:
      instance:
        hostname: localhost
      client:
        #服务注册中心也会将自己作为客户端来尝试注册自己,为true(默认)时自动生效。
        registerWithEureka: false
        #检索服务选项,当设置为True(默认值)时,会进行服务检索,注册中心不负责检索服务。
        fetchRegistry: false
        #是一个默认的注册中心地址。配置该选项后,可以在服务中心进行注册。
        serviceUrl:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    
    spring:
      application:
        name: eurka-server
  4. 配置完成之后,启动项目,然后浏览器地址栏输入http://localhost:8080然后出现以下页面,表示注册中心搭建完毕。

  5. 接下来我们就需要创建一个服务提供者 (eureka-client)
    还是和上面一样新建一个模块,这次我们命名为eureka-client,然后选择依赖的时候有点区别:

    点击下一步知道完成就可以了。
  6. 核对一下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>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.5.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.zhouxiaoxi</groupId>
        <artifactId>eureka-client</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>eureka-client</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
            <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
  7. 我们这边也需要对启动类进行相关的注解添加:
    因为我们这边用的是eureka搭建的服务中心,所以我们这边还是用@EnableEurekaClient注解就可以了

    package com.zhouxiaoxi.eurekaclient;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    @SpringBootApplication
    @EnableEurekaClient
    //@EnableDiscoveryClient注解是基于spring-cloud-commons依赖,相当于一个公共的服务发现;
    //@EnableEurekaClient注解是基于spring-cloud-netflix依赖,只能为eureka作用;
    public class EurekaClientApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaClientApplication.class, args);
        }
    
    }
    
  8. 需要对配置文件进行相关的配置:

    server:
      port: 8081
    
    spring:
      application:
        name: eureka-client
    
    eureka:
      client:
        serviceUrl:
          #注明自己的服务注册中心的地址
          defaultZone: http://localhost:8080/eureka/
  9. 新建一个controller,然后写一个hello方法:

    package com.zhouxiaoxi.eurekaclient.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
    
        @Value("${server.port}")
        String port;
    
        @RequestMapping("/hello")
        public String home(@RequestParam(value = "name") String name) {
            return "hello " + name + " ,i am from port:" + port;
        }
    
    }
  10. 启动该工程之后,打开刚才的浏览器页面刷新后会发现一个服务已经注册在服务中了,服务名为EUREKA-CLIENT ,端口为8081:

    这时打开 http://localhost:8081/hello?name=world,你会在浏览器上看到 :

    hello world ,i am from port:8081

    至此,我们的一个较为完整的项目就搭建起来了。

  11. 不过我们还可以运行多个服务,这里有个小技巧了就:
    先打开IDEA右上角的编辑配置,如下图:

    然后找到我们刚才的工程,将允许并行运行给勾选上,应用并确定就可以了:

    找到该工程下的配置文件,将端口号进行修改后启动,就可以并行启动多个服务了:
    启动几个我们就会在注册中心的页面上看到几个服务。

    恩,先这样吧,后续再更新。。。

作者:周兆东