Spring Cloud入门 -- Eureka服务注册与发现(Hoxton.SR5版)

什么是Spring Cloud

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

来自百度百科声明

Eureka简介

Eureka 目前是 2.x 版本,并且官方已经宣布不再维护更新。不过其实 Eureka 已经很稳定了,当做注册中心完全没有问题。Spring Cloud 集成了 Eureka ,并做了完善的封装。方便我们使用 Spring boot 开发的时候简单配置就可以使用。

微服务框架中有三类角色,分别是注册中心、服务提供者、服务消费者,注册中心就是今天要说的主角 Eureka,这篇文章简单说明 Spring Cloud Eureka 的使用,模拟实现单点和高可用注册中心,并简单介绍服务提供者和服务消费者如何使用 Eureka 提供的服务注册和发现功能。

注册中心产品比较 

                                                                                  本图片来自于网图

微服务版本

SpringBoot:2.2.8.RELEASE

SpringCloud:Hoxton.SR5

搭建主工程:springcloud

创建springcloud主工程,用来放其他模块服务(子项目)。

步骤:File --> New --> Project --> Maven --> Next --> 填写包路径,项目名称 --> Next --> 修改pom.xml文件

创建Eureka服务端模块

创建Eureka服务端模块eureka-server,并将它放在刚刚上面创建的主工程之下

步骤:点击主工程springcloud --> 右键New --> Module --> Spring Initializer --> Next --> 填写Group 和 Artifact --> Next --> 选择Spring Cloud Discovery中的Eureka Server组件(也可不选,进行手动在pom.xml文件里添加)--> 在启动类上添加@EnableEurekaServer注解来启用Euerka注册中心功能 --> 在配置文件application.yml(application.properties)中添加Eureka注册中心的配置

手动创建Eureka Server组件

步骤:在eureka-server服务的 pom.xml文件 --> 找到对应的 <dependencies> (依赖关系)标签 --> 在标签内添加

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

在启动类上添加@EnableEurekaServer注解来启用Euerka注册中心功能

在配置文件application.yml(等价于application.properties)中添加Eureka注册中心的配置

PS:application.properties  文件和 application.yml 文件有什么区别呢?

1、yml文件的好处,树状结构,便于阅读,本质上跟properties功能是一样的。

2、加载顺序比较。application.properties优先于pplication.yml,两个文件同事存在取application.properties

server:
  # 设置端口号
  port: 8101

spring:
  application:
    # 设置服务名称
    name: eureka-server

eureka:
  instance:
    # 设置主机地址
    hostname: localhost
  client:
    # 指定是否从注册中心获取服务(注册中心不需要开启)
    fetch-registry: false
    # 指定是否将服务注册到注册中心(注册中心不需要开启)
    register-with-eureka: false

运行Eureka服务

方式一

右键选中启动类(EurekaServerApplication) --> run

方式二

按照下图一图二顺序执行 1 --> 2 --> 3 --> 4 (步骤四名字可以自取)

                                                                                              图一

                                                                                               图二

运行完成后访问地址http://localhost:8101/可以看到Eureka注册中心的界面

搭建Eureka集群

为什么要搭建Eureka注册中心集群?

因为以后我们所有服务都将会注册到注册中心去,假如eureka宕机了,则会导致无法服务之间的相互调用,导致系统大面积瘫痪,所以需要搭建eureka集群模式。

搭建三个Eureka注册中心

第一个Eureka注册中心的配置文件

server:
  # 设置端口号
  port: 8101

spring:
  application:
    # 设置服务名称
    name: eureka-server

eureka:
  instance:
    # 设置主机地址 (设置Active profiles)
    #(由于defaultZone使用了域名,所以还需在本机的host文件中配置一下;C:\Windows\System32\drivers\etc)
    # 127.0.0.1 cluster1
    # 127.0.0.1 cluster2
    # 127.0.0.1 cluster3
    hostname: cluster1
  client:
    # 指定是否从注册中心获取服务(注册中心如果是集群则开启)
    fetch-registry: false
    # 指定是否将服务注册到注册中心(注册中心如果是集群则开启)
    register-with-eureka: true
    service-url:
      # 两两相互注册
      defaultZone: http://cluster2:8102/eureka/,http://cluster3:8103/eureka/
  server:
    # 关闭自我保护模式
    enable-self-preservation: true
    # 清理服务间隔4s,默认60*10000
    eviction-interval-timer-in-ms: 4000

第二个Eureka注册中心的配置文件

server:
  # 设置端口号
  port: 8102

spring:
  application:
    # 设置服务名称
    name: eureka-server

eureka:
  instance:
    # 设置主机地址
    hostname: cluster2
  client:
    # 指定是否从注册中心获取服务(注册中心不需要开启)
    fetch-registry: false
    # 指定是否将服务注册到注册中心(注册中心不需要开启)
    register-with-eureka: true
    service-url:
      # 两两相互注册
      defaultZone: http://cluster1:8101/eureka/,http://cluster3:8103/eureka/
  server:
    # 关闭自我保护模式 (设置为true则在eureka界面上不显示:THE SELF PRESERVATION MODE IS TURNED OFF. THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.)
    enable-self-preservation: false
    # 清理服务间隔4s,默认60*10000
    eviction-interval-timer-in-ms: 4000

第三个Eureka注册中心的配置文件

server:
  # 设置端口号
  port: 8103

spring:
  application:
    # 设置服务名称
    name: eureka-server

eureka:
  instance:
    # 设置主机地址
    hostname: cluster3
  client:
    # 指定是否从注册中心获取服务(注册中心如果是集群则开启)
    fetch-registry: false
    # 指定是否将服务注册到注册中心(注册中心如果是集群则开启) 默认为true
    register-with-eureka: true
    service-url:
      defaultZone: http://cluster1:8101/eureka/,http://cluster2:8102/eureka/
  server:
    # 关闭自我保护模式
    enable-self-preservation: false
    # 清理服务间隔4s,默认60*10000
    eviction-interval-timer-in-ms: 4000

由于以上以上的三个注册中心相互注册中的defaultZone使用的域名,所以我们还需要在本机的host文件中配置如下设置

使用管理员模式修改host文件,host文件目录:C:\Windows\System32\drivers\etc。添加以下配置,然后保存退出

127.0.0.1 cluster1
127.0.0.1 cluster2
127.0.0.1 cluster3

运行Eureka集群

方式一:创建三份启动配置文件,并将active profiles修改对应的值

方式二:从原本的启动文件拷贝三份,并修改对应的active profiles

分别启动三个eureka-server

访问以下三个连接

http://replica1:8101/

http://replica1:8102/

http://replica1:8103/

结束语

如有什么写不好的地方,还请大家多多包涵,并给予指出,谢谢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值