什么是Spring Cloud
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Eureka简介
Eureka 目前是 2.x 版本,并且官方已经宣布不再维护更新。不过其实 Eureka 已经很稳定了,当做注册中心完全没有问题。Spring Cloud 集成了 Eureka ,并做了完善的封装。方便我们使用 Spring boot 开发的时候简单配置就可以使用。
微服务框架中有三类角色,分别是注册中心、服务提供者、服务消费者,注册中心就是今天要说的主角 Eureka,这篇文章简单说明 Spring Cloud Eureka 的使用,模拟实现单点和高可用注册中心,并简单介绍服务提供者和服务消费者如何使用 Eureka 提供的服务注册和发现功能。
注册中心产品比较
本图片来自于网图
微服务版本
SpringBoot:2.2.8.RELEASE
SpringCloud:Hoxton.SR5
搭建主工程:springcloud
创建springcloud主工程,用来放其他模块服务(子项目)。
步骤:File --> New --> Project --> Maven --> Next --> 填写包路径,项目名称 --> Next --> 修改pom.xml文件
创建Eureka服务端模块
创建Eureka服务端模块eureka-server,并将它放在刚刚上面创建的主工程之下
步骤:点击主工程springcloud --> 右键New --> Module --> Spring Initializer --> Next --> 填写Group 和 Artifact --> Next --> 选择Spring Cloud Discovery中的Eureka Server组件(也可不选,进行手动在pom.xml文件里添加)--> 在启动类上添加@EnableEurekaServer注解来启用Euerka注册中心功能 --> 在配置文件application.yml(application.properties)中添加Eureka注册中心的配置
手动创建Eureka Server组件
步骤:在eureka-server服务的 pom.xml文件 --> 找到对应的 <dependencies> (依赖关系)标签 --> 在标签内添加
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
在启动类上添加@EnableEurekaServer注解来启用Euerka注册中心功能
在配置文件application.yml(等价于application.properties)中添加Eureka注册中心的配置
PS:application.properties 文件和 application.yml 文件有什么区别呢?
1、yml文件的好处,树状结构,便于阅读,本质上跟properties功能是一样的。
2、加载顺序比较。application.properties优先于pplication.yml,两个文件同事存在取application.properties
server:
# 设置端口号
port: 8101
spring:
application:
# 设置服务名称
name: eureka-server
eureka:
instance:
# 设置主机地址
hostname: localhost
client:
# 指定是否从注册中心获取服务(注册中心不需要开启)
fetch-registry: false
# 指定是否将服务注册到注册中心(注册中心不需要开启)
register-with-eureka: false
运行Eureka服务
方式一
右键选中启动类(EurekaServerApplication) --> run
方式二
按照下图一图二顺序执行 1 --> 2 --> 3 --> 4 (步骤四名字可以自取)
图一
图二
运行完成后访问地址http://localhost:8101/可以看到Eureka注册中心的界面
搭建Eureka集群
为什么要搭建Eureka注册中心集群?
因为以后我们所有服务都将会注册到注册中心去,假如eureka宕机了,则会导致无法服务之间的相互调用,导致系统大面积瘫痪,所以需要搭建eureka集群模式。
搭建三个Eureka注册中心
第一个Eureka注册中心的配置文件
server:
# 设置端口号
port: 8101
spring:
application:
# 设置服务名称
name: eureka-server
eureka:
instance:
# 设置主机地址 (设置Active profiles)
#(由于defaultZone使用了域名,所以还需在本机的host文件中配置一下;C:\Windows\System32\drivers\etc)
# 127.0.0.1 cluster1
# 127.0.0.1 cluster2
# 127.0.0.1 cluster3
hostname: cluster1
client:
# 指定是否从注册中心获取服务(注册中心如果是集群则开启)
fetch-registry: false
# 指定是否将服务注册到注册中心(注册中心如果是集群则开启)
register-with-eureka: true
service-url:
# 两两相互注册
defaultZone: http://cluster2:8102/eureka/,http://cluster3:8103/eureka/
server:
# 关闭自我保护模式
enable-self-preservation: true
# 清理服务间隔4s,默认60*10000
eviction-interval-timer-in-ms: 4000
第二个Eureka注册中心的配置文件
server:
# 设置端口号
port: 8102
spring:
application:
# 设置服务名称
name: eureka-server
eureka:
instance:
# 设置主机地址
hostname: cluster2
client:
# 指定是否从注册中心获取服务(注册中心不需要开启)
fetch-registry: false
# 指定是否将服务注册到注册中心(注册中心不需要开启)
register-with-eureka: true
service-url:
# 两两相互注册
defaultZone: http://cluster1:8101/eureka/,http://cluster3:8103/eureka/
server:
# 关闭自我保护模式 (设置为true则在eureka界面上不显示:THE SELF PRESERVATION MODE IS TURNED OFF. THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.)
enable-self-preservation: false
# 清理服务间隔4s,默认60*10000
eviction-interval-timer-in-ms: 4000
第三个Eureka注册中心的配置文件
server:
# 设置端口号
port: 8103
spring:
application:
# 设置服务名称
name: eureka-server
eureka:
instance:
# 设置主机地址
hostname: cluster3
client:
# 指定是否从注册中心获取服务(注册中心如果是集群则开启)
fetch-registry: false
# 指定是否将服务注册到注册中心(注册中心如果是集群则开启) 默认为true
register-with-eureka: true
service-url:
defaultZone: http://cluster1:8101/eureka/,http://cluster2:8102/eureka/
server:
# 关闭自我保护模式
enable-self-preservation: false
# 清理服务间隔4s,默认60*10000
eviction-interval-timer-in-ms: 4000
由于以上以上的三个注册中心相互注册中的defaultZone使用的域名,所以我们还需要在本机的host文件中配置如下设置
使用管理员模式修改host文件,host文件目录:C:\Windows\System32\drivers\etc。添加以下配置,然后保存退出
127.0.0.1 cluster1
127.0.0.1 cluster2
127.0.0.1 cluster3
运行Eureka集群
方式一:创建三份启动配置文件,并将active profiles修改对应的值
方式二:从原本的启动文件拷贝三份,并修改对应的active profiles值
分别启动三个eureka-server
访问以下三个连接
结束语
如有什么写不好的地方,还请大家多多包涵,并给予指出,谢谢