阿里这款多级缓存框架一定要掌握,非常不错!

十一、多级缓存——多级缓存实战详解 多级缓存是在系统的不同层级进行数据缓存的一种策略,旨在提高数据访问效率。接入 Nginx将请求负载均衡到应用 Nginx。常见的负载均衡算法有轮询和一致性哈希。轮询可均衡负载,一致性哈希则能提升缓存命中率。应用 Nginx 本地缓存读取本地缓存(可以是 Lua Shared Dict、Nginx Proxy Cache 等)。如果命中,则直接返回缓存数据。这种缓存可以提升吞吐量,降低后端压力,特别是应对热点数据时非常有效。分布式缓存如果本地缓存未命中,则查询分布式缓存(如 Redis)。 阅读详情

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 

753f936522df2f834ea879e33ae17512.gif

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:juejin.cn/user/4068629
263428382/posts

ddbeb17fa2a07a1791d2f1529585d31e.jpeg


在实际应用中,并不是单一的使用本地缓存或者redis,更多是组合使用来满足不同的业务场景,于是如何优雅的组合本地缓存和远程缓存就成了我们要研究的问题,而这一点,阿里开源的jetcache组件帮我们实现了

1. jetcache简介

jetcache是阿里开源的基于java开发的缓存框架,支持多种缓存类型:本地缓存、分布式缓存、多级缓存。能够满足不同业务场景的缓存需求。

jetcache具有上手简单、性能高效、拓展性强的特点。支持缓存预热 、缓存key前缀等功能。结合spring-cache使用,可以实现十分优雅的缓存类型切换

官网地址:https://github.com/alibaba/jetcache

官方文档:https://github.com/alibaba/jetcache/tree/master/docs/CN

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

2. jetcache使用

1、引入依赖,这里我们使用sringboot项目框架,同时使用redis作为远程缓存。于是我们引入jetcache-starter-redis依赖,这里我的springboot版本为2.6.13

如果是非springboot项目可以参考官网说明配置

35f092e0029c3c7cefc9db9ca8c5e878.jpeg
<dependency>
            <groupId>com.alicp.jetcache</groupId>
            <artifactId>jetcache-starter-redis</artifactId>
            <version>2.7.0</version>
</dependency>

<!--        jetcache2.7.x版本需要额外添加该依赖-->
<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>4.3.1</version>
</dependency>

对应的版本说明如下:https://github.com/alibaba/jetcache/blob/master/docs/CN/Compatibility.md

650215328e48af0a47e0953dc8292e8e.jpeg

2、修改配置文件,配置redis地址和线程数

jetcache:
  # 统计间隔,0表示不统计,开启后定期在控制台输出缓存信息
  statIntervalMinutes: 15
  # 是否把cacheName作为远程缓存key前缀
  areaInCacheName: false
  # 本地缓存配置
  local:
    default: # default表示全部生效,也可以指定某个cacheName
      # 本地缓存类型,其他可选:caffeine/linkedhashmap
      type: linkedhashmap
      keyConvertor: fastjson
  # 远程缓存配置
  remote:
    default: # default表示全部生效,也可以指定某个cacheName
      type: redis
      # key转换器方式n
      keyConvertor: fastjson
      broadcastChannel: projectA
      # redis序列化方式
      valueEncoder: java
      valueDecoder: java
      # redis线程池
      poolConfig:
        minIdle: 5
        maxIdle: 20
        maxTotal: 50
      # redis地址与端口
      host: 127.0.0.1
      port: 6379

更详细的参数配置可参考官网说明:

ddebbd42fdd5b0f36ffbae86e71dfe03.jpeg

3、启动类添加注解@EnableCreateCacheAnnotation,开启缓存,添加@EnableMethodCache(basePackages = "com.example.jetcachedemo")注解,配置缓存方法扫描路径

4、使用缓存可以通过三种方式:

  • 方式一(推荐)AOP模式:通过@Cached,@CacheUpdate,@CacheInvalidate注解

@RestController
@RequestMapping("user")
public class UserController {

    @GetMapping("getRemote")
    @Cached(name="userCache:", key = "#id", expire = 3600, timeUnit = TimeUnit.SECONDS, cacheType = CacheType.REMOTE)
    public User getRemote(Long id){
        // 直接新建用户,模拟从数据库获取数据
        User user = new User();
        user.setId(id);
        user.setName("用户remote"+id);
        user.setAge(23);
        user.setSex(1);
        System.out.println("第一次获取数据,未走缓存:"+id);
        return user;
    }

    @GetMapping("getLocal")
    @Cached(name="userCache:", key = "#id", expire = 3600, timeUnit = TimeUnit.SECONDS, cacheType = CacheType.LOCAL)
    public User getLocal(Long id){
        // 直接新建用户,模拟从数据库获取数据
        User user = new User();
        user.setId(id);
        user.setName("用户local"+id);
        user.setAge(23);
        user.setSex(1);
        System.out.println("第一次获取数据,未走缓存:"+id);
        return user;
    }

    @GetMapping("getBoth")
    @Cached(name="userCache:", key = "#id", expire = 3600, timeUnit = TimeUnit.SECONDS, cacheType = CacheType.BOTH)
    public User getBoth(Long id){
        // 直接新建用户,模拟从数据库获取数据
        User user = new User();
        user.setId(id);
        user.setName("用户both"+id);
        user.setAge(23);
        user.setSex(1);
        System.out.println("第一次获取数据,未走缓存:"+id);
        return user;
    }

    @PostMapping("updateUser")
    @CacheUpdate(name = "userCache:", key = "#user.id", value = "#user")
    public Boolean updateUser(@RequestBody User user){
        // TODO 更新数据库
        return true;
    }

    @PostMapping("deleteUser")
    @CacheInvalidate(name = "userCache:", key = "#id")
    public Boolean deleteUser(Long id){
        // TODO 从数据库删除
        return true;
    }

}

这里要注意实体类User一定要实现序列化,即声明Serializable

@Data
public class User implements Serializable {

    private Long id;
    private String name;
    private Integer age;
    private Integer sex;
}
  • 方式二 API模式:通过@CreateCache,注:在jetcache 2.7 版本CreateCache注解已废弃,不推荐使用

@RestController
@RequestMapping("user2")
public class User2Controller {

    @CreateCache(name= "userCache:", expire = 3600, timeUnit = TimeUnit.SECONDS, cacheType = CacheType.BOTH)
    private Cache<Long, Object> userCache;

    @GetMapping("get")
    public User get(Long id){
        if(userCache.get(id) != null){
            return (User) userCache.get(id);
        }
        User user = new User();
        user.setId(id);
        user.setName("用户both"+id);
        user.setAge(23);
        user.setSex(1);
        userCache.put(id, user);
        System.out.println("第一次获取数据,未走缓存:"+id);
        return user;
    }

    @PostMapping("updateUser")
    public Boolean updateUser(@RequestBody User user){
        // TODO 更新数据库
        userCache.put(user.getId(), user);
        return true;
    }

    @PostMapping("deleteUser")
    public Boolean deleteUser(Long id){
        // TODO 从数据库删除
        userCache.remove(id);
        return true;
    }

}
  • 方式三 高级API模式:通过CacheManager,2.7 版本才可使用

(1)添加依赖

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.25</version>
</dependency>

(2)书写配置类

@Configuration
public class JetcacheConfig {

    @Autowired
    private CacheManager cacheManager;
    private Cache<Long, Object> userCache;

    @PostConstruct
    public void init(){
        QuickConfig qc = QuickConfig.newBuilder("userCache:")
                .expire(Duration.ofSeconds(3600))
                .cacheType(CacheType.BOTH)
                // 本地缓存更新后,将在所有的节点中删除缓存,以保持强一致性
                .syncLocal(false)
                .build();
        userCache = cacheManager.getOrCreateCache(qc);
    }

    @Bean
    public Cache<Long, Object> getUserCache(){
        return userCache;
    }
}

(3)调用代码

@RestController
@RequestMapping("user3")
public class User3Controller {

    @Autowired
    JetcacheConfig jetcacheConfig;
    @Autowired
    private Cache<Long, Object> userCache;

    @GetMapping("get")
    public User get(Long id){
        if(userCache.get(id) != null){
            return (User) userCache.get(id);
        }
        User user = new User();
        user.setId(id);
        user.setName("用户both"+id);
        user.setAge(23);
        user.setSex(1);
        userCache.put(id, user);
        System.out.println("第一次获取数据,未走缓存:"+id);
        return user;
    }

    @PostMapping("updateUser")
    public Boolean updateUser(@RequestBody User user){
        // TODO 更新数据库
        userCache.put(user.getId(), user);
        return true;
    }

    @PostMapping("deleteUser")
    public Boolean deleteUser(Long id){
        // TODO 从数据库删除
        userCache.remove(id);
        return true;
    }

}

多级缓存的形式,会先从本地缓存获取数据,本地获取不到会从远程缓存获取;关注工众号:码猿技术专栏,回复关键词:1111 获取阿里内部Java性能调优手册!

5、启动redis,启动演示项目

注意,如果启动出现NoClassDefFoundError: redis/clients/util/Pool或NoClassDefFoundError: redis/clients/jedis/UnifiedJedis报错,说明springboot与jetcache版本不一致,对应关系可参考上述第一步中的说明 同时如果使用的是jetcache2.7.x版本,因为该版本中有jedis包的依赖,需要额外添加如下依赖,或者将jetcache版本将至2.6.5以下

<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>4.3.1</version>
</dependency>

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

3. 测试

3.1 方式一测试

1、访问localhost:8088/user/getRemote?id=1

a5c8252e2c59e672ccea729dd5e2f177.jpeg

因为配置的是远程缓存,在redis中也能看到对应的key

a5c3ff5f82de0ef71b711decbe696a67.jpeg

2、访问localhost:8088/user/getLocal?id=1,这个方法是从本地缓存获取的,现在只有远程缓存上有数据,我们调用发现缓存数据还是拿到了,这说明当我们在配置文件中配置了本地缓存和远程缓存后,方式一中本地缓存和远程缓存会自动相互调用

比如本地缓存有这个key,redis中没有,通过远程缓存方式访问时,会先从redis获取,如果没有会自动获取本地缓存,但是数据还是存储在本地缓存,并不会同步到redis上,这样更加灵活的实现了多级缓存架构

732f9b30e37942b1d4298141d6966cc2.jpeg
3.2 方式二测试

1、再测试下CreateCache的形式:localhost:8088/user2/get?id=4

1d36289f75fe455970df80ab9e33ca15.jpeg

正常获取了,并且redis中也有了对应的值

119100ae74a1f25b5187287fa8900290.jpeg 而当我们把缓存方式更改为LOCAL后,再访问localhost:8088/user2/get?id=5

@CreateCache(name= "userCache:", expire = 3600, timeUnit = TimeUnit.SECONDS, cacheType = CacheType.LOCAL)

会发现redis中就没有对应缓存了,只在本地缓存存在,说明我们指定本地缓存的形式成功了

032303f5c8af934ff634b66d325c3836.jpeg
3.3 方式三测试

1、调用localhost:8088/user3/get?id=11

5fb6e2c342fca40c5d6e2f08f36eaab2.jpeg

redis中缓存设置成功!

abc8a77febf0a9f0a828bd6e7b6b6e50.jpeg

4. 常见报错

1、 ClassNotFoundException: com.alibaba.fastjson.JSON 解决:添加依赖

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.25</version>
</dependency>

2、NoClassDefFoundError: redis/clients/jedis/UnifiedJedis 解决: 添加依赖

<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>4.3.1</version>
</dependency>

或者将jetcache版本降低至2.6.5以下


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,“长按”或“扫描”下方二维码噢:

48ab5250039dfc4e10d1b51644b63b6f.png

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

8134ee0811995c1b53d2e4e532c70560.png

ff6d4a1f1cc92a0b876846e9a84c7395.pnga94dca0c9f9128b7b5d452e9e6df66f8.pngf08d36ee576dd17157bc7372db582796.pngfbc587c9c7f9209e2cfc7f591ab9f7fb.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
SpringBoot中集成阿里开源缓存访问框架JetCache实现声明式实例和方法缓存 上面讲的通过自定义注解的方式实现查询数据库数据缓存,除此之外还有更好的轮子。 阅读详情

相关推荐

J2Cache 基于内存和 Redis 的两级 Java 缓存框架

Java 两级缓存框架,可以让应用支持两级缓存框架 ehcache(Caffeine) + redis 。避免完全使用独立缓存系统所带来的网络IO开销问题。J2Cache 是 OSChina 目前正在使用的两级缓存框架(要求至少 Java 8)。第一级缓存使用内存(同时支持 Ehcache 2.x、Ehcache 3.x 和 Caffeine),第二级缓存使用 Redis(推荐)/Memcached 。 由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数。 该缓存框架主要用于集群环境中。单机也可使用,用于避免应用重启导致的缓存冷启动后对后端业务的冲击。

jetcache:阿里这款多级缓存框架一定要掌握

jetcache是阿里开源的基于java开发的缓存框架,支持多种缓存类型:本地缓存、分布式缓存、多级缓存。能够满足不同业务场景的缓存需求。jetcache具有上手简单、性能高效、拓展性强的特点。支持缓存预热 、缓存key前缀等功能。结合spring-cache使用,可以实现十分优雅的缓存类型切换。

55555的博客 4036

Hermes Agent Windows安装教程:本地智能体离线部署实战

本地智能体(Local Agent)是一种运行在用户设备端、无需云端依赖即可响应自然语言指令并自动化执行任务的轻量级AI运行时框架。其核心原理基于配置驱动的任务监听与脚本调用机制,通过服务化驻留实现持续响应能力,技术价值在于保障数据隐私、规避API调用限制、适配内网及老旧系统环境。典型应用场景包括财务报表自动整理、科研仪器数据归档、IT资产变更通知等Windows桌面自动化需求。本文聚焦Hermes Agent这一主流开源实现,围绕Windows平台特有的服务注册、权限模型、杀软拦截、中文路径与YAML编码

weixin_34411563的博客 433

JetCache-Alibaba缓存框架

JetCache 是一个高性能分布式缓存框架,可以为应用程序提供多种缓存模式和缓存管理功能。该框架支持本地缓存和分布式缓存,并提供了一系列缓存注解、缓存管理 API、缓存失效策略等特性来方便应用程序处理缓存数据。与其他缓存框架相比,JetCache 具有更好的性能、更灵活的配置以及更多的特性支持,可适用于各种场景的缓存需求。本篇文章介绍了 JetCache 的背景、设计理念、使用方式、示例等内容,旨在帮助开发者快速上手使用 JetCache 来提升应用程序的性能和可用性。

lzc翻身博客 8840

ARM架构下Horizon Client安装全攻略:从依赖检查到环境变量配置

本文详细介绍了在ARM架构设备上安装VMware Horizon Client的全过程,包括依赖检查、软件包获取、系统部署和环境变量配置。特别针对华为鲲鹏等ARM平台,提供了从基础准备到性能优化的完整指南,帮助用户高效完成虚拟桌面客户端的部署与调优。

github5actions的博客 553

别再只抄代码了!深入理解MQ2传感器数据手册,搞定ppm换算公式

本文深入解析MQ2烟雾传感器的工作原理与ppm换算公式,从数据手册解读到数学建模,提供详细的校准与优化方法。通过实际案例和代码示例,帮助开发者准确测量气体浓度,解决常见问题,提升传感器应用的可靠性。

weixin_42713608的博客 504

阿里开源的多级缓存框架,非常不错!

id=1,这个方法是从本地缓存获取的,现在只有远程缓存上有数据,我们调用发现缓存数据还是拿到了,这说明当我们在配置文件中配置了本地缓存和远程缓存后,方式一中本地缓存和远程缓存会自动相互调用。比如本地缓存有这个key,redis中没有,通过远程缓存方式访问时,会先从redis获取,如果没有会自动获取本地缓存,但是数据还是存储在本地缓存,并不会同步到redis上,这样更加灵活的实现了多级缓存架构。是阿里开源的基于java开发的缓存框架,支持多种缓存类型:本地缓存、分布式缓存、多级缓存。

犬小哈 208

Allegro规则管理器实战:5步搞定Xnet等长组设置(含Relative Propagation Delay配置)

本文详细介绍了在Cadence Allegro规则管理器中,通过5个实战步骤高效设置Xnet等长组的方法。核心内容包括创建Xnet属性、定义引脚对、建立匹配组,并重点讲解了Relative Propagation Delay规则的配置与应用,帮助PCB设计师确保高速信号时序对齐,提升系统稳定性与性能。

weixin_29193259的博客 518

Redis缓存系列:你所不知道的Redis热点问题以及如何发现热点

到此为止,

F1520080的博客 936

RK3576开发板ROS2部署实战:从Buildroot配置到Hello World Demo

本文详细介绍了在RK3576开发板上部署ROS2的完整实战流程。从Buildroot工程配置、集成ROS2依赖,到搭建Docker交叉编译环境、处理编译难题,最终完成系统镜像打包并在板端成功运行Talker-Listener Demo。该指南旨在帮助开发者深入理解嵌入式机器人系统的构建链,实现从底层到应用的完全掌控。

mac99的博客 1156

24位ADC的精度陷阱:为什么你的ADS1232实测性能不达标?

本文深入探讨了24位ADC芯片ADS1232在实际应用中性能不达标的原因,揭示了高精度ADC性能依赖周边电路设计的关键问题。通过分析电源系统、参考电压稳定性、PCB布局等常见陷阱,提供了优化方案和调试技巧,帮助工程师充分发挥ADS1232的潜力,实现接近理论值的测量精度。

weixin_28285943的博客 406

干货来了!阿里巴巴最新“SpringCloudAlibaba 学习笔记”开源。

Spring-Cloud-Alibaba 项目由阿里巴巴的开源组件和多个阿里云产品组成,旨在实现和公开众所周知的 Spring 框架模式和抽象,为使用阿里巴巴产品的 Java 开发者带来 Spring-Boot 和 Spring-Cloud 的好处。Spring Cloud Netflix 项目进入维护模式,将不再开发新的组件,SpringCloud 性能上不 能满足互联企业的发展需求。

csdn1234561231的博客 893

科研——BIBM论文修改和提交

BIBM的相关操作流程汇总

Blackoutdragon的博客 6689

Github上点赞34.5K!阿里巴巴“SpringCloudAlibaba” (全彩版小册限时开源)

使用 Spring Cloud Alibaba,只需添加一些注解和少量配置,即可将 Spring Cloud 应用连接到 Alibaba 的分布式解决方案中,并使用 Alibaba 中间件构建分布式应用系统。的开源组件和多个阿里云产品组成,旨在实现和公开众所周知的 Spring 框架模式和抽象,为使用阿里巴巴产品的 Java 开发者带来 Spring-Boot 和 Spring-Cloud 的好处。本文将详细介绍 Nacos 的安装、使用和集群构建过程,并以图文的形式介绍 Nacos 服务发现的基本原理。

m0_69632475的博客 859

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

互联网大厂Java面试实录:从音视频缓存到分布式事务

你好,谢飞机同学,欢迎来参加我们公司的Java开发工程师面试。我看你的简历上写着有音视频处理和电商系统开发经验,今天我们来聊聊相关的技术问题。:(紧张地搓着手)好的好的,面试官您好!我准备好了!

m0_63321493的博客 607

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

流传于阿里内部“SpringCloudAlibaba 学习笔记”终于开源了

Spring-Cloud-Alibaba 项目由阿里巴巴的开源组件和多个阿里云产品组成,旨在实现和公开众所周知的 Spring 框架模式和抽象,为使用阿里巴巴产品的 Java 开发者带来 Spring-Boot 和 Spring-Cloud 的好处。Spring Cloud Netflix 项目进入维护模式,将不再开发新的组件,SpringCloud 性能上不 能满足互联企业的发展需求。

m0_50180963的博客 1102

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

阿里内部“SpringCloudAlibaba全彩版学习笔记”正式开源

Spring-Cloud-Alibaba项目由阿里巴巴的开源组件和多个阿里云产品组成,旨在实现和公开众所周知的Spring框架模式和抽象,为使用阿里巴巴产品的Java开发者带来Spring-Boot和Spring-Cloud的好处。Spring Cloud Netflix 项目进入维护模式,将不再开发新的组件,SpringCloud性能上不 能满足互联企业的发展需求。但互联网发展又迫切需要解决微服务的方案,因此龙头企业阿里应运而生推出了Spring Cloud Alibaba新一代的微服务架构解决方案。

m0_50180963的博客 977

Github 上点赞 34.5K!阿里巴巴“SpringCloudAlibaba” (全彩版小册限时开源)

Spring-Cloud-Alibaba 项目由阿里巴巴的开源组件和多个阿里云产品组成,旨在实现和公开众所周知的 Spring 框架模式和抽象,为使用阿里巴巴产品的 Java 开发者带来 Spring-Boot 和 Spring-Cloud 的好处。使用 Spring Cloud Alibaba,只需添加一些注解和少量配置,即可将 Spring Cloud 应用连接到 Alibaba 的分布式解决方案中,并使用 Alibaba 中间件构建分布式应用系统。在这个阶段,我将给出这些组件的最佳实践和原理分析。

m0_46995061的博客 866

重磅!阿里首推内部“SpringCloudAlibaba项目文档”这细节讲解,神了!

Spring Cloud Alibaba为分布式应用开发提供了一站式解决方案。它包含开发分布式应用程序所需的所有组件,可以轻松地使用Spring Cloud开发应用程序。 使用Spring Cloud Alibaba,只需添加一些注解和少量配置,即可将Spring Cloud应用连接到Alibaba的分布式解决方案中,并使用Alibaba中间件构建分布式应用系统。 正是基于这些原因,我们有必要来学习SpringCloud Alibaba技术。那如何学习呢?市面上对于SpringCloud Alibaba

doubututou的博客 211

阿里发布的Spring Cloud Alibaba开发文档,涵盖了所有的操作

Spring-Cloud-Alibaba项目由阿里巴巴的开源组件和多个阿里云产品组成,旨在实现和公开众所周知的Spring框架模式和抽象,为使用阿里巴巴产品的Java开发者带来Spring-Boot和Spring-Cloud的好处。Spring Cloud Netflix 项目进入维护模式,将不再开发新的组件,SpringCloud性能上不 能满足互联企业的发展需求。但互联网发展又迫切需要解决微服务的方案,因此龙头企业阿里应运而生推出了Spring Cloud Alibaba新一代的微服务架构解决方案。

m0_50180963的博客 1053
上一篇: 如何实现一个合格的分布式锁
下一篇: 知乎热榜:为什么别选计算机专业?
公众号-芋道源码
博客等级 码龄10年 1631粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值