之间通过几篇文章简单介绍的eureka的使用及相关的知识,
今天开始主要讲解分布式系统框架中的另一重要构成:负载均衡
什么是负载均衡:
折叠负载均衡(LoadBalance)提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。是集群技术(Cluster)的一种应用,可以将工作任务分摊到多个处理单元,从而提高并发处理能力。
熟悉的分布式负载均衡的实现方式大概包括以下几种:
nginx\lvs\ribbon
负载均衡的策略:
- 轮询 :依次发送请求到后端服务
- 权重:根据权重配置分发请求,服务器性能好的可以权重大一些
- IP哈希:根据算法确定请求服务器,同一个地址的客户端,始终请求同一台主机
- 最少访问:负载均衡器把请求给负载最小的哪台服务器
我们主要介绍的就是springcloud全家桶中的ribbon,因为目前的开发框架中,spring已经成为了必不可少的主力军,而作为全家桶中的一份子,无疑的ribbon是可以很好的接入到spring框架中的。下面我们开始今天的内容:
Ribbon是什么?
- 一款客户端的负载均衡工具
- 主要功能:提供客户端的负载均衡算法,提供一系列完整的配置:连接超时,重试等,简单的说就是在配置文件中列出LB(负载均衡)后面的所有机制,ribbon会自动的根据某种规则(随机、轮询… …)去连接机器
- 我们也可以实现自定义的负载均衡的算法
Ribbon集成
1)目录结构:
ribbon作为客户端的实现,所以我们只需要修改80项目即可
2)修改pom.xml
<!-- 添加依赖 -->
<!-- Eureka依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!-- Ribbon依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
3)修改application.yml
#Eureka 配置
eureka:
client:
register-with-eureka: false #不向服务器注册自己
service-url:
defaultZone: http://eurekaServer7001.com:7001/eureka/,http://eurekaServer7002.com:7002/eureka/
4)启动类开启eureka
@EnableEurekaClient
public class ConApplication {
- 配置Ribbon负载均衡,修改配置类
@Configuration
public class BeanConfig {
//配置RestTemplate为负载均衡Ribbon
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
6)修改请求方式
//private static final String rest_url = "http://localhost:8081";
//ribbon实现,请求地址应该是一个变量,及我们注册eureka的服务名称
private static final String rest_url = "http://peo8081";
至此,ribbon负载均衡(默认策略)就集成成功
源码地址:下载地址