SpringCloud之负载均衡

孤人 提交于 2020-04-05 18:05:35

1.Ribbon

1.1负载均衡LB

全称Load Balance,将用户的请求平摊到多个服务器上,从而达到系统的HA。
集中式LB:在服务消费者和服务提供者之间使用独立的LB设施,如硬件,由该设施负责把访问请求通过某种策略转发至服务提供方。
进程内LB:将LB逻辑继承到服务消费者,消费者从服务注册中心获知有哪些地址可用,然后从这些地址中选择一个合适的来使用。Ribbon属于进程内LB。

1.2Ribbon定义

基于NetFlix Ribbon实现的一套客户端负载均衡的工具。

1.3与Eureka结合基本使用

源代码:

1)创建TestTemplate模块以及Eureka服务器集群。具体步骤可参考https://www.cnblogs.com/zys2019/p/12636241.html#_label0。可直接下载代码,在此代码基础上修改。

2)在cloud-consumer80中添加ribbon和eureka依赖  

<!--eureka-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--ribbon-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
View Code

3)修改cloud-consumer80的配置文件yml,配置eureka

#把客户端注册到服务列表中
eureka:
  client:
    #表示是否将自己注册进EurekaServer默认为true
    register-with-eureka: false
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetch-registry: true
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/, http://eureka7002.com:7002/eureka/, http://eureka7003.com:7003/eureka/
View Code

4)在cloud-consumer80的ConfigBean类添加@LoadBalance注解

 @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
View Code

5)主启动类添加@EnableEurekaClient

@SpringBootApplication
@EnableEurekaClient
public class ConsumerMain80 {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerMain80.class, args);
    }
}
View Code

6)修改Usercontroller类中访问的基本路径BASE_URL为微服务名

private final  String BASE_URL="http://CLOUD-PROVIDER";
View Code

7)运行测试

先分别启动7001,7002,7003,然后启动8001和80。

使用postman工具输入http://127.0.0.1/consumer/get/1使用get方式测试,再输入http://127.0.0.1/consumer/add?name=嘻哈哈&phone=101使用post方式测试。

1.4Ribbon负载均衡

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!