SpringCloud个人总结笔记。

使用SpringCloud需要引入各组件的依赖

组件:SpringCloud-Alibaba-Nacos

依赖
注册中心
<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
配置中心
<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

注:使用SpringCloud-Alibaba-Nacos需要先下载并启动Nacos-Server

涉及注解

1.@EnableDiscoveryClient: 将服务注册到注册中心

  • 例如
@EnableDiscoveryClient //将服务注册到注册中心
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class GulimallGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallGatewayApplication.class, args);
    }

}

组件:SpringCloud-Feign

依赖
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
涉及注解

1.@EnableFeignClients:  写在主程序上来支持feign

  • 例如
@EnableFeignClients(value = "com.zpf.gulimall.member.feign") //开启Feign功能  并且扫描路径为com.zpf.gulimall.member.feign
@EnableDiscoveryClient //将服务注册到注册中心
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class GulimallGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallGatewayApplication.class, args);
    }

}

2.@FeignClient: 实现服务降级

  • 例如:在com.zpf.gulimall.member.feign下有CouponFeign 接口
//value:调用的服务名  fallbackFactory:降级类/接口
@FeignClient(value = "gulimall-coupon",fallbackFactory =Coupon2Feign.class )
public interface CouponFeign {

    @RequestMapping("coupon/coupon/list")
    public R list(@RequestParam Map<String, Object> params);
}

3.@RibbonClient: 设置负载均衡规则

  • 例如
//name 来指定调用的服务名称 configuration指定策略bean
@RibbonClient(name = "gulimall-coupon",configuration =RibbonConfig.class)
@EnableFeignClients(value = "com.zpf.gulimall.member.feign") //开启Feign功能  并且扫描路径为com.zpf.gulimall.member.feign
@EnableDiscoveryClient //将服务注册到注册中心
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class GulimallGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallGatewayApplication.class, args);
    }

}
-----------------------------------------------------------------------
负载均衡规则类如下(可自己实现需要实现IRule接口 ):
@Configuration
public class RibbonConfig  {

    @Bean
    public IRule getRibbon()
    {
        return  new RoundRobinRule();//轮询
        //return  new RandomRule();//随机
    }
}

4.@RequestMapping: 调用不同服务的接口

  • 例如
@FeignClient(value = "gulimall-coupon" )
public interface Coupon2Feign {

    @RequestMapping("coupon/coupon/list")//调用服务的全路径
    public R list(@RequestParam Map<String, Object> params);
}

5.@LoadBalanced:  在使用 RestTemplate 的时候 如果 RestTemplate 上面有 这个注解,那么 这个 RestTemplate 调用的 远程地址,会走负载均衡器

    @Bean
    @LoadBalanced //开启负载均衡
    public RestTemplate getRestTemplate()
    {
        return new RestTemplate();
    }

组件:SpringCloud-hystrix

依赖
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
涉及注解

1.@EnableCircuitBreaker: 开启断路器功能

  • 例如
//开启断路器
@EnableCircuitBreake
//name 来指定调用的服务名称 configuration指定策略bean
@RibbonClient(name = "gulimall-coupon",configuration =RibbonConfig.class)
@EnableFeignClients(value = "com.zpf.gulimall.member.feign") //开启Feign功能  并且扫描路径为com.zpf.gulimall.member.feign
@EnableDiscoveryClient //将服务注册到注册中心
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class GulimallGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallGatewayApplication.class, args);
    }

}

2.@DefaultProperties: 全局熔断

  • 例如
@Controller
@RequestMapping("user")
@DefaultProperties(defaultFallback = "methodFullBack")//全局熔断
public class SysUserController {

    @Autowired
    private UserClient userClient;
    

    public String methodFullBack() throws IOException {

        return "服务器发生错误,请稍后重试。。。";

    }

    @GetMapping("getAllV4/{id}")
    @ResponseBody
    public String getAllV4(@PathVariable(value = "id") Long id) {

        SysUser user = userClient.getUser(id);
        return user.toString();


    }
}

3.@HystrixCommand:局部熔断

  • 例如
    @GetMapping("getAllV3")
    @ResponseBody
    @HystrixCommand(fallbackMethod = "MethodFullBack")//fallbackMethod:调用失败的时候触发熔断方法
    public String MethodV3() throws IOException {
        ResponseEntity<String> forEntity = restTemplate.getForEntity("http://DomeService/main/getAll",String.class);
        return forEntity.toString();

    }

    public String MethodFullBack() throws IOException {

        return "服务器发生错误,请稍后重试。。。";

    }

组件:SpringCloud-geteway

依赖
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
geteway的作用是在配置文件中对网关规则进行配置
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你好!对于Spring Cloud Alibaba的学习笔记,我可以为你提供一些基本的信息和指导。在学习Spring Cloud Alibaba之前,你可能需要对Spring Cloud和Alibaba的相关技术有一定的了解。 Spring Cloud Alibaba是基于Spring Cloud开发的一套微服务框架,它融合了阿里巴巴的中间件技术栈,提供了一系列开箱即用的解决方案,包括服务注册与发现、分布式配置管理、消息驱动等功能。它旨在帮助开发者快速构建微服务架构。 以下是一些学习Spring Cloud Alibaba的步骤和资源推荐: 1. 了解Spring Cloud和Alibaba的基础知识:在开始学习Spring Cloud Alibaba之前,你需要对Spring Cloud和阿里巴巴的相关技术有一定的了解。你可以先学习Spring Cloud的核心概念和基本使用方式,再深入了解阿里巴巴的中间件技术栈。 2. 官方文档:Spring Cloud Alibaba官方文档是学习的重要参考资料,你可以从官方文档中了解框架的核心概念、使用方式以及各个组件的详细说明。 3. 示例代码:官方文档中通常会提供一些示例代码,你可以通过运行示例代码来实践学习,加深对框架的理解。 4. 开发实践:尝试在自己的项目中应用Spring Cloud Alibaba,可以从简单的项目开始,逐步扩展和深入应用框架的各个功能。 5. 社区资源:参与Spring Cloud Alibaba的相关社区活动,例如论坛、博客、技术分享等,与其他开发者交流和学习。 希望以上信息对你有所帮助!如果你有更具体的问题,欢迎继续提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值