连载:1-spring-cloud-eureka

服务注册和发现Eureka
GitHub地址:https://github.com/NullPointer8023/eureka

一、什么是Eureka
1、和consul、zookeeper类似,eureka是一个用于服务注册和发现的组件。Eureka分为Eureka Server和Eureka Client,Eureka Service服务注册中心,Eureka Client为Eureka客户端。

Eureka和其他组件,比如负载均衡组件Ribbon、熔断器组件Hystrix、网关zuul相互配合,能够很容易实现服务注册、负载均衡、熔断和智能路由等功能,以上统称为Spring Cloud Netflix,是spring cloud微服务的核心组件,也是基础组件。

2、基本架构

  • Register Service:服务注册中心,它是一个Eureka Server,提供服务注册和发现功能。
  • Provider Service:服务提供者,它是一个Eureka Client,提供服务。
  • Consumer Service:服务消费者,它是一个Eureka Client,消费服务。

3、服务消费的基本过程
首先需要一个服务注册中心Eureka Server,服务提供者Eureka Client向服务注册中心Eureka Server注册,将自己的信息(服务名和服务IP地址等)通过REST API的形式提交给服务注册中心Eureka Server。同样,服务消费者Eureka Client也向服务注册中心Eureka Server注册,同时服务消费者获取一份服务注册列表的信息,该列表包含了所有向服务注册中心Eureka Server注册的服务信息。获取服务注册列表信息之后,服务消费者就知道服务提供者的IP地址,可以通过HTTP远程调度来消费服务提供者的服务。

二、编写Eureka Server
1、配置pom.xml
引入spring-cloud-starter-eureka-server

2、EurekaServerApplication入口主类
类上添加@EnableEurekaServer注解,开启Eureka Server的功能

3、application.properties
server.port=8761
eureka.instance.hostname=localhost
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
eureka.client.healthcheck.enabled=true
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

启动程序启动类,在浏览器上访问Eureka Server的主界面http://localhost:8761

三、编写Eureka Client
1、配置pom.xml
引入spring-cloud-starter-eureka

2、EurekaClientApplication入口主类
类上添加@EnableEurekaClient注解,开启Eureka Client的功能

3、application.properties
server.port: 8764
spring.application.name: eureka-client
eureka.client.serviceUrl.defaultZone=http://peer1:8761/eureka
eureka.client.healthcheck.enabled=true #注册中心健康检查
eureka.instance.lease-renewal-interval-in-seconds=2
eureka.instance.lease-expiration-duration-in-seconds=6

同时启动server、client程序启动类,在浏览器上访问Eureka Server的主界面http://localhost:8761,发现client已经注册到server中。

四、源码解析Eureka
Eureka的一些概念
1、Register—服务注册
当Eureka Client向Eureka Server注册时,Eureka Client提供自身的元数据,比如IP地址、端口、运行状况指标的Url、主页地址等信息。
2、Renew—服务续约
Eureka Client在默认的情况下会每隔30秒发送一次心跳来进行服务续约。通过服务续约来告知Eureka Server该Eureka Client仍然可用,没有出现故障。正常情况下,Server在90秒内没有收到Client的心跳,Server会将Client实例从注册列表中删除。【官方建议不要修改服务续约时间间隔】
3、Fetch Registries—获取服务注册列表信息
4、Cancel—服务下线
5、Eviction—服务剔除
默认情况下,当Client连续90秒没有向Server发送服务续约时,service会将服务实例从服务注册列表删除,即服务删除。

五、Eureka的高可用架构
架构中有两个角色,即Eureka Server和Eureka Client,而Eureka Client又分为Application Service和Application Client。
实际项目中,Eureka Server会承担非常高的负载,所以针对Eureka Server进行高可用集群。
服务集群化,彼此之间服务共享,可以通过搭建集群服务的方式,实现注册服务的高可用
1、application.properties
该配置采用多profile的格式
2、多server启动,模拟多服务提供
3、在client服务的properties中,将多个服务配置到defaultZone中
4、hosts文件中配置peer1、peer2、peer3的host
127.0.0.1 peer1 peer2 peer3
代码git地址【https://github.com/NullPointer8023/eureka】
在这里插入图片描述

六、搭建过程遇到的问题
1、Eureka Server的配置文件需要屏蔽自己注册自己的问题,添加如下配置:
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
2、访问地址:
http://peer1:8761而不是http://peer1:8761/eureka

猜你喜欢

转载自blog.csdn.net/zzzbbbjjj/article/details/84067358