首页 > 其他分享 >微服务负载均衡器LoadBalancer

微服务负载均衡器LoadBalancer

时间:2023-08-21 19:44:50浏览次数:46  
标签:负载 Spring spring RestTemplate cloud 均衡器 LoadBalancer ribbon 客户端

1. 什么是Spring Cloud LoadBalancer
Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器, 用来替代
Ribbon。
Spring官方提供了两种负载均衡的客户端:
RestTemplate
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问
远程Http服务的方法,能够大大提高客户端的编写效率。默认情况下,RestTemplate默认依赖
jdk的HTTP连接工具。
WebClient
WebClient是从Spring WebFlux 5.0版本开始提供的一个非阻塞的基于响应式编程的进行Http请
求的客户端工具。它的响应式编程的基于Reactor的。WebClient中提供了标准Http请求方式对
应的get、post、put、delete等方法,可以用来发起相应的请求。
2. RestTemplate整合LoadBalancer
1)引入依赖

 <!‐‐ LoadBalancer ‐‐>
 <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring‐cloud‐starter‐loadbalancer</artifactId>
 </dependency>

 <!‐‐ 提供了RestTemplate支持 ‐‐>
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring‐boot‐starter‐web</artifactId>
 </dependency>

 <!‐‐ nacos服务注册与发现 移除ribbon支持‐‐>
 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring‐cloud‐starter‐alibaba‐nacos‐discovery</artifactId>
     <exclusions>
         <exclusion>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring‐cloud‐starter‐netflix‐ribbon</artifactId>
         </exclusion>
     </exclusions>
 </dependency>

注意: nacos-discovery中引入了ribbon,需要移除ribbon的包
如果不移除,也可以在yml中配置不使用ribbon

spring:
    application:
    name: mall‐user‐loadbalancer‐demo
    cloud:
    nacos:
    discovery:
    server‐addr: 127.0.0.1:8848
    # 不使用ribbon
    loadbalancer:
         ribbon:
         enabled: false

原理:默认情况下,如果同时拥有RibbonLoadBalancerClient和
BlockingLoadBalancerClient,为了保持向后兼容性,将使用RibbonLoadBalancerClient。要
覆盖它,可以设置spring.cloud.loadbalancer.ribbon.enabled属性为false。

 2)使用@LoadBalanced注解配置RestTemplate

@Configuration
public class RestConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

3) 使用

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping(value = "/findOrderByUserId/{id}")
    public R findOrderByUserId(@PathVariable("id") Integer id) {
        String url = "http://mall‐order/order/findOrderByUserId/"+id;
        R result = restTemplate.getForObject(url,R.class);
        return result;
    }
}

 

标签:负载,Spring,spring,RestTemplate,cloud,均衡器,LoadBalancer,ribbon,客户端
From: https://www.cnblogs.com/ladeng19/p/17646156.html

相关文章

  • 轻松实现Apache,Tomcat集群和负载均衡
    环境说明      Apache :apache_2.0.55    1个       Tomcat: apache-tomcat-5.5.17(zip版)2个       mod_jk::mod_jk-apache-2.0.55.so 1个第一部分:负载均衡   负载均衡,就是apache将客户请求均衡的分给tomcat1,tomcat2....去处理  1.安......
  • LVS负载均衡之DR模式构建
    ※实验环境(1)系统:centos7.9(2)虚拟机:4台centos7.9,1台作为nfs共享服务器(NFS共享服务搭建步骤)一、负载调度器配置(1)关闭selinux、firewalld、NetworkManager#关闭selinuxsed-i's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/config#关闭firewalldsystemctlstopfirewalld......
  • LVS负载均衡之DR模式构建
    ※实验环境(1)系统:centos7.9(2)虚拟机:4台centos7.9,1台作为nfs共享服务器(NFS共享服务搭建步骤)一、负载调度器配置(1)关闭selinux、firewalld、NetworkManager#关闭selinuxsed-i's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/config#关闭firewalldsystemctlstopfirewalld......
  • Nginx 负载均衡配置
    介绍: Nginx负载均衡的原理是把请求均匀地分摊给上游的应用服务器,这样即使某一个服务器宕机也不会影响请求的处理,或者当应用服务器扛不住了,可以随时进行扩容。Nginx在处理请求时,会根据负载均衡算法(如轮询、IPHash等)将请求分发到不同的后端服务器上。Nginx支持多种负载均衡算法,可......
  • 自定义负载均衡策略
     上面是例子,选了一种负载均衡方式。还有其他方式,但是写的方式都是大致这样的。还有说明第一种是对全体,第二中是针对某个服务。......
  • 谷歌云 | 最大限度地提高可靠性&降低成本:调整 Kubernetes 工作负载的大小
    【本文由CloudAce整理发布。CloudAce是谷歌云全球战略合作伙伴,拥有300多名工程师,也是谷歌最高级别合作伙伴,多次获得GoogleCloud合作伙伴奖。作为谷歌托管服务商,我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培训服务。】您知道通过调整工作负载请求以更好地代表其实......
  • 深入探究 Nginx 负载均衡与反向代理
    在现代Web应用中,处理高并发和确保可用性是至关重要的。Nginx是一个强大的开源服务器,可以作为负载均衡器和反向代理来提供性能优化和高可用性。本文将深入探讨Nginx的负载均衡和反向代理原理,以及如何在后端架构中应用它。负载均衡的原理负载均衡是将传入的请求分发到多个服务器......
  • 负载均衡压力测试的方法
    四层负载均衡采用开源软件LVS(LinuxVirtualServer)结合Keepalived的方式实现负载均衡,七层负载均衡由Tengine实现负载均衡。压力测试建议在进行压力测试时,配置建议如下:压测负载均衡转发能力建议使用短连接。一般来说压测除了验证会话保持和均衡性等功能外,主要是验证负载均衡的......
  • 高可扩展性架构设计:实现水平扩展和负载均衡的策略
    在当今互联网应用程序的发展中,高可扩展性架构设计变得越来越重要。随着用户量和数据量的增加,传统的单服务器架构已经无法满足高并发和大规模的需求。为了应对这些挑战,我们需要设计一种高可扩展性架构,能够实现水平扩展和负载均衡的策略。什么是水平扩展和负载均衡水平扩展是指通......
  • 容器编排平台的自动伸缩与负载均衡:使用自动伸缩组和负载均衡器实现弹性扩展和负载均衡
    本文将介绍如何使用自动伸缩组和负载均衡器在容器编排平台上实现弹性扩展和负载均衡。我们将探讨自动伸缩组和负载均衡器的概念,并详细介绍它们在容器编排平台中的应用。此外,我们还将提供相关代码示例,以帮助读者更好地理解和实践这些概念。引言随着容器技术的发展,容器编排平台成......