集群部署篇--Redis 集群动态伸缩
文章目录
- 前言
- 一、redis 节点的添加
- 1.1 redis 的实例部署:
- 1.2 redis 节点添加:
- 1.3 槽位分配:
- 1.4 添加从节点:
- 二、redis 节点的减少
- 2.1 移除主节点
- 2.1.1 迁移槽位
- 2.1.1 删除节点:
- 三、redis 删除节点的重新加入
- 3.1 加入节点:
- 四、redis 集群的故障转移:
- 4.1 某个主节点挂掉:
- 4.2 故障转移过程:
- 五、扩展:
- 5.1 redis 集群的cluster help命令:
- 5.2 redis 集群的cluster nodes命令:
- 5.3 `CLUSTER FORGET` 和 `del-node`:
- 总结
- 参考:
前言
在集群部署篇–Redis 集群分片模式 中我们知道了如果去部署redis 的分片集群,本文继续结束下集群节点的增加和删除。
一、redis 节点的添加
本文示例新添加3个节点,1主2从; redis 集群的一些操作指令可以参考 章节:五、扩展;
1.1 redis 的实例部署:
可以参考集群部署篇–Redis 集群分片模式 中 二、Redis 分片集群搭建:部署3个redis 实例;
1.2 redis 节点添加:
使用 --cluster add-node 进行节点添加:
docker exec -it fpredis-8379 redis-cli -p 8379 -a 123456 --cluster add-node 192.168.75.131:5379 192.168.75.131:8379
- docker exec -it fpredis-8379 redis-cli -p 8379 -a 123456 :用于连接某个redis 实例从而使用redis-cli 客户端
- –cluster add-node 添加节点命令
- 192.168.75.131:5379 新添加的节点信息 ip:端口
- 192.168.75.131:8379 已经存在于集群中的任意一个节点 ip:端口
可以看到会将加入的节点信息 告知集群;
查看新加入的要成为主节点的 node id 信息:连接集群中任意一个节点 执行 cluster nodes 命令(cluster nodes命令 参考 章节: 5.2 redis 集群的cluster nodes命令)
docker exec -it fpredis-5379 redis-cli -p 5379 -a 123456 -c cluster nodes
其中 第一列是node id,是改集群下节点的唯一id
;
1.3 槽位分配:
使用 --cluster reshard 从已经存在的主节点中索取槽位:
docker exec -it fpredis-5379 redis-cli -p 5379 -a 123456 --cluster reshard 192.168.75.131:8379
- docker exec -it fpredis-5379 redis-cli -p 5379 -a 123456 :用于连接某个redis 实例从而使用redis-cli 客户端
- –cluster reshard 交互式槽位分配命令
- 192.168.75.131:8379已经存在于集群中的任意一个节点 ip:端口
系统返回信息会提示我们要移动多少哈希槽,这里移动200个 输入200 然后回车;
然后 需要指定把这些哈希槽转移到哪个节点上,这里选择我们新加入的5379 节点:
35dc0f75b5d8c8818089bb3b6a4cc8717de7c9fb
选择迁移槽位模式:
-
all all 表示从所有的主节点中随机转移,凑够200个哈希槽;
-
done模式:需要你手动的去收入你要迁移的主节点id ,可以为多个接着可以输入 你要迁移的主节点的 节点id:
最后输入 done 表示输入完成;
如果输入的不是主节点id 会有错误提示:
然后再输入yes,redis集群就开始分配哈希槽:
这样新加入的主节点就获取到了相应的槽位,以及随着迁移过来的数据;
1.4 添加从节点:
将已经存在的redis 实例添加到集群;
docker exec -it fpredis-8379 redis-cli -p 8379 -a 123456 --cluster add-node 192.168.75.131:5479 192.168.75.131:8379
其中192.168.75.131:5479 为新加入的节点ip 及端口,192.168.75.131:8379 为集群中任意节点ip 及端口
查看集群节点信息:
在对应的从节点上执行
:
docker exec -it fpredis-5479 redis-cli -p 5479 -a 123456 CLUSTER REPLICATE 35dc0f75b5d8c8818089bb3b6a4cc8717de7c9fb
- docker exec -it fpredis-5479 redis-cli -p 5479 -a 123456 连接你要添加从节点的redis 实例 使用redis 客户端
- CLUSTER REPLICATE 添加从节点命令
- 35dc0f75b5d8c8818089bb3b6a4cc8717de7c9fb 要添加的主节点再集群中的唯一id
二、redis 节点的减少
集群中节点是由主从构成的,对于主从节点删除 也是不同的,对于注解点的删除,如果它拥有槽位需要先迁移槽位,在进行删除;对于从节点因为其只是同步主节点数据 可以直接将其从集群中删除;
2.1 移除主节点
2.1.1 迁移槽位
文中的例子是把拥有的全部槽位(10个),全部迁移到另外一台maser 节点上去
docker exec -it fpredis-5379 redis-cli -p 5379 -a 123456 --cluster reshard 192.168.75.131:8379
迁移的过程和 1.3 槽位分配
流程相同,在Redis集群中执行槽位(slot)的迁移时,涉及到槽位内的所有键值对数据也会一起迁移到目标节点。迁移完成,我们连接集群中任意一个节点在看下节点信息;
docker exec -it fpredis-5479 redis-cli -p 5479 -a 123456 -c cluster nodes
通过观察可以发现迁移完成后 ,之前的主节点现在已经变成了从节点;
2.1.1 删除节点:
通过del-node 命令删除节点:
docker exec -it fpredis-5379 redis-cli -p 5379 -a 123456 --cluster del-node 192.168.75.131:8379 43772a8e7c9be990df93c194d11b3bb71eecebca
-
docker exec -it fpredis-5379 redis-cli -p 5379 -a 123456 主要是为了进入某个redis 实例中从而使用redis 的客户端redis-cli
-
–cluster del-node 集群删除命令
-
192.168.75.132:8379 为集群中任意一个节点(可以连接你正在操作机器上 redis集群的一个实例)
-
43772a8e7c9be990df93c194d11b3bb71eecebca 为要删除的节点id
当然也可以将改主节点的从节点进行删除,只要将 节点id 换为从节点id 即可:
docker exec -it fpredis-5379 redis-cli -p 5379 -a 123456 --cluster del-node 192.168.75.131:8379 1f9319b915b590eaf4a84f35e3c4e0cb5e11fb84
三、redis 删除节点的重新加入
通过 --cluster add-node 将需要的节点加入到集群中,新加入的节点是 master 主节点,并且没有被分配槽位,可以为其分配槽位使其成为一个新的主节点,也可以让其成为已经存在主节点的一个从节点,流程同 一、redis 节点的添加
:本章节进行简单的概况
3.1 加入节点:
docker exec -it fpredis-8379 redis-cli -p 8379 -a 123456 --cluster add-node 192.168.75.131:5579 192.168.75.131:8379
查看节点的情况:
可以看到刚加入的节点是master 并且没有被分配槽位,重复 一、redis 节点的添加
可以为其分配槽位让其成为主节点,或者通过CLUSTER REPLICATE 命令让其成为某个主节点的从节点;
四、redis 集群的故障转移:
4.1 某个主节点挂掉:
查看集群节点的信息:
docker exec -it fpredis-5379 redis-cli -p 5379 -a 123456 -c cluster nodes
此时直接停掉主节点 5379 这个实例:
docker stop fpredis-5379
因为 fpredis-5379 实例已经被停到,此时使用它的一个从节点查看集群情况
docker exec -it fpredis-5479 redis-cli -p 5479 -a 123456 -c cluster nodes
可以看到 fpredis-5379 主节点已经 端口连接,并且已经选举出了新的主节点,接管了之前的槽位:此时我们恢复fpredis-5379 实例,它也知会成为集群的一个从节点:
4.2 故障转移过程:
在Redis集群中,当一个主节点宕机时,会触发故障转移(failover)过程。这个过程由Redis集群内的自动故障检测和转移机制控制。故障转移的主要目的是选举出一个新的主节点,以接替失效的主节点的角色,保证集群的高可用性。下面是主节点宕机后故障转移的大致流程:
-
故障检测
其他主节点会定期向集群中的所有其他节点发送PING消息。如果一个主节点在指定的时间内未能回应,其他节点就会怀疑该节点发生了故障。 -
选举流程
当足够数量的主节点(集群中大多数节点,至少 N/2 + 1,其中N为集群主节点总数)都认为一个主节点失效时,该主节点的从节点将开始选举流程。从节点会根据预设条件(例如复制偏移量、运行时间等)选举出一个从节点成为新的主节点。 -
晋升过程
选举出的从节点会将自己转变为主节点。这个过程涉及更新配置和发送通知给集群中的其他节点以获得它作为主节点的承认。 -
配置更新
新晋升的主节点负责接管原主节点负责管理的所有键槽(hash slots),并与集群中的其他节点通信以更新集群状态。 -
数据同步
一旦成为新的主节点,它将继续处理客户端请求,并开始与可能存在的其他从节点进行同步。这些从节点之前可能跟随的是旧的主节点,现在需要与新的主节点同步数据。 -
故障恢复
如果原来的主节点后来恢复了,它将被集群视为一个普通的从节点,并可能开始复制新的主节点的数据。它的所有键槽(hash slots)都已经移交给了新的主节点。
这个故障转移过程通常是自动进行的,但是Redis提供了手动干预的命令。例如,你可以使用CLUSTER FAILOVER
命令来触发从节点的故障转移过程。
在分布式系统中,故障转移完整性非常重要,是评估集群健壮性的一个关键指标。因此,Redis集群的设计目标之一是确保在面临节点宕机等各种故障时,能够迅速且自动地进行恢复。
五、扩展:
5.1 redis 集群的cluster help命令:
通过 cluster help 查看指令:
docker exec -it fpredis-5379 redis-cli -p 5379 -a 123456 --cluster help
-
create:创建集群
-
check:检查集群
-
info:查看集群信息
-
fix:修复集群
-
reshard:在线迁移slot
-
rebalance:平衡集群节点slot数量
-
add-node:添加新节点
-
del-node:删除节点
-
set-timeout:设置节点的超时时间
-
call:在集群所有节点上执行命令
-
import:将外部redis数据导入集群
5.2 redis 集群的cluster nodes命令:
当你在命令行中执行 redis-cli CLUSTER NODES
命令时,Redis 会返回集群中所有节点的状态信息。这些信息按行分隔,每个节点的信息包括以下字段:
<node-id> <ip:port> <flags> <master> <last-ping-sent> <last-pong-received> <config-epoch> <link-state> <slots>
每个字段具体解释如下:
- node-id: 唯一标识每个节点的ID。
- ip:port: 节点的IP地址和端口号。
- flags: 节点的角色和状态信息,如:
master
: 该节点是一个主节点。slave
: 该节点是一个从节点。myself
: 标识这是你当前与之交互的节点。fail?
: 疑似失败状态(其他节点怀疑该节点失败)。fail
: 失败状态(集群已经同意该节点失败)。handshake
: 节点处于加入集群的握手过程中。noaddr
: 没有有效的地址。
- master: 如果该节点是从节点,这里会显示它所属的主节点ID;如果该节点是主节点,则此字段为空。
- last-ping-sent: 上次发送
PING
的时间戳(毫秒)。 - last-pong-received: 上次收到
PONG
的时间戳(毫秒)。 - config-epoch: 节点的配置纪元,用于实现故障转移。
- link-state: 与此节点的连接状态,
connected
表示已连接,disconnected
表示断开连接。 - slots: 显示该节点负责的槽位。对于主节点,这会列出槽位范围和个别槽位;从节点则不显示此部分。
下面是一个简单的 CLUSTER NODES
输出示例:
07c37dfeb235213a872192d90877d0cd55635b91 127.0.0.1:7000@17000 master - 0 1407638882853 13 connected 0-5460
e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca 127.0.0.1:7001@17001 myself,master - 0 0 1 connected 5461-10922
在这个例子中,有两个主节点。第一个主节点 07c37dfeb235213a872192d90877d0cd55635b91
有槽位0到5460分配给它,并且目前状态是 connected
。第二个节点 e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca
是你当前连接的节点(myself
标志),它掌管槽位5461到10922,状态也是 connected
。
5.3 CLUSTER FORGET
和 del-node
:
“del-node”是一个redis-trib
脚本的操作,该脚本用于管理Redis集群。redis-trib
脚本中的"del-node"操作更像是一个集成操作,其实际上背后执行了如"CLUSTER FORGET"等一系列命令组合,来自动地移除一个节点。
-
CLUSTER FORGET:
- 这是一个Redis集群命令,用于让集群中的一个节点遗忘另一个节点。
- 执行
CLUSTER FORGET
命令时,需要在集群中的每个节点上分别对要遗忘的节点执行该命令,除了被遗忘节点本身之外。 - 这是一种底层的操作,需要手动在每个节点上执行。
-
del-node:
- 这是
redis-trib
(或者现在更常用的是redis-cli --cluster
)工具的一个操作,用于从集群中移除节点。 redis-trib
中的del-node
命令会在内部自动地对集群中的所有其他节点执行CLUSTER FORGET
命令,以移除目标节点。- 这可以被看作是一种更高层次的,自动化的操作,它简化了移除节点的复杂性,因为你只需运行一次命令,而不是手动到每个节点上去执行
CLUSTER FORGET
。
- 这是
例如,使用 redis-cli
工具移除集群节点可以像这样操作:
redis-cli --cluster del-node <cluster-node-ip>:<port> <node-id>
这里 <cluster-node-ip>:<port>
是集群中任一可达节点的IP和端口号,而 <node-id>
是需要被移除节点的ID。
所以,CLUSTER FORGET
是你需要手动在其他所有节点中对目标节点执行的底层命令,而del-node
是redis-trib
或redis-cli --cluster
工具提供的一个自动化命令,它会帮你完成在集群中其他所有节点上执行CLUSTER FORGET
的工作。
总结
Redis cluster 集群可以方便的通过集群命令进行节点的添加,槽位的分配,节点的下线操作。
参考:
深入学习Redis(四) Redis高可用之集群;
相关文章:
集群部署篇--Redis 集群动态伸缩
文章目录 前言一、redis 节点的添加1.1 redis 的实例部署:1.2 redis 节点添加:1.3 槽位分配:1.4 添加从节点: 二、redis 节点的减少2.1 移除主节点2.1.1 迁移槽位2.1.1 删除节点: 三、redis 删除节点的重新加入3.1 加入…...
excel中解决多行文本自动调整行高后打印预览还是显示不全情况
注意:此方法对于多行合并后单元格行高调整不适用,需要手动调整,如大家有简便方法,欢迎评论。 一、调整表格为自动调整行高 1)点击此处全选表格 2)在第一行序号单元格的下端,鼠标成黑十字时&am…...
策略模式+责任链模式配合Nacos实现参数校验链
1、业务场景 在SpringBoot项目中,针对接收的参数信息,根据需求要进行以下校验: 校验客户的apikey是否合法;校验请求的ip地址是否是白名单;校验短信的签名;校验短信的模板;校验手机号的格式合法…...
‘react-native‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
原因:没有下载react-native 解决下载react-native npm i -g react-native-cli...
c语言:求最小公倍数|练习题
一、题目 输入两个数,求两数的最小公倍数。 如图: 二、思路分析 1、先知道两个数里的最小值(比如:9和6,取6) 2、用2到6,5个数,同时除以9和6,得最小公约数:3 3、用9除33,6除32。得最小…...
嵌入式系统(二)单片机基础 | 单片机特点 内部结构 最小系统 电源 晶振 复位
上一篇文章我们介绍了嵌入式系统 嵌入式系统(Embedded System)是一种特定用途的计算机系统,它通常嵌入在更大的产品或系统中,用于控制、监测或执行特定的任务。这些系统通常由硬件和软件组成,旨在满足特定的需求&…...
NLP基础——中文分词
简介 分词是自然语言处理(NLP)中的一个基本任务,它涉及将连续的文本序列切分成多个有意义的单元,这些单元通常被称为“词”或“tokens”。在英语等使用空格作为自然分隔符的语言中,分词相对简单,因为大部分…...
阿里云服务器Alibaba Cloud Linux 3镜像版本大全说明
Alibaba Cloud Linux阿里云打造的Linux服务器操作系统发行版,Alibaba Cloud Linux完全兼容完全兼容CentOS/RHEL生态和操作方式,目前已经推出Alibaba Cloud Linux 3,阿里云百科aliyunbaike.com分享Alibaba Cloud Linux 3版本特性说明ÿ…...
WebGIS开发的常见框架及优缺点
WebGIS开发引擎的发展历程: 内容来自公众号:Spatial Data 地图API分类 WebGIS系统通常都围绕地图进行内容表达,但并不是有地图就一定是WebGIS,所以下面要讨论下基于Web的地图API分类及应用场景。Web上的Map API主要分类ÿ…...
ansible 配置jspgou商城上线(MySQL版)
准备环境 准备两台纯净的服务器进行,在实验之前我们关闭防火墙和selinux systemctl stop firewalld #关闭防火墙 setenforce 0 #临时关闭selinux hosts解析(两台服务器都要去做) [rootansible-server ~]# vim /etc/hosts 10.31.162.24 ansible-ser…...
算法导论复习——CHP22 分支限界法
LIFO和FIFO分枝-限界法 采用宽度优先策略,在生成当前E-结点全部儿子之后再生成其它活结点的儿子,且用限界函数帮助避免生成不包含答案结点子树的状态空间的检索方法。两种基本设计策略: FIFO检索:活结点表采用队列&#x…...
鸿蒙系列--装饰器
一、基础UI组件结构 每个UI组件需要定义为Component struct对象,其内部必须包含一个且只能包含一个build(){}函数,用于绘制UI;struct之内、build()函数之外的地方用于存放数据。 二、基本UI装饰器 Entry 装饰struct,页面的入口…...
FairGuard游戏加固产品常见问题解答
针对日常对接中,各位用户对FairGuard游戏加固方案在安全性、稳定性、易用性、接入流程等方面的关注,我们梳理了相关问题与解答,希望可以让您对产品有一个初步的认知与认可。 Q1:FairGuard游戏加固产品都有哪些功能? A:FairGuar…...
Redis(二)数据类型
文章目录 官网备注十大数据类型StringListHashSetZSetBitmapHyperLogLog:GEOStreamBitfield 官网 英文:https://redis.io/commands/ 中文:http://www.redis.cn/commands.html 备注 命令不区分大小写,key区分大小写帮助命令help…...
2023年广东省网络安全B模块(笔记详解)
模块B 网络安全事件响应、数字取证调查和应用安全 一、项目和任务描述: 假定你是某网络安全技术支持团队成员,某企业的服务器系统被黑客攻击,你的团队前来帮助企业进行调查并追踪本次网络攻击的源头,分析黑客的攻击方式,发现系统漏洞,提交网络安全事件响应报告,修复系统…...
每日力扣算法题(简单篇)
543.二叉树的直径 原题: 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 解题思路: …...
Flume基础知识(三):Flume 实战监控端口数据官方案例
1. 监控端口数据官方案例 1)案例需求: 使用 Flume 监听一个端口,收集该端口数据,并打印到控制台。 2)需求分析: 3)实现步骤: (1)安装 netcat 工具 sudo yum …...
通过IP地址如何进行网络安全防护
IP地址在网络安全防护中起着至关重要的作用,可以用于监控、过滤和控制网络流量,识别潜在威胁并加强网络安全。以下是通过IP地址进行网络安全防护的一些建议: 1. 建立IP地址白名单和黑名单: 白名单:确保只有授权的IP地…...
Vue.js 中使用 Watch 选项实现动态问题判断与展示答案
组件结构 以下是组件的基本结构: <template><div><!-- 输入框,用于输入问题 --><p>提出一个是/否问题:<input v-model"question" :disabled"loading" /></p><!-- 显示答案 --&…...
python笔记-自用
2024/1/3# python用号实现字符串的拼接,非字符串不能拼接 from pymysql import Connection# 连接mysql数据库salary 100 name "wang"ans "%s" % salary name print(ans)x 1 y 2 sum "%s %s" % (x, y) print(sum)# %s字符串占…...
安克创新与火山引擎数智平台开展合作:数据分析降门槛 数据协同破边界
更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,消费电子品牌安克创新与火山引擎数智平台(VeDI)达成合作,双方将聚焦安克创新大数据平台的海量数据分析场景&…...
LDD学习笔记 -- Linux内核模块
LDD学习笔记 -- 内核模块 简介LKM类型Static Linux Kernel ModuleDynamic Linux Kernel ModuleLKM编写语法 syntax详细描述内核头文件用户空间头文件Module Initialization FunctionModule Cleanup FunctionKeyword & Tag宏 __init __exitLKM入口注册Module Metadate&#…...
springboot整合springbatch批处理
springboot整合springbatch实现批处理 简介项目搭建步骤 简介 项目搭建 参考博客【场景实战】Spring Boot Spring Batch 实现批处理任务,保姆级教程 步骤 1.建表 建表sql CREATE TABLE student (id int NOT NULL AUTO_INCREMENT,name varchar(100) NOT NULL C…...
答案解析——C语言—第2次作业:转义字符
本次作业的链接如下:C语言—第2次作业:转义字符 1.下面哪个不是C语言内置的数据类型: C char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数 …...
HTML5-新增表单input属性
新增表单属性 form控件主要新增的属性: autocomplete 是否启用表单的自动完成功能,取值:on(默认)、off novalidate 提交表单时不进行校验,默认会进行表单校验 autocomplete属性 概念:autocomplete属性…...
css-、串联选择器和后代选择器的用法
& &表示嵌套的上一级,这是sass的语法,代表上一级选择器 .btn {&.primary {background-color: #007bff;color: #fff;} } 编译出来的结果是同一个元素,有两个类名,两个类名之间没有空格: .btn.primary {…...
nifi详细介绍--一款开箱即用、功能强大可靠,可用于处理和分发数据的大数据组件
目录 目录 一、引言 二、NiFi 的历史背景介绍 三、NiFi 是什么? 核心特性 应用领域 四、NIFI 入门 五 、NiFi 工作流程 六、实际应用场景 七、优势总结 一、引言 NiFi(Apache NiFi),全名为“Niagara Files”࿰…...
K8S Dashboard登录Token过期问题处理
整体思路 用户访问一个页面,在该页面中设置一个超链接,点击跳转至K8S Dashboard;跳转后,使用剪贴板上已复制的Token粘贴到Dashboard页面中的输入框登录即可。 写个定时任务将Token复制到页面上,过期了重新再登…...
x-cmd pkg | trafilatura - 网络爬虫和搜索引擎优化工具
目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trafilatura 是一个用于从网页上提取文本的命令行工具和 python 包: 提供网络爬虫、下载、抓取以及提取主要文本、元数据和评论等功能可帮助网站导航和从站点地图和提要中提取链接无需数据库,输出即可转换…...
前端知识点(面试可看) —— JS
摘要 马上就要毕业啦,没有参加2023年的秋招,准备在最近开始找全职或者实习工作,然后也马上过年了,总结和理一下自己的知识要点,参加2024年的春招。 1. JS的执行流程 浏览器的V8引擎收到到执行的JS代码V8结构化这段代…...
广州网站建设出售/苏州百度关键词优化
教你从零写vue穿梭框1. 前言2. 制作选择组件(select-input)2. 制作vue穿梭框组件(table-transfer)4. 将选择组件和穿梭框组件结合使用4.1 点击选择组件按钮,弹出穿梭框4.2 将select-input组件中的数据显示在弹框中的已…...
wordpress文章禁止搜索/百度网盘电脑版官网
OpenFeign 概述 Feign是一个声明式的web服务客户端,让编写web服务客户端变得非常容易,只需创建一个接口并在接口上添加Feign的注解即可 为什么要使用OpenFeign 前面在使用Ribbon RestTemplate时,利用RestTemplate对http请求进行了封装处理&…...
iapp用网站做软件代码/什么是软文推广
欢迎观看Illustrator教程,小编带大家学习Illustrator2022的基本工具和使用技巧,了解如何在 Illustrator 中创建、编辑以及应用自定义渐变。 Illustrator 提供多种着色方式, 让您可以创造性地运用色彩,包括在图稿上应用渐变。渐变…...
wordpress更新之后字体发生变化/杭州seo关键字优化
如何截取视频片段,只截取视频中间的一部分.我们从网上下载了一些视频,想要进行编辑,剪切之类的,往往会在选择软件上眼花缭乱。现在市面上有很多视频编辑的软件,有共享的,免费的,po解版的&#x…...
恋爱ppt模板免费下载网站/seo网站优化外包
http://www.cnblogs.com/sfger/p/3335672.html 原因是安装在有空格的目录下会出现以下错误: 经过头疼的排查后发现问题出现在:set diffexprMyDiff() 原来vim的自带的MyDiff函数有问题, 在_vimrc或.vimrc中找到下面代码: if &am…...
东莞常平建网站公司/百度引擎提交入口
Kubernetes创建初期,其本身在业界地位并不占优,前有长期占有主流市场的Mesos和基于Mesos的DCOS围追堵截,后有Docker Swarm依托自己的容器事实标准异军突起,反倒是Kubernetes只有谷歌的品牌。Kubernetes为什么能最后胜出࿰…...