Ribbon是Netflix公司开源的一个负载均衡的项目,是一个基于 HTTP、TCP的客户端负载均衡器.
什么是负载均衡?
负载均衡是微服务架构中必须使用的技术,通过负载均衡来实现系统的高可用、集群扩容等功能。负载均衡可通过
硬件设备及软件来实现,硬件比如:F5、Array等,软件比如:LVS、Nginx等。
常用的负载均衡算法有: 轮循、随机、加权轮循、加权随机、地址哈希等方法。
上面的都是服务端负载均衡,客户端负载均衡与服务端负载均衡的区别在于客户端要维护一份服务列表,Ribbon从
Eureka Server获取服务列表,Ribbon根据负载均衡算法直接请求到具体的微服务,中间省去了负载均衡服务器。
1. 导入Ribbon依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-ribbon</artifactId><version>1.3.6.RELEASE</version>
</dependency>
2. application.yml中配置ribbon参数
ribbon:MaxAutoRetries: 2 #最大重试次数,当Eureka中可以找到服务,但是服务连不上时将会重试MaxAutoRetriesNextServer: 3 #切换实例的重试次数OkToRetryOnAllOperations: false #对所有操作请求都进行重试,如果是get则可以,如果是post,put等操作没有实现幂等的情况下是很危险的,所以设置为falseConnectTimeout: 5000 #请求连接的超时时间ReadTimeout: 6000 #请求处理的超时时间
3.负载均衡测试
1. 启动两个负载均衡服务时,注意端口要不一致. 启动完成观察Eureka Server的服务列表。
2.注入RestTemplate,添加 @LoadBalanced 注解。
3.测试。 rest请求路径上更换服务名
Feign介绍
Feign是Netflix公司开源的轻量级rest客户端,使用Feign可以非常方便的实现Http 客户端。Spring Cloud引入
Feign并且集成了Ribbon实现客户端负载均衡调用。
<!-- 引入Feign依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
启动类中加入@EnableFeignClients注解,并进行测试。