集群通常会出现负载均衡的问题:在spring cloud中怎么来解决问题?
需要用到spring cloud提供的第二组件:ribbon (瑞本) 负载均衡器,专门用来做负载均衡的,它也叫做客户端的负载均衡器
使用ribbon的步骤:特别要注意的是ribbon放在请求发起方(user),而不是请求的接收方(product)
①需要在user模块中引入ribbon的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
②为了方面测试,去修改一下两个product模块的handler方法,修改如下:
③先停止所有的微服务,然后依次启动eureka、product、user模块
④通过浏览器访问user模块的url,获取商品数据,注意观察8001 8002控制台打印的信息
根据刚才的观察,ribbon默认采用轮训的方式进行负载均衡
ribbon负责均衡的策略
•轮训 默认方式
•随机 随机选择
•最低并发策略 选择并发连接数最小的服务进行调用
•响应时间最少 选择响应时间最短的服务进行调用
•区域加权 根据服务所在区域进行调用
ribbon的复制均衡策略可以根据自己的情况进行设置,设置的方法:
只需要在调用发起方(客户端)添加一个配置类,然后在里面指定负载均衡策略就行、
①在user模块中添加一个配置文件,编写以下内容,指定ribbon的负载均衡策略
②先将所有的微服务停掉,然后依次启动eureka、product8001、product8002、user,最好是一个启动成功之后再其他的,不然可能会出现找不到微服务的情况
③在浏览器中访问user模块的url,然后注意观察8001 8002控制台信息
会得到8001,8002轮番出现