一个简单的Ribbon实现负载均衡(springcloud)

Ribbon是一个是一个基于HTTP和TCP的客户端负载均衡工具。
它也是我们springcloud经常使用的负载均衡。
在这里插入图片描述
负载均衡就是通过一系列手段(如心跳访问)等将访问合理的分配给有足够处理能力的服务段。
具体实现这里不细讲,细讲我也不会。
我只展示下springcloud怎么实现的

在展示之前说下需要的:

服务端:2个以上,我们可以用2个简单的springboot jpa项目代替(数据库有没有内容无所谓,只要能打开页面就OK,如下图)
在这里插入图片描述
Eureka的server端(可要可不要,不使用Eureka也是可以负载均衡,而且操作不变,但实际这2个一般是一起出现的)
如果你没有以上的,可以使用我的,也可以自己做个,几分钟的事情吗。

https://github.com/lihang212010/Ribbon

然后讲解的是搭载Ribbon的项目(Eureka中包含Ribbon,因此Eureka也可以)
在本项目中,我们需要一个和服务端数据库相同的POJO,但是这一步并不重要,因此这一步代码放在最后面。

首先我们添加依赖(Eureka的依赖如果存在,则不需要在添加了,因为Eureka里有这个)

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
		</dependency>

如果你的版本过新或者程序出现okhttp3报错,则需要在添加okhttp3依赖,老版本自带这个。

        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.6.0</version>
        </dependency>

完整的pop.xml我发github上了,这都不是重点。

重点是下面这个,首先我们创建个bean

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

RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率,所以很多客户端比如 Android或者第三方服务商都是使用 RestTemplate 请求 restful 服务
@LoadBalanced是Ribbon的注解,只需要添加次注解,便自动开启负载均衡了

然后我们在控制器添加这些

@RestController
public class MoviesController {

	@Autowired
	private RestTemplate restTemplate;

	@RequestMapping("/user/{id}")
	public Users findById(@PathVariable Long id) {
		return this.restTemplate.getForObject("http://demo-cloud-user/"+id, Users.class);
	}	
		
	} 

demo-cloud-user是服务端的名字

getForObject() 发送一个HTTP GET请求,返回的请求体将映射为一个对象

然后我们可以开启2个以上服务端(修改端口即可),如果Eureka项目则开启后在开启这个项目,没有直接开启刚刚我们写的这个项目
访问 http://localhost:8010/user/1 ,多访问几次,我们会发现控制台中的服务端会显示多次访问记录,这些访问会按照某种规则平衡的分配给每个服务器。
这时我们的负载均衡便搭建好了。

Ribbon的分配规则是可以更改的,在springcloud中有3种方式更改,我只贴出最常用的一种。
配置更改在yml文件中添加

demo-cloud-user:
  ribbon:
         NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
        

demo-cloud-user是服务端名字
如果不是yml文件

demo-cloud-user.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule

总共7种访问策略,字太多,懒得打。大家自己查。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值