SpringCloudAlibaba实战

本文介绍了如何在Spring Cloud项目中整合Nacos作为服务注册中心,使用Feign进行服务间调用,并引入Hystrix实现服务熔断。详细步骤包括配置Nacos依赖、添加服务配置、启用注解,以及在Feign客户端和熔断器中应用。通过示例代码展示了微服务间的调用流程和熔断处理。
摘要由CSDN通过智能技术生成

搭建nacos注册中心

1、下载启动nacos

2、在父pom添加依赖管理

  • 	<properties>
            <cloud-alibaba.version>0.2.2.RELEASE</cloud-alibaba.version>
        </properties>
        
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Hoxton.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>${cloud-alibaba.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    

3、配置Nacos客户端的pom依赖

  • <!--服务注册-->
    <dependency> 
        <groupId>org.springframework.cloud</groupId> 
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    

3、添加服务配置文件

  • #微服务名称
    spring.application.name=demo
    # nacos服务地址
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    

4、在微服务启动类添加注解

  • @EnableDiscoveryClient
    

Feign服务调用

1、配置微服务的pom依赖

  • <!--服务调用-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    

2、在微服务启动类上添加注解

  • @EnableFeignClients
    

3、Feign调用实例

  • 使用到的注解

    • @FeignClient注解用于指定从哪个服务(nacos注册中心的服务名)中调用功能 ,名称与被调用的服务名保持一致。位于类上
    • @GetMapping注解用于对被调用的微服务进行地址映射。
    • @PathVariable注解一定要指定参数名称,否则出错
    • @Component注解防止,在其他位置注入CodClient时idea报错
  • 代码样例

    • //demo1微服务client包下TestClient
      @FeignClient("demo2")
      @Component
      public interface TestClient {
          
          @GetMapping("/demo2/test")
          public String test();
      }
      
    • //demo1微服务controller包下
      @Controller
      @RequestMapping("/demo1")
      public class HomeController {
          
          @Autowired
          public TestClient testClient;
          
          @ResponseBody
          @GetMapping("feignTest")
          public String test() {
              String test = testClient.test();
              return test;
          }
      }
      
    • //demo2微服务controller包下
      @Controller
      @RequestMapping("/demo2")
      public class HomeController {
          
          @ResponseBody
          @GetMapping("test")
          public String test() {
              return "demo2: test";
          }
      }
      

Hystrix熔断器

1、配置微服务pom依赖

  • <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
    </dependency>
    <!--hystrix依赖,主要是用 @HystrixCommand -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    </dependency>
    

2、添加服务配置文件

  • #开启熔断机制
    feign.hystrix.enabled=true
    # 设置hystrix超时时间,默认1000ms
    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=6000
    

3、在client包里面创建熔断器实现类

  • @Component
    public class HystrixTest implements TestClient{
        
        @Override
        public String test() {
            return "demo1: feign time out";
        }
    }
    

4、修改client接口的注解

  • @FeignClient(name = "demo2", fallback = HystrixTest.class)
    @Component
    public interface TestClient {
        
        @GetMapping("/demo2/test")
        public String test();
    }
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值