数据持久化

Kubernetes数据持久化之Storage Class(自动创建PV)

限于喜欢 提交于 2020-02-25 18:57:44
通过博文 Kubernetes的存储之Volume 可以了解到Kubernets实现数据持久化的流程为: 搭建NFS底层存储——>创建PV——>创建PVC——>创建pod 最终将pod中的container实现数据的持久化! 从上述流程中,看似没有什么问题,但是仔细研究就会发现:PVC在向PV申请存储空间时,是根据指定PV的名称、访问模式、容量大小来决定具体向哪个PV申请空间的。 打比方说:如果PV的容量是20G,定义的访问模式是WRO(只允许以读写的方式挂载到单个节点),而PVC申请的存储空间为10G,那么一旦这个PVC是向上述的PV申请的空间,也就是说,那么PV有10G的空间被白白浪费了,因为其只允许单个节点挂载。这是一个非常严重的问题。就算不考虑这个问题,我们每次手动去创建PV也是比较麻烦的事情,这是就需要使用一个自动化的方案来替我们创建PV。这个自动化的方案就是——Storage Class(存储类)! Storage class(存储类)概述 Storage class(存储类)是Kubernetes资源类型的一种,它是由管理员为管理PV更加方便而创建的一个逻辑组,可以按照存储系统的性能高低、综合服务质量、备份策略等分类。不过Kubernetes本身并不知道类别到底是什么,这是一个简单的描述而已! 存储类的好处之一就是支持PV的动态创建,当用户用到持久化存储时

Python与Redis交互

淺唱寂寞╮ 提交于 2020-02-25 16:01:22
缓存系统 mongodb 直接持久化,宕机数据不丢失 redis 半持久化,手动控制,NoSQL数据库 memcache 不能持久化,存储在内存中,轻量级缓存 radis 单线程应用,通过异步实现多访存 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多, 包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。 这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。 在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。 区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis的安装 1 wget http://download.redis.io/releases/redis-3.0.6.tar.gz 2 tar xzf redis-3.0.6.tar.gz 3 cd redis-3.0.6 4 make 启动Radis 1 src/redis-server 客户端操作 1 src/redis-cli 2 redis> set name cq

Redis 之持久化

♀尐吖头ヾ 提交于 2020-02-24 14:27:29
目录 一.前言 二.持久化类型之 RDB 三.持节化类型之AOF 四.Redis 持久化类型的抉择 五.持久化的恢复 六.持久化问题的分析定位与优化 七.回顾总结 一.前言 首先,来回顾下前面文章的知识.Redis的特性之一就是读取速度快,因为它的数据是存储在内存中的,但是这样还有它的不足之处,那就是当你服务器断电时或者进程产生进退后,那么你所存储在内存中的数据也就荡然无存了,可是这样会给我们带来丢失数据的危险.而Redis正是考虑到了这一点,所以便有了持久化的功能.而持久化的作用正像它的名称一样,便是为了保持数据的持久. Redis的持久化类型有两种,一种是全量(RDB),一种是增量(AOF),今天这篇文章中便来聊聊这两种类型的特性和他们的优缺点,以及我们在这两种类型中如何做选择. 二.持久化类型之 RDB 1.什么事RDB? RDB是把Redis中的完整的数据生成一个快照,然后保存到硬盘当中,那么这就是一个RDB文件了,不过这个RDB文件是一个二进制的文件.当你的Redis服务重启时,它会去载入这样的RDB文件.其作用便是为了备份数据和恢复数据,当然它也是一个复制的媒介,对于Redis的主从复制正式利用这个文件来完成的. 2.触发机制 RDB的触发方式有两种,分别是:save(同步)和bgsave(异步).因为save的触发方式是同步的,那么它会阻塞当前的Redis服务器

redis专题之持久机制

南笙酒味 提交于 2020-02-24 14:14:52
redis的持久化机制 说白了,就是在指定的时间间隔内,将内存当中的数据集快照写入磁盘,它恢复时是将快照文件直接读到内存 什么意思呢?我们都知道,内存当中的数据,如果我们一断电,那么数据必然会丢失,但是玩过redis的同学应该都知道,我们一关机之后再启动的时候数据是还在的,所以它必然是在redis启动的时候重新去加载了持久化的文件 redis提供两种方式进行持久化 (1)RDB持久化【默认】 (2)AOF(append only file)持久化 1.RDB 原理是 redis会单独创建(fork)一个与当前进程一模一样的子进程来进行持久化 ,这个子进程的所有数据(变量。环境变量,程序程序计数器等)都和原进程一模一样,会先将数据写入到一个临时文件中,待持久化结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程不进行任何的io操作,这就确保了极高的性能。 问题:为什么要fork一个子进程? 因为redis是单线程的,如果这个线程去进行rdb持久化了,那么此时有客户端向我们服务端发送命令,他是得不到处理的(唯一的线程在做持久化),必须要等持久化结束后才能接受客户端命令。那么这个过程可以理解为客户端发送命令会阻塞,性能低下。 1).这个持久化文件在哪里 根据dir配置 2).他什么时候fork子进程,或者什么时候触发rdb持久化机制 shutdown时,如果没有开启aof

windows下体验Redis

血红的双手。 提交于 2020-02-24 04:32:01
Redis 是一个高性能的key-value数据库, 使用内存作为主存储,数据访问速度非常快,当然它也提供了两种机制支持数据持久化存储.比较遗憾的是,Redis项目不直接支持Windows,Windows版项目是由微软开放技术团队建立和维护一个实验性项目(支持32,64位),所以并不适用生产环境,但可在Windows环境下用于开发测试。 1.下载安装 猛戳 这里 就到了开源首页,下载源码包,解压ZIP包后进入msvs\bin\release文件夹有三个文件分别对应32,64位,windows服务三个版本,在这里我们选择64位为例,解压redisbin64.zip 到D:\redis2.4 , 这里主要用到redis-server.exe和redis-cli.exe, redis-server用于运行Redis服务器,redis-cli是命令行客户端,通过它连接Redis服务器,并使用Redis命令进行各种操作. 2.服务启动配置 复制源码包根目录下redis.conf到D:\redis2.4,打开CMD命令提示符,输入以下命令启动redis服务 启动: redis-server redis.conf 这样redis服务就启动成功了 配置: 更改redis的配置需要修改redis.conf文件,以下是它一些主要的配置注释 #是否作为守护进程运行 daemonize no #Redis

Redis_持久化(RDB&AOF)

让人想犯罪 __ 提交于 2020-02-24 03:03:07
文章目录 持久化简介 什么是持久化 为什么要进行持久化 持久化过程保存什么 RDB save指令 save指令相关配置 save指令工作原理 bgsave指令 bgsave指令工作原理 bgsave指令相关配置 save配置,Redis自动完成持久化 RDB三种启动方式对比 RDB特殊启动形式 RDB优点 RDB缺点 AOF AOF概念 AOF写数据过程 AOF写数据三种策略(appendfsync) AOF功能开启 AOF重写 AOF重写作用 AOF重写规则 AOF手动重写 AOF自动重写 AOF重写流程 RDB与AOF区别 对比 如何选择 持久化应用原则 参考 持久化简介 什么是持久化 利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。 为什么要进行持久化 防止数据的意外丢失,确保数据安全性 持久化过程保存什么 RDB:将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据 AOF: 将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程 RDB save指令 命令 save 作用 手动执行一次保存操作,会在data目录下生成一个dump.rdb文件 save指令相关配置 需要在对应端口的配置文件中添加以下设置 [ root@localhost conf ] # vim redis

redis学习笔记

僤鯓⒐⒋嵵緔 提交于 2020-02-24 02:52:19
问题一:项目中缓存是如何使用的?缓存如果使用不当会造成什么结果? 1.用缓存,主要有俩用途, 高性能 和 高并发 ,一般的中小型项目考虑 高并发 2.常见的缓存问题有以下三个: 缓存与数据库数据不一致 缓存雪崩 缓存穿透 缓存并发竞争 问题二:redis和memacached 有什么区别?Redis的线程模型是什么,为什么单线程的Redis比多线程的memacached效率要高得多? redis 和 memacached的区别? Redis支持的服务端的数据操作:Redis相比memacached来说,拥有更多的数据结构并支持更丰富的操作,通常在memacached中,你需要将数据拿到客户端来进行类似的修改在set回去,这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的get/set 一样高效。所以如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。 内存使用对比:使用简单的key -value 存储的话,memacached的内存利用率高;而Redis采用哈希结构来做key -value 存储,由于其组合式的压缩,其内村利用率要更高; 性能对比:由于redis是单核的,而memacached可以使用多核,所以平均每一个核上Redis在存储大量小数据时比memcached性能更高。而在100K以上数据

消息队列MQ(一)

℡╲_俬逩灬. 提交于 2020-02-24 00:35:29
消息队列 为什么要用消息队列,都有什么优缺点? 要问的是消息队列都有哪些场景,然后项目里具体实现的什么场景,你在这个场景里用的什么消息队列? 期望的回答是, 你们公司有个什么业务,这个业务场景有什么技术挑战,如果不用MQ可能会很麻烦,但是你现在用了MQ带给你什么好处? 场景比较多,但是比较核心的是3个: 解耦、异步、削峰 解耦 ​ 需要去考虑你负责的系统中是否有类似的场景,一个系统调用了多个系统和模块,互相之间的调用很复杂,维护起来很麻烦。但是这个调用并不需要直接同步调用接口,如果用MQ给它异步化解耦,也是可以的,你就需要 考虑在你的项目中,是不是可以运用这个MQ去进行解耦。在简历中体现出来 异步化 异步化可以大幅度提升高延迟接口的性能 削锋: 未使用MQ的时候: 使用MQ以后: 系统架构中引入MQ后可能存在的缺陷: 系统可用性降低:系统引入的外部依赖越多,越容易挂掉。 系统的复杂性更高:需要考虑的问题越多 一致性问题 问题2:kafka,activeMq,rabbitMq,rocketMq 都有什么优缺点? 特性 ACTIVEMQ RABBITMQ ROCKETMQ KAFKA 单击吞吐量 万级吞吐量,相比RocketMq和Kafka要第一个数量级 万级,吞吐量相比RocketMq和 Kafka要低一个数量级 10万级,RocketMq也是可以支撑高吞吐的一种MQ 10万级别

Redis基础学习

假装没事ソ 提交于 2020-02-22 15:21:50
Redis Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。是一款NOSQL系列的非关系型数据库 对于key-value的非关系数据库是比较适合做缓存的。那么Redis有什么用。比如当数据库中的某些数据是不经常改变的,这时就可以将这些数据存入到缓存中。当客户端读取数据时,可以直接从缓存中读取。从而减少了对数据库的访问。 Redis做缓存的流程和计算机的缓存差不多。当第一次查询数据时,发现缓存中没有数据,便从数据库读取数据。当从数据库读取到数据之后,将数据存入到redis中。下次读取数据时,便从redis缓存中直接读取 Redis是一个key-value型数据库,value所支持的类型有 1.string类型 2.hashmap类型 3.list类型 4.set类型 5.sortedset类型(有序集合) 环境搭建 http://www.redis.net.cn/ 官网下载 https://github.com/microsoftarchive/redis/releases github下载地址 redis.windows.conf:配置文件 redis-cli.exe:redis的客户端 redis-server.exe:redis服务器端

redis面试题

我的梦境 提交于 2020-02-20 17:53:56
文章正文 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性能问题和解决方案: 10、redis 过期键的删除策略? 11、Redis 的回收策略(淘汰策略)? 12、为什么 edis 需要把所有数据放到内存中? 13、Redis 的同步机制了解么? 14、Pipeline 有什么好处,为什么要用 pipeline? 15、是否使用过 Redis 集群,集群的原理是什么? 16、Redis 集群方案什么情况下会导致整个集群不可用? 17、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个? 18、Jedis 与 Redisson 对比有什么优缺点? 19、Redis 如何设置密码及验证密码? 20、说说 Redis 哈希槽的概念? 21、Redis 集群的主从复制模型是怎样的? 22、Redis 集群会有写操作丢失吗?为什么? 23、Redis 集群之间是如何复制的? 24、Redis 集群最大节点个数是多少? 25、Redis 集群如何选择数据库? 26、怎么测试