Redis(主从复制、哨兵模式、集群)概述及部署

2023-11-09

目录

引言

壹、Redis主从复制

一、Redis的高可用

二、Redis持久化

1、Redis 提供两种方式进行持久化

2、RDB 持久化

三、Redis主从复制

1、Redis主从复制的概念

2、Redis主从复制

四、Redis主从复制的搭建

环境准备

(1)安装Redis(所有主机)​​​​​​​

(2)修改Master节点Redis配置文件

(3)修改Slave节点Redis配置文件

(4)验证主从效果

五、Redis 命令工具

1、redis-cli 命令行工具

2、redis-benchmark 测试工具

3、Redis 数据库常用命令

贰、Redis 哨兵模式

六、Redis 哨兵模式

1、Redis哨兵模式的原理

2、Redis哨兵模式的作用

3、Redis哨兵模式的结构

4、Redis故障转移的机制

5、Redis主节点的选举

1、Redis哨兵模式的搭建

(1)修改 Redis 配置文件(所有节点操作)

(2)启动哨兵模式

(3)查看哨兵模式信息

(4)故障模拟

(5)验证结果

(6)master的redis恢复过程

叁、Redis 集群模式

七、Redis 集群模式

1、Redis集群的概念

2、Redis集群的作用

3、Redis集群的数据分片

4、Redis集群模式的搭建


引言

在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。
但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据安全不会丢失等。

壹、Redis主从复制

一、Redis的高可用

  • 主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。
    • 缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。
  • 哨兵:在主从复制的基础上,哨兵实现了自动化的故障恢复。
    • 缺陷:写操作无法负载均衡;存储能力受到单机的限制。从节点无法实现故障切换。
  • 集群:通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。

二、Redis持久化

持久化的功能:Redis是内存数据库,数据都是存储在内存中,为了避免服务器断电等原因导致Redis进程异常退出后数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置。

1、Redis 提供两种方式进行持久化

RDB 持久化:原理是将 Reids在内存中的数据库记录定时保存到磁盘上。
AOF 持久化(append only file):原理是将 Reids 的操作日志以追加的方式写入文件,类似于MySQL的binlog。

由于AOF持久化的实时性更好,即当进程意外退出时丢失的数据更少,因此AOF是目前主流的持久化方式,不过RDB持久化仍然有其用武之地。

2、RDB 持久化

RDB持久化是指在指定的时间间隔内将内存中当前进程中的数据生成快照保存到硬盘(因此也称作快照持久化),用二进制压缩存储,保存的文件后缀是rdb;当Redis重新启动时,可以读取快照文件恢复数据。

三、Redis主从复制

1、Redis主从复制的概念

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点

默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

2、Redis主从复制

  1. 若启动一个Slave机器进程,则它会向Master机器发送一个"sync command"命令,请求同步连接。
  2. 无论是第一次连接还是重新连接,Master机器都会启动一个后台进程,将数据快照保存到数据文件中(执行RDB操作),同时Master还会记录修改数据的所有命令并缓存在数据文件中。
  3. 后台进程完成缓存操作之后,Master机器就会向Slave机器发送数据文件,Slave端机器将数据文件保存到硬盘上,然后将其加载到内存中,接着Master机器就会将修改数据的所有操作一并发送给Slave端机器。若Slave出现故障导致宕机,则恢复正常后会自动重新连接。
  4. Master机器收到Slave端机器的连接后,将其完整的数据文件发送给Slave端机器,如果Master同时收到多个slave发来的同步请求,则Master会在后台启动一个进程以保存数据文件,然后将其发送给所有的Slave端机器,确保所有的Slave端机器都正常。

四、Redis主从复制的搭建

环境准备

主机 IP地址
Master节点 192.168.187.48
Slave1节点 192.168.187.68
Slave2节点 192.168.187.78

关闭防火墙及核心防护

systemctl stop firewalld
setenforce 0

(1)安装Redis(所有主机)

yum install -y gcc gcc-c++ make
cd /opt
tar zxvf redis-5.0.7.tar.gz

cd /opt/redis-5.0.7/
make && make PREFIX=/usr/local/redis install

cd /opt/redis-5.0.7/utils
./install_server.sh
......
#回车四次后,手动输入,需要一次性输入正确
Please select the redis executable path [] /usr/local/redis/bin/redis-server  	

ln -s /usr/local/redis/bin/* /usr/local/bin/

(2)修改Master节点Redis配置文件

vim /etc/redis/6379.conf
#70行,修改bind 项,0.0.0.0监听所有网段
bind 0.0.0.0
#137行,开启守护进程
daemonize yes
#172行,指定日志文件目录
logfile /var/log/redis_6379.log
#264行,指定工作目录
dir /var/lib/redis/6379
#700行,开启AOF持久化功能
appendonly yes

/etc/init.d/redis_6379 restart

(3)修改Slave节点Redis配置文件

vim /etc/redis/6379.conf
#70行,修改bind 项,0.0.0.0监听所有网卡
bind 0.0.0.0
#137行,开启守护进程
daemonize yes
#172行,指定日志文件目录
logfile /var/log/redis_6379.log
#264行,指定工作目录
dir /var/lib/redis/6379
#288行,指定要同步的Master节点IP和端口
replicaof 192.168.187.48 6379
#700行,开启AOF持久化功能
appendonly yes

/etc/init.d/redis_6379 restart

slave1

slave2

(4)验证主从效果

  • 在Master节点上看日志
tail -f /var/log/redis_6379.log

  • 在主从节点上分别进行验证
redis-cli info replication

五、Redis 命令工具

redis-server		用于启动 Redis 的工具
redis-benchmark		用于检测 Redis 在本机的运行效率
redis-check-aof		修复 AOF 持久化文件
redis-check-rdb		修复 RDB 持久化文件
redis-cli	 		Redis命令行工具

1、redis-cli 命令行工具

语法:

redis-cli -h host -p port -a password
-h 指定远程主机
-p 指定 Redis 服务的端口号
-a 指定密码,未设置数据库密码可以省略-a 选项

2、redis-benchmark 测试工具

redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。

基本的测试语法:

redis-benchmark [选项] [选项值]
参数 说明
-h 指定服务器主机名。
-p 指定服务器端口。
-s 指定服务器 socket
-c 指定并发连接数。
-n 指定请求数。
-d 以字节的形式指定 SET/GET 值的数据大小。
-k 1=keep alive 0=reconnect
-r SET/GET/INCR 使用随机 key, SADD 使用随机值
-P 通过管道传输请求
-q 强制退出 redis。仅显示 query/sec 值。
-csv 以 CSV 格式输出
-l 生成循环,永久执行测试
-t 仅运行以逗号分隔的测试命令列表
-I Idle 模式。仅打开 N 个 idle 连接并等待

3、Redis 数据库常用命令

set 存放数据,命令格式为 set key value
get 获取数据,命令格式为 get key
keys 命令可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用
exists 命令可以判断键值是否存在
del 命令可以删除当前数据库的指定 key
type 命令可以获取 key 对应的 value 值类型

贰、Redis 哨兵模式

六、Redis 哨兵模式

前言

主从切换技术的方法是:当服务器宕机后,需要手动一台从机切换为主机,这需要人工干预,不仅费时费力而且还会造成一段时间内服务不可用。为了解决主从复制的缺点,就有了哨兵机制。

哨兵的核心功能:在主从复制的基础上,哨兵引入了主节点的自动故障转移。

1、Redis哨兵模式的原理

  • 哨兵(sentinel):是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 Master 并将所有 Slave 连接到新的 Master。所以整个运行哨兵的集群的数量不得少于3个节点。

2、Redis哨兵模式的作用

  • 监控:哨兵会不断地检查主节点和从节点是否运作正常。
  • 自动故障转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。
  • 通知(提醒):哨兵可以将故障转移的结果发送给客户端。

3、Redis哨兵模式的结构

哨兵结构由两部分组成,哨兵节点和数据节点:

  • 哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据。
  • 数据节点:主节点和从节点都是数据节点。

哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的 Redis 工作节点是否正常,当 Master 出现问题的时候,因为其他节点与主节点失去联系,因此会投票,投票过半就认为这个 Master 的确出现问题,然后会通知哨兵间,然后从 Slaves 中选取一个作为新的 Master。

注意:客观下线是主节点才有的概念;如果从节点和哨兵节点发生故障,被哨兵主观下线后,不会再有后续的客观下线和故障转移操作。

4、Redis故障转移的机制

  1. 由哨兵节点定期监控发现主节点是否出现了故障
    每个哨兵节点每隔1秒会向主节点、从节点及其它哨兵节点发送一次ping命令做一次心跳检测。如果主节点在一定时间范围内不回复或者是回复一个错误消息,那么这个哨兵就会认为这个主节点主观下线了(单方面的)。当超过半数哨兵节点认为该主节点主观下线了,这样就客观下线了。

  2. 当主节点出现故障,此时哨兵节点会通过Raft算法(选举算法)实现选举机制共同选举出一个哨兵节点为leader,来负责处理主节点的故障转移和通知。所以整个运行哨兵的集群的数量不得少于3个节点。

  3. 由leader哨兵节点执行故障转移,过程如下:

    • 将某一个从节点升级为新的主节点,让其它从节点指向新的主节点。

    • 若原主节点恢复也变成从节点,并指向新的主节点。

    • 通知客户端主节点已经更换。

需要特别注意的是,客观下线是主节点才有的概念;如果从节点和哨兵节点发生故障,被哨兵主观下线后,不会再有后续的客观下线和故障转移操作。

5、Redis主节点的选举

  1. 过滤掉不健康的(已下线的),没有回复哨兵 ping 响应的从节点。
  2. 选择配置文件中从节点优先级配置最高的。(replica-priority,默认值为100)
  3. 选择复制偏移量最大,也就是复制最完整的从节点。

注:哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式

1、Redis哨兵模式的搭建

环境配置

此时主从复制已搭建完成

主机 操作系统 IP地址 安装包
Master CentOS7 192.168.187.48 redis-5.0.7.tar.gz
Slave1 CentOS7 192.168.187.68 redis-5.0.7.tar.gz
Slave2 CentOS7 192.168.187.78 redis-5.0.7.tar.gz

(1)修改 Redis 配置文件(所有节点操作)

vim /opt/redis-5.0.7/sentinel.conf
#17行,关闭保护模式
protected-mode no
#21行,Redis哨兵默认的监听端口
port 26379
#26行,指定sentinel为后台启动
daemonize yes
#36行,指定日志存放路径
logfile "/var/log/sentinel.log"
#65行,指定数据库存放路径
dir "/var/lib/redis/6379"
#84行,修改 指定该哨兵节点监控192.168.187.48:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
sentinel monitor mymaster 192.168.187.48 6379 2
#113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel down-after-milliseconds mymaster 30000
#146行,故障节点的最大超时时间为180000(180秒)
sentinel failover-timeout mymaster 180000

Master:192.168.187.48 

Slave1:192.168.187.68

Slave2:192.168.187.78 

(2)启动哨兵模式

注意:先启master,再启slave

cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &

(3)查看哨兵模式信息

Master查看

redis-cli -p 26379 info Sentinel

(4)故障模拟

Master:192.168.80.20

#查看redis-server进程号
ps aux | grep redis
root      20089  0.1  0.1 156452  7392 ?        Ssl  14:32   0:04 /usr/local/redis/bin/redis-server 0.0.0.0:6379
root      20559  0.2  0.1 153892  7492 ?        Ssl  15:21   0:01 redis-sentinel *:26379 [sentinel]
root      20636  0.0  0.0 112724   988 pts/0    S+   15:28   0:00 grep --color=auto redis


#杀死 Master 节点上redis-server的进程号,模拟故障
kill -9 20089			#Master节点上redis-server的进程号

(5)验证结果

Master:

tail -f /var/log/sentinel.log

redis-cli -p 26379 INFO Sentinel

(6)master的redis恢复过程

如过要将以前的master的redis启动,需要先将/var/run/redis_6379.pid文件删除,删除后在执行/etc/init.d/redis_6379 start ,即可启动redis服务,启动之后,哨兵会将它设置为salve从节点,并自动指向新的节点。

最好再去配置文件中去指向主从复制的master,也就是将重新启动的master的配置文件/etc/redis/6379.conf 中的 288行重新指向新的master。

叁、Redis 集群模式

七、Redis 集群模式

1、Redis集群的概念

  • 集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。

  • 集群由多个节点(Node)组成,Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制。

2、Redis集群的作用

(1)数据分区

  • 数据分区(或称数据分片)是集群最核心的功能。
  • 集群将数据分散到多个节点,一方面突破了Redis单机内存大小的限制,存储容量大大增加;另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力。
    Redis单机内存大小受限问题,在介绍持久化和主从复制时都有提及;例如,如果单机内存太大,bgsave和bgrewriteaof的fork操作可能导致主进程阻塞,主从环境下主机切换时可能导致从节点长时间无法提供服务,全量复制阶段主节点的复制缓冲区可能溢出。

(2)高可用

  • 集群支持主从复制和主节点的自动故障转移(与哨兵类似);当任一节点发生故障时,集群仍然可以对外提供服务。

3、Redis集群的数据分片

  • Redis集群引入了哈希槽的概念
  • Redis集群有16384个哈希槽(编号0-16383)
  • 集群的每个节点负责一部分哈希槽
  • 每个Key通过CRC16校验后对16384取余来决定放置哪个哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作

以3个节点组成的集群为例
节点A包含0到5460号哈希槽
节点B包含5461到10922号哈希槽
节点C包含10923到16383号哈希槽

Redis集群的主从复制模型
集群中具有A、B、C三个节点,如果节点B失败了,整个集群就会因缺少5461-10922这个范围的槽而不可以用。
为每个节点添加一个从节点A1、B1、C1整个集群便有三个Master节点和三个slave节点组成,在节点B失败后,集群选举B1位为的主节点继续服务。当B和B1都失败后,集群将不可用

4、Redis集群模式的搭建

环境配置

redis的集群一般需要6个节点,3主3从。
先在六台服务器上安装redis数据库

主机 操作系统 IP地址:端口号 安装包
Master1 CentOS7 192.168.187.48:6371 redis-5.0.7.tar.gz
Master2 CentOS7 192.168.187.108:6372 redis-5.0.7.tar.gz
Master3 CentOS7 192.168.187.118:6373 redis-5.0.7.tar.gz
Slave1 CentOS7 192.168.187.68:6374 redis-5.0.7.tar.gz
Slave2 CentOS7 192.168.187.78:6375 redis-5.0.7.tar.gz
Slave3 CentOS7 192.168.187.98:6376 redis-5.0.7.tar.gz

(1)创建并复制相关文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis(主从复制、哨兵模式、集群)概述及部署 的相关文章

  • StackExchange.Redis 和 StackExchange.Redis.StrongName 之间有什么区别?

    当我关注Azure时文档 http azure microsoft com en us documentation articles cache dotnet how to use azure redis cache 关于如何在Azure
  • 连接到 localhost:6379 时出现错误 99。无法分配请求的地址

    设置 我有一个虚拟机 并在虚拟机中运行三个容器 一个 nginx 代理 一个非常简约的 Flask 应用程序和 redis Flask 应在端口 5000 上提供服务 而 redis 应在 6379 上提供服务 这些容器中的每一个都可以作为
  • Redis 块推送直到列表有空位

    我正在寻找类似的东西BLPUSH该命令将阻塞 直到列表的长度低于指定值max size 目的是防止生产者运行速度快于消费者时列表无限增长 功能与 python 非常相似Queue put https docs python org 3 li
  • 仅当尚未设置时才进行原子设置

    仅当尚未在 Redis 中设置时 是否有办法执行原子设置 具体来说 我正在创建一个像 myapp user user email 这样的用户 并且希望 Redis 在 user email 已被占用时返回错误 而不是默默地替换旧值 比如声明
  • redis集群不断打印日志WSA_IO_PENDING

    当我启动redis集群的所有redis服务器时 所有这些服务器不断打印类似WSA IO PENDING clusterWriteDone的日志 9956 03 Feb 18 17 25 044 WSA IO PENDING writing
  • Redis键空间事件不触发

    我有两个 Redis 客户端 在一个文件中我有一个简单的脚本设置并删除了 Redis 键 var redis require redis var client redis createClient 6379 127 0 0 1 client
  • Spring Data Redis JedisConnectionException:流意外结束

    雷迪斯3 0 5Spring数据Redis 1 3 6绝地武士2 6 3 我们的 Web 应用程序通过 pub sub 从 Redis 接收数据 还以键 值对的形式在 Redis 上执行数据读 写 读 写发生在监听线程 独立监控线程和htt
  • 如何将 ActionController::Live 与 Resque + Redis 一起使用(用于聊天应用程序)

    我正在尝试为我的 Rails 应用程序构建聊天功能 我在用ActionController Live Puma Resque Redis为了这 所以基本上在这种情况下 redissubscribe方法正在后台运行 使用resque 到目前为
  • 如何测试我的 Redis 缓存是否正常工作?

    我已经安装了 django redis cache 和 redis py 我遵循了 Django 的缓存文档 据我所知 以下设置就是我所需要的 但我如何判断它是否正常工作 设置 py CACHES default BACKEND redis
  • Redis SYNC 套接字上的错误情况:连接被拒绝

    在我的 django 应用程序中使用 celery 和 redis 一切都工作正常 直到我遇到了问题 redis 文件的位置已更改 redis 无法访问它们 经过查找 原来这是由于网络随机攻击造成的 需要添加confg 我添加文件后 一段时
  • socket.io 广播功能 & Redis pub/sub 架构

    如果有人能帮助我解决一个小疑问 我将不胜感激 使用socket io广播功能和在Redis上使用pub sub设计架构有什么区别 例如 在另一个示例中 node js 服务器正在侦听 socket io 针对 键 模型 todo 和值 数据
  • Redis Docker compose无法处理RDB格式版本10

    我无法在 docker compose 文件中启动 redis 容器 我知道docker compose文件没问题 因为我的同事可以成功启动项目 我读到有一个删除 dump rdb 文件的解决方案 但我找不到它 我使用Windows机器 任
  • Lua中按字符分割字符串

    我有像这样的字符串 ABC DEF 我需要将它们分开 字符并将两个部分分别分配给一个变量 在 Ruby 中 我会这样做 a b ABC DEF split 显然Lua没有这么简单的方法 经过一番挖掘后 我找不到一种简短的方法来实现我所追求的
  • Redis Cluster 与 Pub/Sub 中的 ZeroMQ,用于水平扩展的分布式系统

    如果我要设计一个巨大的分布式系统 其吞吐量应随系统中的订阅者数量和通道数量线性扩展 哪个会更好 1 Redis集群 仅适用于Redis 3 0 alpha 如果是集群模式 您可以在一个节点上发布并在另一个完全不同的节点上订阅 消息将传播并到
  • 有没有办法用Lettuce自动发现Redis集群中新的集群节点IP

    我有一个Redis集群 3主3从 运行在一个库伯内斯簇 该集群通过Kubernetes 服务 Kube 服务 我将我的应用程序服务器连接到 Redis 集群 使用Kube 服务作为 URI 通过 Redis 的 Lettuce java 客
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • 有没有办法让特定的key在集群模式下定位到特定的redis实例上?

    我想让我的多锁位于不同的redis实例上 我发现redission可以指定一个实例来执行命令 但是如果该命令与key相关 则指定的实例会将命令传输到另一个实例 你能给我一些建议吗 你可以 但这并不是微不足道的 首先 Redis 在键中使用大
  • 使用 Celery 通过 Gevent 进行实时、同步的外部 API 查询

    我正在开发一个 Web 应用程序 该应用程序将接收用户的请求 并且必须调用许多外部 API 来编写对该请求的答案 这可以直接从主 Web 线程使用 gevent 之类的东西来扇出请求来完成 或者 我在想 我可以将传入的请求放入队列中 并使用
  • 为什么Redis中没有有序的hashmap?

    Redis 数据类型 http redis io topics data types包括排序集 http redis io topics data types intro sorted sets以及其他用于键值存储的必要数据结构 但我想知道
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker

随机推荐

  • 计算机考研复试常问问题 软件工程篇

    1 什么是软件工程 软件工程是指导计算机软件开发和维护的一门工程学科 即利用工程的概念 原理 技术和方法来开发和维护软件 主要的方法 结构化方法 面向对象方法 原型方法等 软件工程三要素 方法 工具和过程 2 软件的生命周期 又称软件生存周
  • 基于Python开发的智能停车场车牌识别计费系统(源码+可执行程序+程序配置说明书+程序使用说明书)

    一 项目简介 本项目是一套基于Python开发的智能停车场车牌识别计费系统 主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者 包含 项目源码 项目文档等 该项目附带全部源码可作为毕设使用 项目都经过严格调试 确
  • 【elasticsearch】elasticsearch节点异常崩溃问题处理

    一 前言 今天对es集群做扩容节点操作 新增了一台节点 启动节点后 没过15分钟 监控报警节点es服务端口异常 第一次看日志并没有发现太明显的错误 于是并没有做操作 直接将该节点重新启动 结果不到10分钟时间 节点又崩溃了 看来得排查下问题
  • 【操作系统】王道考研 p16 调度算法:时间片轮转、优先级调度、多级反馈队列调度算法

    视频 知识总览 时间片轮转 RR Round Robin 常用于分时操作系统 更注重 响应时间 因此此处不计算周转时间 算法思想 公平地 轮流地为各个进程服务 让每个进程在一定时间间隔内都可以得到相应 算法规则 按照各进程到达就绪队列的顺序
  • LTE上行SC-FDMA 下行采用OFDMA的原因

    LTE下行是OFDMASC FDMA Single carrier Frequency Division Multiple Access 单载波频分多址 是LTE的上行链路的主流多址SC FDMA是单波载 Single carrier 与O
  • 进程调度的过程以及进程与线程的区别

    一 什么是进程 进程是操作系统对一个正在运行的程序的一种抽象 换言之 可以把进程看作程序的一次运行过程 同时 在操作系统内部 进程又是操作系统进行资源分配的基本单位 注意以上的运行出来的可执行程序 这些程序就是 进程 二 那么操作系统是如何
  • 中国移动:《2020年区块链+边缘计算白皮书》 PDF文字版

    中国移动 2020年区块链 边缘计算白皮书 PDF文字版 下载 访问密码 168168 中国移动5G联合创新中心与中兴通讯 区块链技术与数据安全工业和信息化部重点实验室 北京大学新一代信息技术研究院合作 共同发布了 区块链 边缘计算白皮书
  • 低版本Mac OS安装合适xcode的方法

    在虚拟机上安装完Mac OS10 14 在Apple Store上准备安装xcode时出现 xcode 不能安装在 Macintosh HD 上 因为需要 OS X V10 14 3 或更高版本 导致无法安装Xcode 如图 解决方法 不在
  • Oracle sql 判断某个字段不等于某个值

    看着很简单的一个问题 直接写sql select from user where userName 张三 但是运行一下 就会发现 如果userName有null值 那null值的记录也查不出来了 就是这么神奇 正确的sql select f
  • 手机已经开启调试模式还提示This adb server‘s $ADB_VENDOR_KEYS is not setTry ‘adb kill-server‘ if that seems wrong

    手机已经开启调试模式还提示This adb server s ADB VENDOR KEYS is not set Try adb kill server if that seems wrong Otherwise check for a
  • WPS进行分类汇总计算,并且提取统计结果的详细步骤

    1 首先选中要进行分类统计的数据 2 选择 数据 选项 3 然后找到 分类汇总 选项 再次弹出对话框 选择按照那一列进行分类汇总 并选择统计的计算方法 点击确定 5 默认统计结果都会在每一组的下一行 点击 隐藏明细数据 选项 即可仅显示统计
  • java软件工程师工作业绩_java软件工程师的工作描述怎么写

    展开全部 1 负责研发62616964757a686964616fe4b893e5b19e31333365656636公司应用软件的模块设计 开发和交付 2 负责编码 单元测试 3 按照功能组件的详细设计 4 对其他软件工程师的代码进行审核
  • 【网络】nmcli 网络管理工具

    目录 nmcli 命令 前提 重启网络服务 重启网卡 实例 nmcli输出说明 3种网络配置方法 nmcli的命令参数 Tips ethtool 命令 IP命令 添加网卡到配置文件 Linux系统怎么查看网卡的UUID nmcli 命令 原
  • 4:Git的树对象

    树对象 tree object 它能解决文件名保存的问题 就是树对象有自己的名字 也允许我们将多个文件组织到一起 Git 以一种类似于 UNIX 文件系统的方式存储内容 所有内容均以树对象和数据对象 git 对象 的形式存储 其中树对象对应
  • 本地Linux服务器安装宝塔面板,并内网穿透实现公网远程登录

    文章目录 前言 1 安装宝塔 2 安装cpolar内网穿透 3 远程访问宝塔 4 固定http地址 5 配置二级子域名 6 测试访问二级子域名 转载自cpolar极点云文章 Linux安装宝塔 并实现公网远程登录宝塔面板 内网穿透 前言 宝
  • 【软件测试学习笔记】黑盒测试方法及案例

    文章目录 一 黑盒测试基本概念 二 黑盒测试的主要目的 三 优缺点 优点 缺点 四 黑盒测试的策略 五 黑盒测试方法 等价类划分 分类 划分方法 原则 等价类划分案例 边界值分析法 原则 边界值分析法案例 因果图法 四种因果关系 五种约束
  • 05

    1 Harbor简介 Harbor是由VMWare公司开源的容器镜像仓库 实际上 Harbor是在Docker Registry上进行相应的企业级扩展 从而获得了更加广泛的应用 组件 功能 harbor adminserver 配置管理中心
  • CentOS7安装MySQL5.7.26

    安装MySQL 在CentOS中默认安装有MariaDB 这个是MySQL的分支 但为了需要 还是要在系统中安装MySQL 而且安装完成之后可以直接覆盖掉MariaDB 下载并安装MySQL官方的 Yum Repository root l
  • django添加数据库字段进行数据迁移

    1 修改view py里面的变量 2 在model py新增字段 3 打开terminal并将环境切到项目所在环境 切换方式为 4 执行命令 python manage py makemigrations backend python ma
  • Redis(主从复制、哨兵模式、集群)概述及部署

    目录 引言 壹 Redis主从复制 一 Redis的高可用 二 Redis持久化 1 Redis 提供两种方式进行持久化 2 RDB 持久化 三 Redis主从复制 1 Redis主从复制的概念 2 Redis主从复制 四 Redis主从复