美文网首页
Spring Cloud之Eureka(一)

Spring Cloud之Eureka(一)

作者: 某程序猿 | 来源:发表于2018-11-19 00:15 被阅读0次

    简介

    Netflix Eureka是由Netflix开源的一款基于REST的服务发现组件,包括Eureka Server和Eureka Client。
    单从命名就可以看出这个组件的作用。目前流行着很多服务发现组件,如consul、zookeeper等。各有各的特点,Eureka符合CAP理论中AP。

    Eureka Server

    基本Maven依赖

    创建顶级Maven工程,部分依赖如下:

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.5.RELEASE</version>
            <relativePath/>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</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>Finchley.SR2</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    

    Spring Cloud 版本选用目前最新的Finchley.SR2版本,对应SpringBoot 版本为2.0.5.RELEASE。

    创建EurekaServer的maven module,添加依赖:

    <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
        </dependencies>
    

    创建启动类:

    package personal.nathan;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    /**
     * Description:
     * <p>
     * Created by nathan.z on 18-7-4.
     */
    @SpringBootApplication
    @EnableEurekaServer
    public class Eureka {
        public static void main(String[] args) {
            SpringApplication.run(Eureka.class, args);
        }
    }
    
    

    两个关键注解@SpringBootApplication不多说,@EnableEurekaServer 这样就使服务成为了EurekaServer。
    添加配置信息:

    server:
      port: 8761
    eureka:
      instance:
        hostname: localhost
      client:
        fetch-registry: false
        register-with-eureka: false # 是否到eureka服務器中抓取註冊信息
      server:
        wait-time-in-ms-when-sync-empty: 0
        enable-self-preservation: false
    spring:
      application:
        name: eureka
    

    启动Eureka,然后在浏览器输入localhost:8761,如果能看到Eureka的管理界面的化,就表明启动成功。

    ErekaClient

    接下来搭建服务组件.
    maven 依赖:

    <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
        </dependencies>
    

    启动类:

    package personal.nathan;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    /**
     * Description:
     * <p>
     * Created by nathan.z on 18-11-18.
     */
    @SpringBootApplication
    @EnableDiscoveryClient
    public class DemoServiceApp {
        public static void main(String[] args) {
            SpringApplication.run(DemoServiceApp.class, args);
        }
    }
    

    关键注解@EnableDiscoveryClient,表示这个服务能被Eureka Server发现。
    配置信息:

    server:
      port: 9001
    eureka:
      instance:
        hostname: localhost
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka
    spring:
      application:
        name: demo-service1
    

    defaultZone 指定服务发现组件的地址,spring.application.name指定应用名称,在Eureka管理页面会显示。
    启动服务,刷新Eureka的管理页面,可以看到:


    Eureka.png

    可以从图中看到demoService1已经成功注册到了Eureka Server上。
    源码地址:https://github.com/nathanchoui/spring-cloud-study.git, feature/scf分支
    总结:基本的服务注册发现就完成了,谢谢,下一篇会讲eureka的rest api。

    相关文章

      网友评论

          本文标题:Spring Cloud之Eureka(一)

          本文链接:https://www.haomeiwen.com/subject/bpegfqtx.html