Spring Cloud之Eureka与Ribbon学习简单笔记
SpringCloud介绍
微服务,为了更好的创建项目组织结构、更高效的项目的迭代效果、更优良的架构设计,就需要使用微服务的架构思想,来对项目进行搭建或者重构。
1.服务的注册与发现组件:Eureka
搭建一个eureka注册中心,将eureka作为一个项目启动,启动后这就是一个eureka的注册中心。
步骤一:
引入依赖
<dependency>
|
步骤二:
编写配置文件
spring:
|
步骤三:启动上加上注解
@EnableEurekaServer
|
对于eureka来说,会有两个身份。
身份一:服务器 使用的依赖:eureka-server 使用的注解: @EnableEurekaServer
registerWithEureka: false
fetchRegistry: false
身份二:客户端 使用的依赖eureka-discovery-client
服务的提供者 使用的注解:@EnableEurekaClient
服务的消费者 使用的注解:@EnableDiscoveryClient
创建服务的提供者
步骤一: 引入依赖
<dependency>
|
步骤二:编写配置文件
spring:
|
步骤三:使用注解
@EnableEurekaClient
|
创建服务的消费者——Ribbon
Ribbon是一个使用http来进行通信的,能够实现负载均衡效果的客户端工具。要实现http通信的话需要使用RestTemplate类。
步骤一:引入依赖
<dependency>
|
步骤二:编写配置文件
spring:
|
步骤三:
打上注解
@EnableDiscoveryClient
|
Eureka详解
- 心跳及自我保护
注册到Eureka注册中心的服务需要持续的发送心跳包以续约自己的服务,防止被剔除。
- Eureka中服务的注册、调用、管理等等细节
- Ribbon——客户端负载均衡的组件
2.Ribbon的介绍
如何在idea里面同时创建出一个服务的集群。
- 什么是Ribbon?
实现客户端的负载均衡的工具。Ribbon客户端组件提供了一系列完善的配置,比如超时、重试等等。
Ribbon会基于某种规则进行负载均衡,轮询、随机等等。Ribbon也可以实现我们自己定义的负载均衡算法。
客户端的负载均衡
2.Ribbon进行负载均衡的详细过程
- Ribbon的负载均衡策略
配置Ribbon的负载均衡策略
在配置类中,去创建出一个IRule对象,IRule不同的实现类就是不同的负载均衡策略。
@Configuration
|
如果ribbon中的服务地址列表中某一个服务下线了,那么ribbon会去重新获取eurekaServer上的新的地址列表。
此时地址列表就更新了,如果更新后的地址列表依然有服务不能服务,那么ribbon就会在自己的地址列表中把该服务的地址去除。每隔10秒钟,ribbon又会进行一次与eurekaServer之间的对地址列表进行更新。于是下线的服务就不会被访问到。
- RandomRule 随机选择一个Server
- RetryRule 如果访问某个server不成功,那么就会一直重试。
- RoundRobinRule 轮询访问每一个Server
- WeightedResponseTimeRule 根据响应时间加权,响应时间越长,权重越小,被选中的概率越低。