Day03 学习SpringCloud中的ribbon负载均衡

上篇博客【使用Spring Cloud搭建高可用服务注册中心】中我们介绍了如何使用Spring Cloud搭建一个高可用服务注册中心,如此就能解决单点故障的问题 , 由于本人的电脑不是很流畅 , 以后的博库会使用单机版的Eureka,大家可以使用高可用的Eureka搭建 . 好了 , 废话不多说,开始本章的学习!

     先介绍一下Ribbon,ribbon是Netfilx发布的开源项目,其功能主要提供客户端软件的负载均衡算法, 将Netfilx的中间层服务连接在一起,Ribbon的客户端组件提供了一系列的完善的配置项,例如连接超时,重试等.

1.引入ribbon的jar

  • user工程中引入ribbon的jar

	4.0.0
	
		com.tianxiaobin
		springcloud-parent
		0.0.1-SNAPSHOT
	
	springcloud-eureka-user
	user客户端

	
		
		
			org.springframework.cloud
			spring-cloud-starter-ribbon
		
		
			
			org.springframework.cloud
			spring-cloud-starter-eureka-server
		
		
			org.projectlombok
			lombok
			provided
		
	

2.添加注解

  • 在user工程的启动类中 , 注入restTemplate的时候添加@Loadbalanced注解
    Day03 学习SpringCloud中的ribbon负载均衡_第1张图片
/**
 * @ClassName: UserApplication
 * @Description: 客户端的启动类
 * @author: 田晓斌
 * @date: 2019年4月17日 下午6:23:10
 */
@EnableEurekaClient
@SpringBootApplication
public class UserApplication {
	public static void main(String[] args) {
		SpringApplication.run(UserApplication.class, args);
	}

	@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}
}

3.修改userController

Day03 学习SpringCloud中的ribbon负载均衡_第2张图片

    这样使用ribbon负载均衡已经成功了 , 为了方便测试 , 我们在order工程中编写一个监听类 , 用来看user访问order工程的时候 具体走的是哪个端口:
  • ServiceInfoUtil如下:
/**
 * @ClassName: ServiceInfoUtil
 * @Description: 监听服务实例端口的工具类
 * @author: 田晓斌
 * @date: 2019年4月22日 上午11:46:47
 */
@Configuration
public class ServiceInfoUtil implements ApplicationListener {

	// 声明event对象 , 该对象用于获取运行服务器的本地端口
	private static EmbeddedServletContainerInitializedEvent event;

	@Override
	public void onApplicationEvent(EmbeddedServletContainerInitializedEvent event) {
		ServiceInfoUtil.event = event;
	}

	// 获取端口号
	public static Integer getPort() {
		return event.getEmbeddedServletContainer().getPort();
	}

}
  • 在orderController中添加代码
    Day03 学习SpringCloud中的ribbon负载均衡_第3张图片

4.测试

我们启动eureka和user工程 , 之后将order工程的端口号改为8002和8003,分别启动.
eureka如下:

在这里插入图片描述
我们访问10次之后发现:
Day03 学习SpringCloud中的ribbon负载均衡_第4张图片
Day03 学习SpringCloud中的ribbon负载均衡_第5张图片

到此 我们的ribbon负载均衡学习结束 , 欢迎大家讨论

你可能感兴趣的:(SpringCloud)