Ribbon集成Eureka
ribbon的作用是通过某一种算法实现在集群服务中,每个服务的平均调度。
这个算法可以是轮询的 可以是随机 可以是权重的。
轮询顾名思义 挨个走
随机 指不定用哪个
权重 设置哪个服务为权重高的 哪个就可以多使用
使用方式:
引入pom依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
配置:
server:
port: 80
eureka:
client:
register-with-eureka: false
service-url:
defaultZone: http://eureka7002.com:7002/eureka,http://eureka7001.com:7001/eureka
这里引入了Eureka 因为消费者需要去eureka中获取提供者暴露出去的接口来实现自己的目的。
这里配置两个Eureka因为可以多向选择,如果7002挂了 去7001同样能运行。但注意啊。这里不是因为配置两个地址,所以才能去两个地址找东西。配置一个Eureka就可以,配置一个集群就全部知道了。第二个地址只有第一个出问题了才有用。
举一个简单的例子
一个消费者(consumer)去餐厅吃饭,来到一家餐厅(provider)可以有多个餐厅。餐厅中有多名服务员(Eureka集群)。消费者来餐厅通过服务员来点餐。点餐后服务员去后厨取餐,取餐前厨师们要烹饪(数据)。烹饪时不可能所有的菜都是一个厨师来烹饪,所以我们要选择(ribbon)一个烹饪厨师。通过选择方式(ribbon的选择算法)选择出厨师,去给消费者烹饪。
配置后添加注解@LoadBalanced到配置类中进行均衡的位置。这里我放到RestTemplate中,因为消费者拿提供者暴露的接口方式是用RestTemplate拿的。
红色区域的地方,因为我们使用了ribbon 所以可以写死地址。因为我们使用的是Eureka来拿接口数据的。使用这个名字其实就是地址,而且还是动态的。好香啊
以写死地址。因为我们使用的是Eureka来拿接口数据的。使用这个名字其实就是地址,而且还是动态的。好香啊