第五章 SpringCloud Alibaba 实现Feign服务调用的负载均衡

news/2024/7/9 23:52:52 标签: spring cloud, 负载均衡, spring

什么是Feign

Feign是Spring Cloud提供的一个声明式的伪Http客户端, 它使得调用远程服务就像调用本地服务
一样简单, 只需要创建一个接口并添加一个注解即可。
Nacos很好的兼容了Feign, Feign默认集成了 Ribbon, 所以在Nacos下使用Fegin默认就实现了负
载均衡的效果。

Feign的使用

在订单服务里面加入Fegin的依赖

<!--fegin组件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

在主类上添加Fegin的注解

@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients//开启Fegin
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
  }

订单服务创建一个service, 并使用Fegin实现微服务调用

@FeignClient("service-product")//声明调用的提供者的name
public interface ProductService {
    //指定调用提供者的哪个方法
    //@FeignClient+@GetMapping 就是一个完整的请求路径 http://serviceproduct/product/{pid}
    @GetMapping(value = "/product/{pid}")
    Product findByPid(@PathVariable("pid") Integer pid);
}

修改controller代码,并启动验证

@RestController
@Slf4j
public class OrderController {
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private OrderService orderService;
    @Autowired
    private DiscoveryClient discoveryClient;
    @Autowired
    private ProductService productService;
    //准备买1件商品
    @GetMapping("/order/prod/{pid}")
    public Order order(@PathVariable("pid") Integer pid) {
        log.info(">>客户下单,这时候要调用商品微服务查询商品信息");
        //从nacos中获取服务地址
        //直接使用微服务名字, 从nacos中获取服务地址
        //通过fegin调用商品微服务
        Product product = productService.findByPid(pid);

        log.info(">>商品信息,查询结果:" + JSON.toJSONString(product));
        Order order = new Order();
        order.setUid(1);
        order.setUsername("测试用户");
        order.setPid(product.getPid());
        order.setPname(product.getPname());
        order.setPprice(product.getPprice());
        order.setNumber(1);
        orderService.save(order);
        return order;
    }
}

重启order微服务,查看效果

http://localhost:8091/order/prod/1

商品服务已经访问到信息
在这里插入图片描述
订单服务已经获取信息
在这里插入图片描述

  • 第六章 SpringCloud Alibaba 实现Sentinel–服务容错

http://www.niftyadmin.cn/n/5255526.html

相关文章

爬虫工作量由小到大的思维转变---<第二章 代理池与异常处理>

前言: 今天我们聊一聊如何在我们的爬虫项目中高效利用代理池&#xff0c;以及在不可预知的网络世界中巧妙应对那些经常头疼的异常。作为爬虫团队的一份子&#xff0c;我相信大家对“我的IP被封了&#xff01;”这句话肯定不会感到陌生。所以咱们首先得聊聊怎么管理我们的秘密武…

软件开发经常出现的bug原因有哪些

软件开发中出现bug的原因是多方面的&#xff0c;这些原因可能涉及到开发流程、人为因素、设计问题以及其他一系列因素。以下是一些常见的导致bug的原因&#xff1a; 1. 错误的需求分析&#xff1a; 不正确、不完整或者模糊的需求分析可能导致开发人员误解客户的需求&#xff0…

分布式搜索引擎02

分布式搜索引擎02 在昨天的学习中&#xff0c;我们已经导入了大量数据到elasticsearch中&#xff0c;实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以今天&#xff0c;我们研究下elasticsearch的数据搜索功能。我们会分别使用DSL和Res…

Web UI 自动化 元素定位利器

序 元素定位&#xff0c;对于 Web UI 自动化而言&#xff0c;绝对是大家成长道路上的一道绊脚石。 很多初学者&#xff0c;都“死”在了元素定位上&#xff0c;从而失去了学习的兴趣。导致职业规划不得不半途而废~ 那么&#xff0c;今天&#xff0c;我们就使用 Katalon Stu…

Intellij idea 这些插件和高效配置

特别说明&#xff1a; 本文所有实操基于 Mac OSX 系统&#xff0c;其他操作系统&#xff08;如 Windows&#xff0c;Linux 等&#xff09;没有实践过&#xff0c;不做讲解。 1. ToC&#xff08;目录&#xff09; 本文将从以下几个方面&#xff0c;展开讲解&#xff1a; keyma…

联邦蒸馏中的分布式知识一致性 | TIST 2024

联邦蒸馏中的分布式知识一致性 | TIST 2024 联邦学习是一种隐私保护的分布式机器学习范式&#xff0c;服务器可以在不汇集客户端私有数据的前提下联合训练机器学习模型。通信约束和系统异构是联邦学习面临的两大严峻挑战。为同时解决上述两个问题&#xff0c;联邦蒸馏技术被提…

虹科新闻丨广州市“强企增效”项目助力虹科高质量发展!

来源&#xff1a;虹科电子科技有限公司 虹科新闻丨广州市“强企增效”项目助力虹科高质量发展&#xff01; 原文链接&#xff1a;https://mp.weixin.qq.com/s/9pUXx5ZZpIi5S4s4o90GJA 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 2023年12月6日至7日&#xff0c;工…

宝塔PostgreSQL设置数据库远程访问

宝塔PostgreSQL设置数据库远程访问 宝塔的PostgreSQL1. 添加数据库2. 打开PostgreSQL设置界面3. 修改配置4. 重载配置/重启数据库 Docker的PostgreSQL1. postgresql.conf2. pg_hba.conf3. 重启数据库 注意其他问题 宝塔PostgreSQL设置数据库远程访问&#xff1f;docker容器Post…