
正文
redis微服务技巧,redis的服务量级
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
负载均衡,分布式,集群的理解,多台服务器代码如何同步?
分布式是指将不同的业务分布在不同的地方,集群指的是将几台服务器集中在一起,实现同一业务。在现有网络结构之上,负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。
其实负载均衡是可以理解为搭建集群的一部分,属于集群服务器的前置系统。比如,一个门户网站,请求流量过高的时候,为了保障服务器的正常稳定运行,由nginx来均摊请求到后台服务器。尽量保障每台服务器承受同等的负载。
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。
而集群指的是将几台服务器集中在一起,实现同一业务。 分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。
多台服务器协同工作,每台服务器叫做集群的一个“节点”,每个节点都提供相同的服务。优点:高性能、高可用性、可伸缩性 分类:负载均衡集群、高可用性集群、高性能集群 分布式架构 按照业务功能,将一个完整的系统拆分成一个个独立的子系统,每个子系统成为“服务”。
相关问答
Q1: 面试中问到Redis持久化的原理,本篇在做详细解答
可在redis.conf中配置,会以一段时间内达到指定修改的次数为规则来触发快照操作,快照文件名为dump.rdb。每当Redis服务重启的时候都会从该文件中把数据加载到内存中。在60秒内有10000次操作即触发RDB持久化。没有满足第一种条件时,在900秒内有1次操作即触发RDB持久化。
RDB 持久化机制 :是对 redis 数据执行周期性的持久化。这种方式就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为 dump.rdb。客户端也可以使用save或者bgsave命令通知redis做一次快照持久化。
当涉及到数据持久化,Redis提供了RDB和AOF两种策略。RDB通过快照实现,适用于快速恢复,而AOF采用写后日志,保证数据持久性,但可能带来写操作的阻塞。0版本引入了两者结合,平衡了恢复速度和资源消耗。Stream设计中,消息ID由时间戳和序号组成,保证消息顺序。
Q2: Redis的数据过期策略是什么
redis 过期策略是:定期删除+惰性删除。所谓定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。假设redis里放了10w个key,都设置了过期时间,每隔几百毫秒,就检查10w个key,那redis基本上就死了,cpu负载会很高的,消耗在检查过期key上了。
Redis的数据过期策略主要有两种:定时删除策略(TTL,Time To Live):1)定时删除策略是Redis最常用的数据过期策略。2)每个键都可以设置一个过期时间,表示键将在一定时间内自动过期。过期时间以秒为单位。当客户端尝试访问一个已经过期的键时,Redis将自动删除该键,并返回空值。
redis 过期策略是: 定期删除+惰性删除 。所谓定期删除,指的是 redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。
Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间。Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理。过期策略通常有以下三种:定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。
Q3: 正确地使用Redis的SETNX实现锁机制
1、可以使用 while 循环重复执行 setnx 命令,并设置一个超时时间退出循环。可以尽量把锁自动过期的时间设的冗余一些。但也不能彻底解决。可以在删除锁的时候先get值,判断值是否是当前线程存的随机值,只有相同才执行删锁的操作;当然也要使用 lua 脚本执行来保证原子性。
2、用SETNX实现分布式锁 利用SETNX非常简单地实现分布式锁。
3、第二个线程释放锁的时候,要不然出错,要不然是释放的其他线程的锁,这样也会和预期不符。如果单纯地要解决这个问题的话,可以在设置value的时候使用一个随机数,释放锁的时候,先判断这个随机数是否一致,如果一致再删除锁,否则就退出。
4、使用Redis实现分布式锁最简单的方案是使用命令SETNX。SETNX(SET if Not eXist)的使用方式为:SETNX key value,只在键key不存在的情况下,将键key的值设置为value,若键key存在,则SETNX不做任何动作。SETNX在设置成功时返回,设置失败时返回0。
5、可以使用 SETNX key value 命令实现互斥的特性。解释下:如果 key 不存在,则设置 value 给这个 key ,否则啥都不做。
6、在实践中,开发者通常使用Redis的其他特性来实现锁定的效果。例如,你可以使用Redis的SETNX(Set if Not Exists)命令来尝试获取一个锁。这个命令会尝试设置一个键值对,如果键已经存在,则设置失败;否则,设置成功。通过这种方式,你可以在一个分布式环境中实现一种“先到先得”的锁定机制。
redis微服务技巧的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于redis的服务量级、redis微服务技巧的信息别忘了在本站进行查找喔。






