-
2021-08-07 05:57:44
1.spring-data-redis依赖没有Jedis的依赖。
说明:在SpringBoot2.x之后,原来使用的jedis被替换成了lettuce。
为什么要替换?jedis:采用的是直连,多个线程操作的话,是不安全的。避免不安全情况,只能采用jedis pool连接池。线程数量多的话,redis-server会变的非常大,类似于BIO(阻塞的)。
lettuce:采用的是netty,异步请求非常的快,实例可以在多个线程中共享,不存在线程不安全的情况,性能非常的高。类似于NIO(非阻塞的)。源码RedisAutoConfiguration.java说明
@Bean @ConditionalOnMissingBean(name = "redisTemplate")//我们可以自定义一个RedisTemplate来替换默认的 public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { //默认的RedisTemplate没有过多的设置, redis 对象都是需要序列化的 //两个泛型都是Object, Object的类型,我们后期使用需要强制转换<String,Object> RedisTemplate<Object, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); return template; } @Bean @ConditionalOnMissingBean//由于String是redis中最常使用的类型,所以单独提出了一个bean! public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { StringRedisTemplate template = new StringRedisTemplate(); template.setConnectionFactory(redisConnectionFactory); return template; }
RedisProperties属性类,用于对Redis的基本属性配置
LettuceConnectionConfiguration、JedisConnectionConfiguration,Redis的客户端类型,其中配置了连接工厂,连接池等,默认为Lettuce,底层引入了Lettuce客户端jar包
自动注入了RedisTemplate**<Object, **Object> : xxxTemplate;自动注入了StringRedisTemplate;k:v都是String
底层只要我们使用StringRedisTemplate、RedisTemplate就可以操作redis配置序列化方式
RedisTemplate默认的序列化方式为JdkSerializationRedisSerializer,会把对象序列化存储到Redis中(二进制形式),StringRedisTemplate的默认序列化方式为StringRedisSerializer。绝大多数情况下,不推荐使用 JdkSerializationRedisSerializer 进行序列化,主要是不方便人工排查数据。所以我们需要切换序列化方式。
Spring Data底层为我们实现了七种不同的序列化方式,大家可以根据需要进行选择,如下图所示
我们以Jackson2JsonRedisSerializer为序列化方式//使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式) Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper(); // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常 om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jacksonSeial.setObjectMapper(om); // 值采用json序列化 template.setValueSerializer(jacksonSeial); //使用StringRedisSerializer来序列化和反序列化redis的key值 template.setKeySerializer(new StringRedisSerializer()); // 设置hash key 和value序列化模式 template.setHashKeySerializer(new StringRedisSerializer()); template.setHashValueSerializer(jacksonSeial); template.afterPropertiesSet();
更多相关内容 -
微服务之分布式缓存Redis-第一章-Redis持久化
2022-05-17 22:22:522、save 命令 Redis 处理命令的方式是以单线程形式来进行的,客户端的请求都会放入一个队列里。当执行 save 命令时,如果执行时间很长的话,后面的请求就会被阻塞,客户端发送的所有命令都会被拒绝。 3、bgsave ...目录
一、单节点问题
二、持久化
持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。 在我们安装了redis之后,所有的配置都是在redis.conf文件中,里面保存了RDB和AOF两种持久化机制的各种配置。 当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘。
- RDB
- AOF
redis默认采用的是RDB的方式。
三、RDB 持久化
1、概念
RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,回复数据,快照文件成为RDB文件,模式保存在当前运行目录。
在默认配置中,Redis将内存数据库快照保存在名字为dump.rdb的二进制文件中。
可以配置持久化策略:save N M,让redis在“N秒内至少有M个改动”才会触发一次rdb持久化操作。
例如redis的默认策略有:
例如:# 3600秒内至少有一个改动 save 3600 1 # 300秒内至少有10个改动 save 300 100 # 秒内至少有10000个改动 save 60 10000
还可以手动执行命令生成RDB快照,进入redis客户端执行命令save或bgsave可以生成dump.rdb文件,
每次命令执行都会将所有redis内存快照到一个新的rdb文件里,并覆盖原有rdb快照文件。
2、save 命令
Redis 处理命令的方式是以单线程形式来进行的,客户端的请求都会放入一个队列里。当执行 save 命令时,如果执行时间很长的话,后面的请求就会被阻塞,客户端发送的所有命令都会被拒绝。
3、bgsave 命令
bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据。完成fork后读取内存数据并是写入到RDB文件。
bgsave的基本流程:- fork主进程得到一个子进程,共享内存空间
- 子进程读取内存数据并写入新的RDB文件
- 用新RDB文件替换旧的RDB文件
4、bgsave写时复制的(COW)机制
Redis借助了linux系统的写时复制(Copy-On-Write)技术,在生成快照的同时,仍然可以接收命令处理数据。简单来说,bgsave线程是由主线程fork生成的子线程,可以共享主线程所有的内存数据。bgsave线程运行后,开始读取主线程的内存数据,也就是redis的内存数据,将内存数据写入到dump.rdb文件中。此时,如果主线程处理的命令都是读操作,则bgsave线程不受影响。如果主线程处理了写操作,则会对该命令操作的数据复制一份,生成副本,bgsave线程会把这个副本写入到dump.rdb文件中,而在这个过程中,主线程仍可执行命令。
- 当主进程执行读操作时,访问共享内存
- 当主进程执行写操作时,则会拷贝一份数据,执行写操作
5、RDB什么时间执行
- 默认是服务停止时执行
- 根据配置的save N M执行
6、RDB缺点
- RDB执行间隔时间长,两次RDB之间写入数据有丢失的风险
- fork子进程、压缩、写出RDB文件都比较耗时
四、 AOF 持久化
1、概念
AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。
例如下入,set num 123 先保存到redis,同时写入日志文件。重启redis把日志重新执行一遍即可。
2、开启方式
AOF默认是关闭的,需要修改redis.conf配置文件来开启。
# 可以通过修改redis.conf配置文件中的appendonly参数开启 appendonly yes # AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的。 dir ./ # 默认的文件名是appendonly.aof,可以通过appendfilename参数修改 appendfilename "appendonly.aof"
AOF的命令记录的频率也可以通过redis.conf文件来配置。
3、记录频率
支持以下三种配置方式,性能越来越高,安全性越来越低
# 表示没执行一次写命令,立即记录到AOF文件 appendfsync always # 写命令执行完先放入AOF缓存区,然后表示每隔1秒将缓冲区数据写到AOF文件,是默认方案 appendfsync everysec # 写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区内容写回磁盘 appendfsync no
4、bgrewriteaof 重写命令
因为是记录命令,AOF文件比RDB文件大的多。而且AOF会记录对同一个key多次写操作,但只有最后一次写操作才有意义。通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同的效果。
它是一个异步命令,后台运行的。
Redis也会在触发阈值时自动去重写AOF文件。阈值也可以在redis.conf中配置:# AOF文件比上次文件 增长超过多少百分比则触发重写 auto-aof-rewrite-percentage 100 # AOF文件体积最小多大以上才触发重写 auto-aof-rewrite-min-size 64mb
五、RDB和AOF对比优缺点
-
阿里Java三面凉凉:微服务,Redis,JVM一个都搞不懂
2022-03-18 15:13:33金九银十刚刚过去了,不知道很多小伙伴都拿到自己心仪的offer没有,我这边也收到了一个粉丝投来的消息,说看到阿里的面试真题之后人都是懵的,发现自己一窍不通,下面给大家分享我这个粉丝的经历,以及我在这方面...前言:
金九银十刚刚过去了,不知道很多小伙伴都拿到自己心仪的offer没有,我这边也收到了一个粉丝投来的消息,说看到阿里的面试真题之后人都是懵的,发现自己一窍不通,下面给大家分享我这个粉丝的经历,以及我在这方面学习的经验。
阿里微服务面试真题
1.单片,SOA 和微服务架构有什么区别?
单片 SOA 和微服务之间的比较 – 微服务访谈问题
单片架构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密封装。
一个面向服务的架构是一种相互通信服务的集合。通信可以涉及简单的数据传递,也可以涉及两个或多个协调某些活动的服务。
微服务架构是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合。
2.在使用微服务架构时,您面临哪些挑战?
开发一些较小的微服务听起来很容易,但开发它们时经常遇到的挑战如下。
- 自动化组件:难以自动化,因为有许多较小的组件。因此,对于每个组件,我们必须遵循 Build,Deploy 和 Monitor 的各个阶段。
- 易感性:将大量组件维护在一起变得难以部署,维护,监控和识别问题。它需要在所有组件周围具有很好的感知能力。
- 配置管理:有时在各种环境中维护组件的配置变得困难。
- 调试:很难找到错误的每一项服务。维护集中式日志记录和仪表板以调试问题至关重要。
3.SOA 和微服务架构之间的主要区别是什么?
4.什么是领域驱动设计?
5.为什么需要域驱动设计(DDD)?
6.什么是 REST / RESTful 以及它的用途是什么?
7.什么是 Spring 引导的执行器?
8.在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?
微服务面试学习路线
注意,注意,上面的学习路线都是自己总计的,需要的朋友关注+转发+私信【架构资料】获取思维导图以及面试答案
阿里Redis面试真题:
1.Redis 与其他 key-value 存储有什么不同?
Redis 有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis 的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。Redis 运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样 Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
2.Memcache 与 Redis 的区别都有哪些?
1、存储方式 Memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis 有部份存在硬盘上,这样能保证数据的持久性。
2、数据支持类型 Memcache 对数据类型支持相对简单。 Redis 有复杂的数据类型。
3、使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis 直接自己构建了 VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
3.Redis持久化机制
4.缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
5.热点数据和冷数据是什么
6.redis的数据类型,以及每种数据类型的使用场景
7.Redis 常见性能问题和解决方案?
8.为什么Redis的操作是原子性的,怎么保证原子性的?
Redis面试学习路线
注意,注意,上面的学习路线都是自己总计的,需要的朋友关注+转发+私信【架构资料】获取思维导图以及面试答案
阿里JVM面试真题:
1.Java 中 WeakReference 与 SoftReference 的区别?
虽然 WeakReference 与 SoftReference 都有利于提高 GC 和 内存的效率,但是 WeakReference ,一旦失去最后一个强引用,就会被 GC回收,而软引用虽然不能阻止被回收,但是可以延迟到 JVM 内存不足的时候。
2.JVM 选项 -XX:+UseCompressedOops 有什么作用?为什么要使用
当你将你的应用从 32 位的 JVM 迁移到 64 位的 JVM 时,由于对象的指针从32 位增加到了 64 位,因此堆内存会突然增加,差不多要翻倍。
这也会对 CPU缓存(容量比内存小很多)的数据产生不利的影响。因为,迁移到 64 位的 JVM主要动机在于可以指定最大堆大小,通过压缩OOP 可以节省一定的内存。通过-XX:+UseCompressedOops 选项,JVM 会使用 32 位的 OOP,而不是 64 位的 OOP。
3.怎样通过 Java 程序来判断 JVM 是 32 位 还是 64位?
4.32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?
5.JRE、JDK、JVM 及 JIT 之间有什么不同?
6.怎么获取 Java 程序使用的内存?堆使用的百分比?
7.描述一下 JVM 加载 class 文件的原理机制
8.GC 是什么?为什么要有 GC?
JVM面试学习路线
注意,注意,上面的学习路线都是自己总计的,需要的朋友关注+转发+私信【架构资料】获取思维导图以及面试答案
总结:
金九银十过去了也不要气馁,还有新的金三银四,主要是要总计自己在面试中不够的点,多增加自己实战项目的经验,然后也可以多刷刷面试题,以免面试的时候不知道说什么,上面的面试真题就没有把所有的答案都总结给大家了,需要答案以及上面高清思维导图的朋友,可以关注小编+转发文章+私信【架构资料】获取,最后祝大家都能拿到自己心仪的offer。
-
微服务之分布式缓存Redis-第二章-搭建Redis主从架构
2022-05-22 22:42:28目录一、集群架构1、集群部署图2、节点分配二、准备实例节点和配置1、修改三台redis.conf文件,将其中的持久化模式改为默认的RDB模式,AOF保持关闭状态2、修改持久化文件存储位置3、修改每个实例的声明IP4、启动三、...目录
一、集群架构
1、集群部署图
单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。主节点负责写入,从节点只能读
2、节点分配
本次搭建主从同步集群使用了三台Centos系统服务器,共包含三个节点,一个主节点,两个从节点。
角色 IP地址 端口 master 192.168.0.101 6379 slave 192.168.0.102 6379 slave 192.168.0.103 6379 二、准备实例节点和配置
1、修改三台redis.conf文件,将其中的持久化模式改为默认的RDB模式,AOF保持关闭状态
# 开启RDB,注释下面语句 # save "" # 3600秒内至少有一个改动 save 3600 1 # 300秒内至少有10个改动 save 300 100 # 秒内至少有10000个改动 save 60 10000 ... ... # 关闭AOF appendonly no
2、修改持久化文件存储位置
如果是在单台机器安装三个redis,需要修改各自端口,各自持久化文件存储位置
# 持久化文件默认存储在redis安装目录下 dir .
3、修改每个实例的声明IP
虚拟机本身有很多个IP,为了避免将来混乱,我们需要在redis.conf文件中指定每一个实例的绑定ip信息,可以加在第一行格式如下:
replica-announce-ip 192.168.0.101
可以通过命令sed来加在第一行
sed -i '1a replica-announce-ip 192.168.0.101' redis.conf
4、启动
分别在三台机器执行如下,启动三个实例
redis-server redis.conf
三、开启主从关系
1、方法一:replicaof
我们分别进入192.168.0.102和192.168.0.103两个机器
# 连接 redis-cli -p 6379 # 执行replicaof replicaof 192.168.0.101 6379
2、方法二:slaveof
我们分别进入192.168.0.102和192.168.0.103两个机器
# 连接 redis-cli -p 6379 # 执行slaveof slaveof 192.168.0.101 6379
3、查看集群状态
进入master192.168.0.101
# 连接 redis-cli -p 6379 # 执行 INFO replication
看到类似如下信息:
四、主从同步原理
1、数据同步原理-全量同步
概念
主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave 在任何时候都可以发起全量同步。redis 策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。
主从同步第一次同步是全量同步
显示把快照RDB文件发送一次,因为bgsave是异步,所以过程中还会把其他的写入记录融baklog,后面同步baklog。
全量同步流程
- slave节点连接到master节点,并发送SYNC(请求增量同步)命令
- master节点判断replid,发现不一致,拒绝增量同步
- master将完整内存数据生成RDB快照,发送RDB到slave从节点
- slave清空本地数据,加载master发来的RDB
- master将RDB期间的命令记录在repl_baklog,并持续将log中的命令发送给slave
- slave执行接收到的命令,保持与master之间的同步
2、数据同步原理-增量同步
概念
主从第一次同步是全量同步,但如果slave重启后同步,则执行增量同步。而且repl_baklog是环形缓存,有大小上限,写满后会覆盖最早的数据。如果slave断开时间太久,导致数据被覆盖,则无法实现增量同步,只能再次全量同步。
五、优化Redis主从集群
- 在master中配置repl-diskless-sync yes启用无磁盘复制,避免全量同步时的磁盘IO
- Redis单节点上的的内存占用不要太大,减少RDB导致的过多磁盘IO
- 适当提高repl_backlog的大小,发现slave宕机时尽快实现故障恢复,尽可能避免全量同步
- 限制一个master节点上的slave的数量,如果实在太多slave,则采用主-从-从链式结构,减少master压力
-
spring cloud 微服务整合redis以及具体应用
2018-09-11 15:29:10首先,pom文件引入redis的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</... -
java面试总结之微服务与redis【四】
2019-04-09 11:21:351.将业务服务拆分成多个细小独立的服务 2.每个微服务都是独立可运行的 3.微服务本质是soa(面向服务架构)其是一种架构设计理念 4.(更多请自行搜索)微服务的好处 1.每个服务独立运行不受技术,数据库,等影响 2.由于... -
微服务之Redis中缓存击穿、缓存穿透和缓存雪崩
2022-03-22 17:03:58大部分人都知道Redis是用来做缓存的,那么关于缓存的三个常见问题,我们来聊一聊。 Redis中关于缓存常见的三个问题是:缓存穿透、缓存击穿和缓存雪崩。在谈这三个问题之前,我们先来了解一下缓存处理的流程。 一、... -
Redis--微服务中的高级用法
2020-08-06 18:45:27Redis--微服务中的高级用法Redis 的事务redis 事务正常执行redis 事务不会回滚watch 的值不一致不执行Redis 的流水线Redis 的发布订阅Redis 发布订阅源码浅分析addListenerlazyListenJava基础--synchronized原理详解... -
实现简单微服务单点登录(SpringSecurity+Gateway+Redis)
2022-03-17 08:28:43整个微服务项目有两个服务,一个用户鉴权服务和业务处理服务。基本需求是用户通过鉴权服务进行用户认证操作并返回令牌Token,后续通过token访问业务服务。 二、项目基本结构 - gateway - service - service-user -... -
论微服务接入Redis缓存和本地缓存,提高性能并发第一步!
2021-01-02 15:38:35一、缓存的概念 首先引入缓存还是有几个问题要...缓存一般用在非实时变化的数据上,当一个请求过来通过DB查询用了很长时间,后面这个数据几个小时可能都不会改变,这个时候我们便可以定义一个Key,把数据放到value中存 -
微服务框架(十二)Spring Boot Redis 缓存
2018-09-09 10:27:58此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,... 本文为Spring Boot集成Redis 本系列文章中所使用的框架版本为Spring Bo... -
7. .NET5微服务程序使用Redis
2021-04-06 11:27:42REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。 Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、... -
使用Redis分布式锁(Redisson)+自定义注解+AOP实现微服务重复请求控制
2022-04-13 10:46:17如果因网络问题、Nginx重试机制、微服务Feign重试机制或者用户故意绕过前端防抖和节流设置,直接频繁发起请求,都会导致系统防重请求失败,甚至导致后台产生多条重复记录,此时我们需要考虑在后台增加防重设置。... -
微服务架构-Redis实战原理剖析-076:Redis主从复制&哨兵机制&缓存雪崩&击穿&穿透解决方案
2021-02-23 11:01:38穿透解决方案1 本节课核心哨兵核心内容2 Redis集群主从之分概念4 Redis主从复制整个原理过程5 传统一主多从复制存在哪些问题6 在Redis中配置一主多从关系7 主从复制存在哪些缺陷Bug8 哨兵集群架构设计原理9 master... -
微服务分布式架构之redis篇
2020-10-04 18:04:18本篇主要总结redis相关 -
spring Cloud微服务架构实战项目系列之redis缓存用户注册微服务开发以及rabbitmq消息队列短信微服务开发(八...
2019-12-05 12:53:02文章目录序言1为什么要去使用rabbitmq2消息队列的应用场景3 redis缓存应用场景4 redis和rabbitmq安装5用户注册功能redis以及rabbitmq的结合使用5.1效果演示5.2功能分析5.2用户注册5.3功能测试5.4核心业务逻辑代码6... -
详细总结:分布式, Nginx Linux Redis 微服务 Dubbo框架 Quartz定时任务
2022-02-16 00:44:47分布式 2.1分布式概念 将业务模块按照特定的规则进行拆分.分别部署到不同的服务器实现了架构的解耦. ...1:模块之间耦合度太高,其中一个功能升级,其他的模块都得一起升级部署。 2:开发困难,各个团队开发最后都要整合在 -
python的flask微服务-一次flask+redis的微服务实战
2020-11-11 15:02:52编辑推荐:本文来自于jianshu,主要简单介绍了一个flask的app部署的环境搭建,以及各种配置的坑等相关知识。0x00 背景先说一下需求的场景,策划部门想做一个垂直领域的社区产品,类似与知乎那种,但受益人群是金融... -
微服务之远程缓存策略——Redis缓存更新策略
2020-11-07 16:37:24缓存是一个微服务设计时必须涉及的领域,然而我自己的微服务涉及的缓存封装比较低级,因此造成了团队使用缓存后的一些混乱——经常发现XXXKey没有缓存更新等问题,因此,我觉得有必要再回炉重造下,所以先学习点理论... -
Redis--多线程竞争同一key--解决方案
2021-11-11 19:42:14本文介绍多个微服务(多个线程)竞争同一个key该如何解决。 问题引出 本问题来自于一次面试:如果某个微服务起了多个实例,如果它们都去操作Redis的同一个key,会不会有问题?如果有问题如何解决? 本问题可以... -
Java面试--Redis
2020-03-23 17:29:01redis是什么语言开发的; Redis采用的是基于内存的采用的是单进程单线程模型的KV ...1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作... -
lamp-cloud微服务脚手架
2021-10-20 22:30:24+ SpringBoot(2.3.10.RELEASE)的SaaS微服务脚手架,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API、分布式事务、大文件断点分片续传等多个模块,支持多业务系统并行开发,可以作为... -
【微服务 从0开始 】Spring Cloud 简单搭建一个微服务项目
2022-04-18 19:41:37Spring boot 简介 构建一个微服务 -
单机、集群、分布式和微服务等相关概念解析以及Redis实现分布式锁
2020-07-01 16:17:14单机结构我想大家最最最熟悉的就是单机结构,一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了。整个项目所有的服务都由这台服务器提供。这就是单机结构。那么,... -
如何使用Redis进行微服务间通信
2018-06-21 09:37:43如果您碰巧有多个worker,那么它们可以通过在Redis上使用原子锁来决定谁在处理它(如果一个键在Redis中还不存在,那么只需设置一个键作为一个原子函数,这样您就可以确保无论哪个进程先执行它,都不会与其他进程发生... -
微服务21_多级缓存02:OpenResty/Nginx/Redis多级缓存
2022-04-07 08:57:34这里写自定义目录标题一、安装...Openresy获取请求id,拼接到返回结果中四、查询Tomcat五、Redis缓存预热六、查询Redis缓存七、Nginx本地缓存 一、安装OpenResty OpenResty是一个基于Nginx的高性能Web平台,用户方便 -
微服务 单点登录解决方案(Jwt + 认证中心redis + 多系统redis)
2020-10-11 19:04:47客户端携带jwt去多个系统认证 3.多系统(比如系统A)收到jwt,A解析并取出用户信息,先判断自己的A的redis中有没有jwt。 3.1 如果有,就合法,a系统可以继续执行业务逻辑。 3.2 如果没有就拿着jwt去认证中心验证... -
微服务网关限流(使用令牌桶算法基于redis的RateLimter限流算法)
2020-11-10 20:28:28网关可以做很多的事情,比如,限流,当我们的系统 被频繁的请求的时候,就有可能 将系统压垮,所以 为了解决这个问题,需要在每一个微服务中做限流操作,但是如果有了网关,那么就可以在网关系统做限流,因为所有的... -
lamp-cloud微服务脚手架-其他
2021-06-11 19:08:13+ SpringBoot(2.3.10.RELEASE)的SaaS微服务脚手架,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API、分布式事务、大文件断点分片续传等多个模块,支持多业务系统并行开发,可以作为...