微服务--SpringCloud--Eureka
整理记录一下学习的知识!
一.简介
SpringCloud Eureka是什么?
SpringCloud Eureka是微服务中的服务注册与发现组件;
是基于Netfix Eureka做的二次封装;
由两个组件组成:
-- Eureka Server 注册中心
-- Eureka Client 服务注册 (微服务中的其他模块作为客户端注册到Eureka Server)
为什么要使用服务注册中心?
1.传统的访问服务需要使用ip:端口的方式,如果只有一个服务看不出什么问题;如果服务有很多个,那么这样是难以维护的。
2.如果搭建集群,服务之间的负载均衡策略需要自己搭建。
使用服务注册中心后服务中心会根据项目名保存服务的地址,服务调用者调用服务时只需要根据服务名调用即可。
服务注册中心常见的有Eureka、Nacos、Zookeeper、Cousul,在本章中只记录Eureka。
二.Eureak服务端搭建
1.创建一个Maven项目,加入以下依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
2.在启动类加上以下注解,表示启动Eureka服务注册中心
@EnableEurekaServer
3.配置文件
# 应用名称 spring: application: name: eureka server: port: 8761 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ register-with-eureka: false #禁止把自己当做服务注册 server: enable-self-preservation: false #关闭自我保护机制
一个服务注册中心就搭建好了,启动项目,浏览器访问:localhost:8761即可看到以下界面
红色字体是关闭了自我保护模式的警告。
三.Eureka客户端实现
1. 同样创建Maven项目,添加以下依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
2. 启动类上添加以下注解,表示启动一个Eureka客户端
@EnableDiscoveryClient
3.配置文件
# 应用名称 spring: application: name: eureka-client eureka: client: service-url: defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka
4.启动项目,访问之前启动的Eureka服务端
可以看到Application处增加了一个客户端应用。
四.如何搭建一个集群高可用的Eureka服务
为什么要搭建集群Eureka服务
因为Eureka也是一个服务,也会有挂掉的时候,所以需要搭建一个集群环境来保障服务能稳定的运行。
创建多个Eureka服务让他们之间两两注册。
1.修改本地的host映射文件
127.0.0.1 eureka1
127.0.0.1 eureka2
127.0.0.1 eureka3
2.创建三个Eureka服务,配置文件分别如下所示:
# 应用名称 spring: application: name: eureka1 server: port: 8761 eureka: client: service-url: defaultZone: http://eureka2:8762/eureka,http://eureka3:8763/eureka # defaultZone: http://eureka1:8761 register-with-eureka: false #禁止把自己当做服务注册 fetch-registry: false #不检索服务 server: enable-self-preservation: false #自我保护机制 如果客户端实例经常切换,开启自我保护机制后,实例不会删除,导致部分请求会连接不存在的实例 instance: hostname: eureka1
# 应用名称 spring: application: name: eureka2 server: port: 8762 eureka: client: service-url: defaultZone: http://eureka1:8761/eureka,http://eureka3:8763/eureka register-with-eureka: false #禁止把自己当做服务注册 fetch-registry: false #不检索服务 server: enable-self-preservation: false #自我保护机制 如果客户端实例经常切换,开启自我保护机制后,实例不会删除,导致部分请求会连接不存在的实例 instance: hostname: eureka2
# 应用名称 spring: application: name: eureka3 server: port: 8763 eureka: client: service-url: defaultZone: http://eureka1:8761/eureka,http://eureka2:8762/eureka register-with-eureka: false #禁止把自己当做服务注册 fetch-registry: false #不检索服务 server: enable-self-preservation: false #自我保护机制 如果客户端实例经常切换,开启自我保护机制后,实例不会删除,导致部分请求会连接不存在的实例 instance: hostname: eureka3
3. 启动项目,访问三个服务
eureka1:
eureka2:
eureka3:
可以看到每个服务之间都是两两注册的
五.小结
第四节中启动方式有很多,可以创建三个Eurek服务,可以打三个jar包,也可在idea中修改配置文件启动多个项目。
本文来自博客园,作者:EchoLv,转载请注明原文链接:https://www.cnblogs.com/lvdeyinBlog/p/15605734.html