• springcloud--riboon快速搭建


    Ribbon是Spring Cloud核心组件之一,它提供的最重要的功能就是负载均衡,和硬件负载均衡F5不同,它的负载均衡是基于客户端的,Zuul网关和Feign可以通过Ribbon轻松的实现服务的负载均衡,同时避免了与业务无关的冗余代码。

    搭建

    1. 用集群方式创建两台生产者eureka-client,提供方法供消费者调用,并向eureka-server注册
    2. 创建一台消费者,提供方法,调用生产者提供的方法,同样向eureka-server注册
    3. 向生产者多次发送请求,检验是否实现负载均衡

    使用

    首先创建一台springboot项目–做生产者

    • 引入web依赖,用来响应以及发请求
    • 引入eureka-client依赖,用做服务注册
    • 配置yml文件
    • 开启eureka客户端,@EnableEurekaClient
    • 手写一个方法以供消费者调用

    pom.xml文件

    1. <dependency>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-webartifactId>
    4. dependency>
    5. <dependency>
    6. <groupId>org.springframework.cloudgroupId>
    7. <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
    8. dependency>

    yml文件

    1. server:
    2. port: 8080
    3. spring:
    4. application:
    5. name: provider
    6. eureka:
    7. client:
    8. service-url:
    9. defaultZone: http://eureka的IP地址/eureka
    10. instance:
    11. hostname: localhost
    12. prefer-ip-address: true
    13. instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}

    controller方法

    1. @RestController
    2. public class ProviderController {
    3. @GetMapping("/hello")
    4. public String hello(){
    5. return "我是提供者aaaaa的接口";
    6. }
    7. }

    再创一台生产者做集群

    • 端口号不能重复,但应用名称要相同
    • 方法返回值做修改,用以检验负载均衡是否成功

    创建一个springboot项目–用作消费者

    • 引入web依赖,用来响应以及发请求
    • 引入eureka-client依赖,用做服务注册
    • 引入ribbon依赖,用作负载均衡
    • 配置yml文件
    • 开启eureka客户端,@EnableEurekaClient
    • 向spring容器中,添加restTemplate实例,并加@LoadBalanced
    • 手写一个请求,用restTemplate来发送,返回结果

    spring容器

     
    
    1. /**
    2. * 这个restTemplate已经变了
    3. * @LoadBalanced 他就会被ribbon来操作
    4. * @return
    5. */
    6. @Bean
    7. @LoadBalanced
    8. public RestTemplate restTemplate(){
    9. return new RestTemplate();
    10. }

    controller

     
    
    1. @Autowired
    2. private RestTemplate restTemplate;
    3. @GetMapping("/testRibbon")
    4. public String testRibbon(String serviceName){
    5. //正常情况下要拿到ip和prot以及路径才可以用
    6. String result = restTemplate.getForObject("http://" + serviceName + "/hello", String.class);
    7. return result;
    8. }

    结果

    用浏览器发送请求,访问消费者的testRibbon方法,可以返回生产者型号,在页面上轮询显示a生产者和b生产者

  • 相关阅读:
    学习java技术能干什么工作
    深入探索JVM高效并发 — Java内存模型(一)
    挖矿病毒之CoinMiner入侵SQLServer
    Nerstudio 相机优化代码理解
    C/C++数据结构题目(2022)
    深入理解接口隔离原则(Interface Segregation Principle)
    差异化出圈之后,蕉下布局城市户外寻找“起跳”机会
    VS“无法查找或打开PDB文件”问题
    大语言模型LLM分布式训练:PyTorch下的分布式训练(LLM系列06)
    ASR6500S系列LoRa SIP模块集成了RF前端和LoRa无线电收发器SX1262系列
  • 原文地址:https://blog.csdn.net/weixin_60663670/article/details/126825017