负载均衡
Ribbon
- Spring-Cloud-Ribbon是基于Netfilx Ribbon实现的一套客户端负载均衡的工具
- 给客户端软件提供负载均衡算法
- Ribbon提供一系列完整的配置项,连接超时、重试等等
- LB(Loocal Balance),负载均衡
- 将将用户请求平坦到多个服务器上,从何达到系统的HA(高可用)
- 常见的负载均衡软件有Nginx,LVs等等,lvs也只是在客户端和服务端之间加一层,按需分配
- 负载均衡分类
- 集中式LB
- 在消费方和服务方之间使用独立的LB设施,设施通过某种策略转发请求
- 进程式LB
- 将LB逻辑集成在消费方,通过策略访问提供方
- Ribbon就属于进程内LB,只是使用一个类库,
- 集中式LB
负载均衡实现:
- 流程:
- 三个Eureka服务器
- 三个provider提供者
- 一个consumer客户端
- Eureka设置集群
- 三个提供者设置相同的spring.application.name
- consumer通过默认的Ribbon轮询算法访问每个provider
实现EurekaServer
-
pom
-
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
-
server.port=7001 eureka.instance.hostname=localhost1 #服务实例化名称 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false #表示自己为注册中心 eureka.client.service-url.defaultZone=http://localhost2:7002/eureka,http://localhost3:7003/eureka
-
@SpringBootApplication @EnableEurekaServer /*开启EnableEurekaServer启动类,可以接收服务端的注册*/ public class SpringCloudEurekaApplication { public static void main(String[] args) { SpringApplication.run(SpringCloudEurekaApplication.class, args); } }
实现提供者provider
-
服务提供者,可以连接数据库,需要controller提供访问,把服务注册到Eureka集群
-
pom
-
<dependencies> <!--eureka-client--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>2.2.5.RELEASE</version> </dependency> <!--数据库--> <!--jdbc--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId>