Spring Cloud入门笔记(一) Eureka 服务注册中心的搭建

雨点打透心脏的1/2处 2023-07-05 11:45 30阅读 0赞

本次笔记将记录微服务架构中最为关键的一个组件:注册中心。注册中心可以说是微服务架构的交通枢纽中心,所有服务与服务之间的调用和被调用都需要注册中心。本节主要记录什么是注册中心,以及如何搭建高可用的注册中心服务。

Eureka 介绍

Eureka 是 Netflix 公司开源的产品,它是一种基于 REST(Representational State Transfer)的服务,主要用于 AWS 云。Eureka 提供了完整的 Service Registry 和 Service Discovery 实现,也是 Spring Cloud 体系中最重要最核心的组件之一。——-百度百科

可以通过下面这张图来了解一下Eureka的使用场景:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p6cWFhYXNzcw_size_16_color_FFFFFF_t_70

角色分析

Eureka Server:担任了注册中心的角色,负责服务的注册与发现 。

Server Provider:服务的提供者者,将自身注册到Eureka Server中。

Server Consumer:服务的消费者,从Eureka Server中获取可用服务,用于远程调用。

搭建Eureka Server

Spring cloud 用Spring boot 对 Eureka进行了封装,所以我们只要在spring cloud项目中引入Eureka 对应的 Starter 包 spring-cloud-starter-netflix-eureka-server即可。

先建立一个Spring Initializr项目

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p6cWFhYXNzcw_size_16_color_FFFFFF_t_70 1

选择Eureka Server 依赖

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p6cWFhYXNzcw_size_16_color_FFFFFF_t_70 2

然后需要在启动类中添加@EnableEurekaServer注解开启Eureka Server

  1. @SpringBootApplication
  2. @EnableEurekaServer
  3. public class EurekaServerApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(EurekaServerApplication.class, args);
  6. }
  7. }

然后再配置文件中添加一些Eureka Server的一些基础配置。

application.properties

  1. spring.application.name= Eureka server
  2. server.port=8080
  3. eureka.client.register-with-eureka=false
  4. eureka.client.fetch-registry=false
  • spring.application.name ———-项目名称
  • server.port ———-项目启动端口号
  • eureka.client.register-with-eureka ———-表示是否将自己注册到Eureka Server中,默认值为true
  • eureka.client.fetch-registry ———-表示是否从Eureka Server中获取注册信息默认为true

启动Eureka

通过以上配置并成功启动项目后可以通过浏览器访问http://localhost:8080/即可看到 Eureka给我们提供的可视化界面

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p6cWFhYXNzcw_size_16_color_FFFFFF_t_70 3

从图中我们可以看到这个可视化界面分成了五大部分:

  • System Status,主要展示系统状态,比如启动时间等
  • DS Replicas,该服务从哪里同步数据
  • Instances currently registered with Eureka,当前在 Eureka注册 的实例列表
  • General Info,系统运行环境,比如内存、cpu 等
  • Instance Info,本服务的基础信息,比如 ip 地址,状态等

到此单个节点的注册中心已经搭建完成,下面我们来搭建高可用的注册中心。

搭建 Eureka Server集群

在实际的应用中,Eureka Server即使已经宕机,也不会影响服务之间的调用,因为在最开始,服务消费者从Eureka中读取到服务提供者列表缓存到了本地。但是如果服务提供者上下线会导致偏差,所以为了注册中心高可用,因此搭建 Eureka Server集群。

上面我们已经搭建了单个实例的Eureka,下面我们将上面这个实例复制三分并添加对应的配置即可。

复制三分,并分别命名eureka-a,eureka-b,eureka-c

配置文件分别如下:

eureka-a:

  1. spring.application.name= Eureka server
  2. server.port=8080
  3. eureka.instance.hostname=eureka-a
  4. eureka.client.service-url.defaultZone=http://eureka-b:8081/eureka/,http://eureka-c:8082/eureka/
  5. eureka.client.register-with-eureka=true
  6. eureka.client.fetch-registry=true
  7. eureka.client.service-url.defaultZone 指向其他服务的地址
  8. eureka.instance.hostname 相当于给服务起个别名

eureka-b:

  1. spring.application.name= Eureka server
  2. server.port=8081
  3. eureka.instance.hostname=eureka-b
  4. eureka.client.service-url.defaultZone=http://eureka-a:8080/eureka/,http://eureka-c:8082/eureka/
  5. eureka.client.register-with-eureka=true
  6. eureka.client.fetch-registry=true

eureka-c:

  1. spring.application.name= Eureka server
  2. server.port=8082
  3. eureka.instance.hostname=eureka-c
  4. eureka.client.service-url.defaultZone=http://eureka-a:8080/eureka/,http://eureka-b:8081/eureka/
  5. eureka.client.register-with-eureka=true
  6. eureka.client.fetch-registry=true

配置如上后我们需要将eureka-a eureka-b eureka-c 映射成对应的ip地址,否则他们之间不能通信,Windows环境下在C:\Windows\System32\drivers\etc\hosts文件中追加127.0.0.1 eureka-a eureka-b eureka-c 即可,linux下则在 /etc/hosts

然后启动项目,随便访问一个Eureka实例试试

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p6cWFhYXNzcw_size_16_color_FFFFFF_t_70 4

出现如上信息即可说明集群搭建成功!

如果出现了不可用的副本(unavailable-replicas),即可检查一下配置是否正确,相互注册是否开启开启配置如下

eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true

地址配置是否正确以及是否添加了host映射。

发表评论

表情:
评论列表 (有 0 条评论,30人围观)

还没有评论,来说两句吧...

相关阅读