简单学习Spring-Cloud-Eureka

Eureka是 Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是spring-cloud体系中最重要最核心的组件之一。

背景介绍

Eureka是Netflix开源的产品,这家公司的开源组件已经经过多年的生产实战验证,稳定性自然不必说,Spring-Cloud-Netflix-EurekaSpring-Cloud对Netflix的Eureka的封装,它包含两部分:服务端、客户端。其中服务端是作为一个服务中心用来注册客户端服务,对注册进来的服务进行管理。

在微服务架构中这个注册发现服务中心无论在哪里都是必不可少的服务,Dubbo中有zookeeperNacosRedis等,Eureka就是Spring-Cloud中使用较广的服务中心。

微服务架构中使用注册中心与不使用注册中心的区别就跟找房子时找中介跟自己去找的区别,想必找过房子的各位都深有体会吧!

案例实践

本案例使用Spring-Cloud Hoxton.SR5 版本

Eureka-Server

要在Spring-Cloud中使用Eureka首先需要引入它的依赖。

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

然后在启动类中添加@EnableEurekaServer注解

@EnableEurekaServer
@SpringBootApplication
public class SpringCloudEurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaApplication.class, args);
    }

}

最后配置服务,默认配置中Eureka会将自己也注册到注册中心,我们可以通过以下配置来禁用这个行为

spring:
  application:
    name: spring-cloud-eureka
server:
  port: 8000
eureka:
  client:
    register-with-eureka: false #表示是否将自己注册到Eureka Server,默认为true。
    fetch-registry: false # 表示是否从Eureka Server获取注册信息,默认为true。
    service-url:
      #设置与Eureka Server交互的地址,默认是8761端口
      defaultZone: http://localhost:${server.port}/eureka/

这样配置启动后就可以看到以下页面,其上没有任何已注册的服务。
Eureka注册中心页面

Eureka集群

上面的是单个的Eureka服务,但是作为注册中心,所有的服务调用都要通过它来调度,如果Eureka挂掉了,那么整个服务也就不可用了。这很显然是不行的,所以就需要我们给它配置集群的形式,达到一台服务挂掉还有其他的服务来替代它。
Eureka可以通过互相注册的方式来实现高可用的集群部署,我们这里配置三台服务作为示例,更多台服务是一样的原理。

我们可以通过三个配置文件,分别是application-peer1.ymlapplication-peer2.ymlapplication-peer3.yml。关于SpringBoot配置文件规则还不熟悉的可以看SpringBoot配置文件详解了解下。

application-peer1.yml

spring:
  application:
    name: spring-cloud-eureka
server:
  port: 8000
eureka:
  client:
  	register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/
  instance:
    hostname: peer1

application-peer2.yml

spring:
  application:
    name: spring-cloud-eureka
server:
  port: 8001
eureka:
  client:
  	register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/
  instance:
    hostname: peer2

application-peer3.yml

spring:
  application:
    name: spring-cloud-eureka
server:
  port: 8002
eureka:
  client:
  	register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://peer2:8001/eureka/,http://peer1:8000/eureka/
  instance:
    hostname: peer3

然后修改hosts文件,在文件中添加

127.0.0.1           peer1
127.0.0.1           peer2
127.0.0.1           peer3
idea多实例启动

使用idea编辑器的可以在运行的设置中开启多实例以及每次启动时添加--spring.profiles.active=peer1--spring.profiles.active=peer2--spring.profiles.active=peer3参数。(如下图所示)

启动设置
使用其他idea的可以打成jar包,使用命令行启动时添加java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1参数方式依次启动。

启动完后,访问http://localhost:8000/就可以看到下面的页面
集群式Eureka页面
至此Eureka的集群配置已经完成,关于Eureka的部份也就结束了,接下来就是配合Eureka-Client以及Feign来实现微服务之间的调用。

下一篇:Spring-Cloud-Eureka-Client 服务调用

文章参考

纯洁的微笑:springcloud(二):注册中心Eureka

案例源码

码云:spring-cloud-demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值