SpringCloud踩坑笔记(二)-------Eureka

        Eureka:Spring Cloud 体系中最重要的组件之一,作用是服务的注册和发现。本文建立在上一篇文章《SpringCloud踩坑笔记(一)-------项目初建》 之上。

一、配置并运行 Eureka 服务

1. pom 中引入依赖 spring-cloud-starter-eureka-server

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

   2. application.yml 中声明配置,Eureka Server 以 8080 端口启动。

spring:
    application:
        name: spring-cloud-eureka
server:
    port: 8080
# eureka 配置    
eureka:
    client:
        # 表示是否将自己注册到Eureka Server,默认为true。因为本服务本身即为 Eureka Server,所以为 false
        register-with-eureka: false
        # 表示是否从Eureka Server获取注册信息,默认为true。单例运行为false,集群时为true
        fetch-registry: false
        # 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。
        serviceUrl:
            # 默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。
            defaultZone: http://localhost:8080/eureka/  

然后启动程序,再浏览器中输入 http://localhost:8080 即可访问,8080端口替换为你自己项目的启动端口。

上述配置中,将 register-with-eureka 设置为 false 之后,在管理后台中  Instances currently registered with Eureka 就看不到这个服务本身了。

二、Eureka 集群

        Eureka 作为很核心的服务,如果这个服务本身挂了,那么对整个 Spring Cloud 服务体系造成的影响是巨大的,所以有必要考虑 Eureka 的集群来保证运行的稳定性。

        Eureka 服务集群,其实说白了很简单,就是多运行几个 Eureka 服务,并且将他们相互注册服务而已。关键就是用到上面配置中的 serviceUrl.defaultZone。

        先把三个域名 client1.com, client2.com, client3.com 三个域名配置到 hosts 文件中(仅仅为了测试,真实情况下,填写服务实际运行的地址即可),为了便于查看,我们开启 register-with-eureka = true

        比如我把上面的Eureka服务,分别按照 8080, 8081, 8082 三个端口,启动三个实例,那么他们的 defaultZone 就分配配置为:

spring:
    application:
        name: spring-cloud-eureka

# client1 配置
server:
    port: 8080
eureka:
    instance:
        hostname: client1
    client:
        serviceUrl:
            defaultZone: http://client2.com:8081/eureka/,http://client3.com:8083/eureka/            
    
# client2 配置
---
spring:
    profiles: client2
server:
    port: 8081
eureka:
    instance:
        hostname: client2
    client:
        serviceUrl:
            defaultZone: http://client1.com:8080/eureka/,http://client3.com:8083/eureka/

# client3 配置
---
spring:
    profiles: client3
server:
    port: 8083
eureka:
    instance:
        hostname: client3
    client:
        serviceUrl:
            defaultZone: http://client1.com:8080/eureka/,http://client2.com:8081/eureka/  
java -jar spring-cloud-1.0.0.jar
java -jar spring-cloud-1.0.0.jar --spring.profiles.active=client2
java -jar spring-cloud-1.0.0.jar --spring.profiles.active=client3

然后在任意一台的 Eureka 服务的管理页面中,都能看到另外两台 Eureka 服务。比如登录 http://client1.com:8080 就能看到 client2 和 client3 

猜你喜欢

转载自blog.csdn.net/zxcvqwer19900720/article/details/85322836
今日推荐