Spring Cloud Alibaba 的学习之feign篇

是什么?

Feign 是一个声明式的伪 HTTP 客户端,它使得写 HTTP 客户端变得更简单

为什么?

使用 Feign,只需要创建一个接口并注解。它具有可插拔的注解特性。Feign 支持可插拔的编码器和解码器。Feign 默认集成了 Ribbon,Nacos 也很好的兼容了 Feign,默认实现了负载均衡的效果

怎么做

提供者:

yml:

spring:
  application:
    name: puzzle-provider

  cloud:
    nacos:
      discovery:
        server-addr: 192.168.233.150:8848

server:
  port: 11000

management:
  endpoints:
    web:

application:

@SpringBootApplication
@EnableDiscoveryClient
public class PuzzleProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(PuzzleProviderApplication.class, args);
    }
}

service:

@Service
public class InitPuzzleServiceImpl implements InitPuzzleService {
    @Override
    public List initPuzzle() {
        List list= Arrays.asList("1", "2", "3","4","5","6","7","8","0");
        return list;
    }
}

controller

@RestController
public class InitPuzzleController {

    @Autowired
    private InitPuzzleService initPuzzleService;

    @GetMapping(value = "init")
    public List initPuzzle() {
        return initPuzzleService.initPuzzle();
    }
}

消费者:

yml:

spring:
  application:
    name: consumer-reset

  cloud:
    nacos:
      discovery:
        server-addr: 192.168.233.150:8848
feign:
  sentinel:
    enabled: true
server:
  port: 12000

management:
  endpoints:
    web:
      exposure:
        include: "*"

POM

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

Application(主要添加EnableFeignClients)

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class PuzzleResetApplication {
    public static void main(String[] args) {
        SpringApplication.run(PuzzleResetApplication.class, args);
    }
}

Service(@FeignClient("服务名") 注解来指定调用哪个服务)

@FeignClient(value = "puzzle-provider")
public interface ResetService {
    @GetMapping(value = "init")
    List initPuzzle();
}

Controller

@RestController
public class ResetController {

    @Autowired
    private ResetService resetService;

    @GetMapping("/reset")
    public List resetPuzzle(){
        List list = resetService.initPuzzle();
        Collections.shuffle(list);
        return list;
    }
}

配置负载均衡

修改 service-provider 服务的端口号如 11000,并启动多个实例,IDEA 中依次点击 Run -> Edit Configurations 并勾选 Allow parallel run 以允许 IDEA 多实例运行项目

原文地址:https://www.cnblogs.com/faramita/p/11572280.html

时间: 2024-08-30 18:30:18

Spring Cloud Alibaba 的学习之feign篇的相关文章

Spring Cloud Alibaba微服务从入门到进阶 完整版

第1章 课程介绍课程的总体介绍,课程需要的环境搭建和一些常用的快捷键介绍. 第2章 Spring Boot基础前期先带着学习Spring Boot基础,创建Spring Boot项目,讲解Spring Boot的配置,是学习Spring Cloud Alibaba的必知必会. 第3章 微服务的拆分与编写这一章讲解的微服务的概念,使用场景,建模,架构通览,讲师带着拆分微服务并且一步步分析,编写一些基础的微服务功能 第4章 Spring Cloud Alibaba介绍学习Spring Cloud A

Spring Cloud Alibaba 新一代微服务解决方案

本篇是「跟我学 Spring Cloud Alibaba」系列的第一篇, 每期文章会在公众号「架构进化论」进行首发更新,欢迎关注. 1.Spring Cloud Alibaba 是什么 Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合. 马老师左手双十一,右手阿里开源组件,不仅占据了程序员的购物车,还要攻占大家的开发工具. 先说说 Spring Cloud 提起微服务,不得不提 Spring Clou

Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate、WebClient、Feign)

通过<Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现>一文的学习,我们已经学会如何使用Nacos来实现服务的注册与发现,同时也介绍如何通过LoadBalancerClient接口来获取某个服务的具体实例,并根据实例信息来发起服务接口消费请求.但是这样的做法需要我们手工的去编写服务选取.链接拼接等繁琐的工作,对于开发人员来说非常的不友好.所以接下来,我们再来看看除此之外,还支持哪些其他的服务消费方式. 使用RestTemplate 在之前的例子中,已经使用过R

Spring Cloud Alibaba | Sentinel: 服务限流基础篇

目录 Spring Cloud Alibaba | Sentinel: 服务限流基础篇 1. 简介 2. 定义资源 2.1 主流框架的默认适配 2.2 抛出异常的方式定义资源 2.3 返回布尔值方式定义资源 2.4 注解方式定义资源 2.5 异步调用支持 3. 规则的种类 3.1 流量控制规则 (FlowRule) 3.2 熔断降级规则 (DegradeRule) 3.3 系统保护规则 (SystemRule) 3.4 访问控制规则 (AuthorityRule) Spring Cloud Al

Spring Cloud Alibaba | Sentinel: 服务限流高级篇

目录 Spring Cloud Alibaba | Sentinel: 服务限流高级篇 1. 熔断降级 1.1 降级策略 2. 热点参数限流 2.1 项目依赖 2.2 热点参数规则 3. 系统自适应限流 3.1 背景 3.2 系统规则 3.3 原理 3.4 示例 4. 黑白名单控制 4.1 规则配置 4.2 示例 Spring Cloud Alibaba | Sentinel: 服务限流高级篇 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR

Spring Cloud Alibaba之服务容错组件 - Sentinel [规则持久化篇]

规则持久化 - 拉模式 在Sentinel控制台对某个微服务的接口资源配置了流控.降级等规则后,若重启了该微服务,那么配置的相关规则就会丢失,因为Sentinel默认将规则存放在内存中.每次重启微服务都得重新配置规则显然是不合理的,所以我们需要将配置好的规则进行持久化存储,而Sentinel提供了两种规则持久化模式: 拉模式(pull) 推模式(push) 本小节先介绍一下拉模式(pull),该模式的架构图如下: Tips:规则在代码中实际上是一个对象,所以通常是转换成json字符串后再存储至本

0.9.0.RELEASE版本的spring cloud alibaba nacos+feign实例

这里的feign依然是原来的feign,只不过将注册中心由eureka换成了nacos.服务提供方参见0.9.0.RELEASE版本的spring cloud alibaba nacos实例,消费方跟提供方一样,只需加入feign的相关内容即可.抡出三板斧: 1.pom加入feign: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.or

Spring Cloud Alibaba基础教程:Nacos配置的加载规则详解

前情回顾: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate.WebClient.Feign)> <Spring Cloud Alibaba基础教程:使用Nacos作为配置中心> 上一篇,我们学习了如何在Nacos中创建配置,以及如何使用Spring Cloud Alibaba的Nacos客户端模块来加载配置.在入门例子中,我们只配

Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭借阿里中间件团队的背景,还是得到不少团队的支持:同时,由于Spring Cloud Alibaba中的几项主要功能都直指Netflix OSS中的重要组件,而后者最近频繁宣布各组件不在更新新特性,这使得Spring Cloud Alibaba关注度不断飙升,不少开发者或团队也开始小范围试水.笔者对此