部分内容摘自 Spring Cloud 官方文档中文版
本文源码地址:https://github.com/Wyxwx/SpringCloudDemo2
Ribbon 是一个客户端负载均衡器,它可以很好地控制 HTTP 和 TCP 客户端的行为。
目录
负载均衡
在如今的网络应用中,单个服务器的性能很难满足高并发的要求。若是执意利用提高服务器的硬件水平,将会得不偿失。在这种情况下,多数应用都选择将服务器集群部署。在 Spring Cloud 中,客户端 Service 都在服务中心注册,将相同功能的客户端命名为相同的 application name,部署在不同的服务器上。服务中心接收到对特定 application name 的请求后,将请求发送至某一客户端 Service 去处理,这就是负载均衡。
Ribbon 基本使用
根据 服务发现:Eureka (一) 注册和运行 创建一个服务注册中心(eureka_server)和两个功能相同的 Eureka 客户端(eureka_client_1、eureka_client_2)
两个客户端的配置文件分别改为:
server.port=8762
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
spring.application.name=ribbonClient
server.port=8763
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
spring.application.name=ribbonClient
两个客户端的 spring.application.name 相同,代表提供了同一种服务,分配不同的端口模拟在不同服务器的场景
在两个客户端模块中分别创建一个相同的 HelloController
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Value("${server.port}")
private String port;
@RequestMapping(value = "/hello")
public String hello(){
return "my port is " + port;
}
}
接下来,按照创建 Eureka 客户端的步骤创建一个新的 Module: ribbon
在创建之后的 pom.xml 里加入以下依赖
<dependency>