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映射。
还没有评论,来说两句吧...