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

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

Eureka 介绍

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

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

角色分析

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项目

选择Eureka Server 依赖

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

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

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

application.properties

spring.application.name= Eureka server
server.port=8080
eureka.client.register-with-eureka=false
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给我们提供的可视化界面

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

  • 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:

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

eureka-b:

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

eureka-c:

spring.application.name= Eureka server
server.port=8082
eureka.instance.hostname=eureka-c
eureka.client.service-url.defaultZone=http://eureka-a:8080/eureka/,http://eureka-b:8081/eureka/
eureka.client.register-with-eureka=true
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实例试试

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

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

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

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

发布了22 篇原创文章 · 获赞 140 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/zzqaaasss/article/details/104314697