Redis-全面了解数据耐久性和复原机制-深度解析-耐久化 (redis淘汰策略有哪些)
我们都知道在关于的开发或许面试的环节中,很容易就会遇到这个关于Redis耐久化的疑问,而我们在面试的时刻,经常会有小同伴只能说出这个Redis耐久化的两种形式,后续或许还会对比一些区别,然而关于怎样成功这个耐久化的操作,都不是很熟,而且也并没有实践运行过,以及什么时刻应该经常使用什么类型的耐久化,当天了不起就来给大家说说这个耐久化。
Redis耐久化
什么是Redis的耐久化,我们都知道,Redis是基于内存存储的key-value的数据库,那么假设出现断电了,这就会造成数据失落,那么耐久化就十分关键了,也就是说,可以把数据写入到硬盘上,而这个写入到硬盘上方的操作,就是耐久化。
Redis耐久化的两种形式
什么是RDB呢?
简而言之,就是在指定的时时期隔内,定时的将redis存储的数据生成Snapshot快照并存储到磁盘等介质上。
那么什么是AOF呢?
AOF则是将redis口头过的一切写指令记载上去,在下次redis从新启动时,只需把这些写指令从前到后再重复口头一遍,就可以成功数据复原了。
而Redis也是有自己自动的耐久化的形式的,那就是RDB。
RDB耐久化形式的原理
我们先说成功原理:
Redis经常使用操作系统的多进程COW(CopyOnWrite)机制来成功快照耐久化,这个机制很无心思,也很少人知道。多进程COW也是鉴定程序员常识广度的一个关键目的。
Redis在耐久化时会调用glibc的函数fork发生一个子进程,快照耐久化齐全交给子进程来处置,父进程继续处置客户端恳求。子进程刚刚发生时,它和父进程共享内存外面的代码段和数据段。这时你可以将父子进程想像成一个连体婴儿,共享身材。这是操作系统的机制,为了浪费内存资源,所以尽或许让它们共享起来。在进程分别的一瞬间,内存的增长简直没有显著变动。
子进程做数据耐久化,它不会修正现有的内存数据结构,它只是对数据结构启动遍历读取,而后序列化写到磁盘中。然而父进程不一样,它必定继续服务客户端恳求,而后对内存数据结构启动不连续的修正。
这个时刻就会经常使用操作系统的COW机制来启动数据段页面的分别。数据段是由很多操作系统的页面组合而成,当父进程对其中一个页面的数据启动修正时,会将被共享的页面复制一份分别进去,而后对这个复制的页面启动修正。这时子进程相应的页面是没有变动的,还是进程发生时那一瞬间的数据。
而这,就是fork,也就是多进程。
那么我们应该怎样去性能,而后怎样知道这个自动的耐久化形式呢?
RDB修正耐久化
在redis.conf中,可以修正rdb备份文件的称号,默以为dump.rdb,如下:
图片
图片
而寄存目录也是默以为Redis启动命令所在的目录
从这里我们能去性能Redis的耐久化的形式。
接上去我们就得看看怎样能触发这个耐久化的规定了。
触发RDB耐久化操作
图片
性能文件我们能看看到。
900秒(15分钟)后,假设至少有一个按键出现变动。
300秒(5分钟)后,假设至少有10个按键出现变动
60秒后,假设至少有10000个密钥出现更改
而这个save就是用来性能备份的规定的。
其实这个就是相当于是智能备份了,这特性能间接都是经常使用的自动,或许我们自己去修正这个save的操作。
假设我们想要复原备份其实很便捷,其实当你重启的时刻,他自动会从我们刚才看到的dir下去复原,所以,假设你修正了备份的目录,那么你想复原备份,那么你就得之前的dump.rdb放到dir的上方,而后重启redis就可以复原了。
既然我们了解了这个RDB耐久化了,那么接上去就得来说说这个AOF耐久化了。
AOF耐久化
AOF日志存储的是Redis主机的顺序指令序列,AOF日志只记载对内存启动修正的指令记载。
假定AOF日志记载了自Redis实例创立以来一切的修正性指令序列,那么就可以经过对一个空的Redis实例顺序口头一切的指令,也就是「重放」,来复原Redis以后实例的内存数据结构的形态。
所以依照经常使用来说,更多的人会选择RDB的耐久化。
写入操作
Redis在收到客户端修正命令后,先启动相应的校验,假设没疑问,就立行将该命令存追加到.aof文件中,也就是先存到磁盘中,而后主机再口头命令。这样就算遇到了突发的宕机状况状况,也只需将存储到.aof文件中的命令,启动一次性命令重演就可以复原到宕机前的形态。
也就是说,他是先存磁盘,而后再去口头命令。
而Redis为了优化写入效率,它不会将内容间接写入到磁盘中,而是将其放到一个内存缓存区(buffer)中等到缓存区被填满时驳回异步真正将缓存区中的内容写入到磁盘里。
所以就有了疑问,假设机器突然宕机,AOF日志内容或许还没有来得及齐全刷到磁盘中,这个时刻就会出现日志失落。
我们都能知道这么艰深的疑问,那么Redis必定是可以处置的,处置打算都很粗犷,间接就是性能文件上写明了。
图片
主机每一秒调用一次性fsync函数,将缓冲区外面的命令写入到硬盘。这种形式下,主机出现缺点,最多只失落一秒钟内的口头的命令数据,通常都经常使用它作为AOF性能战略
主机每写入一个命令,就调用一次性fsync函数,将缓冲区外面的命令写入到硬盘。这种形式下,主机出现缺点,也不会失落任何曾经成功口头的命令数据,然而其口头速度较慢
主机不被动调用fsync函数,由操作系统选择何时将缓冲区外面的命令写入到硬盘。这种形式下,主机遭逢异常停机时,失落命令的数量是不确定的,所以这种战略,不确定性较大,不安保。
而我们假设选择了AOF,那么在消费环境的主机中,Redis通常是每隔1s左右口头一次性fsync操作(Everysec),这样既坚持了高性能,也让数据尽或许的少失落。
AOF性能开启
AOF自动不开启,可以在redis.conf文件中对AOF启动性能开启:
appendonlyno#能否开启AOF,yes:开启,no:不开启,默以为noappendfilename"appendonly.aof"#aof文件称号,默以为appendonly.aofdir./#aof文件所在目录,自动./,示意口头启动命令时所在的目录
AOF的备份复原
AOF的备份机制和性能只管和RDB不同,然而备份和复原的操作同RDB一样,都是拷贝备份文件,须要复原时再拷贝到Redis上班目录下,启动系统即加载。
所以关于Redis的耐久化操作,你学会了么?
以下哪些属于集中化大数据平台外部采集数据
如何从0到1搭建大数据平台大数据时代这个词被提出已有10年了吧,越来越多的企业已经完成了大数据平台的搭建。 随着移动互联网和物联网的爆发,大数据价值在越来越多的场景中被挖掘,随着大家都在使用欧冠大数据,大数据平台的搭建门槛也越来越低。 借助开源的力量,任何有基础研发能力的组织完全可以搭建自己的大数据平台。 但是对于没有了解过大数据平台、数据仓库、数据挖掘概念的同学可能还是无法顺利完成搭建,因为你去网络查的时候会发现太多的东西,和架构,你不知道如何去选择。 今天给大家分享下大数据平台是怎么玩的。 00 架构总览通常大数据平台的架构如上,从外部采集数据到数据处理,数据显现,应用等模块。 01 数据采集用户访问我们的产品会产生大量的行为日志,因此我们需要特定的日志采集系统来采集并输送这些日志。 Flume是目前常用的开源选择,Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方的能力。 02 数据存储无论上层采用何种的大规模数据计算引擎,底层的数据存储系统基本还是以HDFS为主。 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础。 具备高容错性、高可靠、高吞吐等特点。 HDFS存储的是一个个的文本,而我们在做分析统计时,结构化会方便需要。 因此,在HDFS的基础上,会使用Hive来将数据文件映射为结构化的表结构,以便后续对数据进行类SQL的查询和管理。 03 数据处理数据处理就是我们常说的ETL。 在这部分,我们需要三样东西:计算引擎、调度系统、元数据管理。 对于大规模的非实时数据计算来讲,目前一样采用Hive和spark引擎。 Hive是基于MapReduce的架构,稳定可靠,但是计算速度较慢;Spark则是基于内存型的计算,一般认为比MapReduce的速度快很多,但是其对内存性能的要求较高,且存在内存溢出的风险。 Spark同时兼容hive数据源。 从稳定的角度考虑,一般建议以Hive作为日常ETL的主要计算引擎,特别是对于一些实时要求不高的数据。 Spark等其他引擎根据场景搭配使用。 实时计算引擎方面,目前大体经过了三代,依次是:storm、spark streaming、Flink。 Flink已被阿里收购,大厂一直在推,社区活跃度很好,国内也有很多资源。 调度系统上,建议采用轻量级的Azkaban,Azkaban是由Linkedin开源的一个批量工作流任务调度器。 一般需要自己开发一套元数据管理系统,用来规划数据仓库和ETL流程中的元数据。 元数据分为业务元数据和技术元数据。 业务元数据,主要用于支撑数据服务平台Web UI上面的各种业务条件选项,比如,常用的有如下一些:移动设备机型、品牌、运营商、网络、价格范围、设备物理特性、应用名称等。 这些元数据,有些来自于基础数据部门提供的标准库,比如品牌、价格范围等,可以从对应的数据表中同步或直接读取;而有些具有时间含义的元数据,需要每天通过ETL处理生成,比如应用信息。 为支撑应用计算使用,被存储在MySQL数据库中;而对于填充页面上对应的条件选择的数据,则使用Redis存储,每天/月会根据MySQL中的数据进行加工处理,生成易于快速查询的键值对类数据,存储到Redis中。 技术元数据,主要包括数据仓库中的模型说明、血缘关系、变更记录、需求来源、模型字段信息等,详细的可以查看数据分析师应该了解的数据仓库(3)04 数据流转通过上面一张图了解数据采集,数据处理,到数据展现的数据流转。 通常我们在实际工作中,从数据源到分析报告或系统应用的过程中,主要包括数据采集同步、数据仓库存储、ETL、统计分析、写入上层应用数据库进行指标展示。 这是最基础的一条线,现在还有基于数据仓库进行的数据分析挖掘工作,会基于机器学习和深度学习对已有模型数据进一步挖掘分析,形成更深层的数据应用产品。 05 数据应用俗话说的好,“酒香也怕巷子深”。 数据应用前面我们做了那么多工作为了什么,对于企业来说,我们做的每一件事情都需要体现出价值,而此时的数据应用就是大数据的价值体现。 数据应用包括辅助经营分析的一些报表指标,商城上基于用户画像的个性化推送,还有各种数据分析报告等等。 数据采集系统01 “大”数据海量的数据当你需要搭建大数据平台的时候一定是传统的关系型数据库无法满足业务的存储计算要求了,所以首先我们面临的是海量的数据。 复杂的数据复杂数据的概念和理想数据完全相反。 所有数据集都有一定的复杂性,但有一些天生更难处理。 通常这些复杂数据集没有定义结构(没有行列结构),经常变化,数据质量很差。 比如更新的网页日志,json数据,xml数据等。 高速的数据高速数据通常被认为是实时的或是准实时的数据流。 数据流本质上是在生成后就发给处理器的数据包,比如物联网的穿戴设备,制造业的传感器,车联网的终端芯片等等。 处理实时数据流有很多挑战,包括在采集时不丢失数据、处理数据流中的重复记录、数据如何实时写入磁盘存储、以及如何进行实时分析。 02 采集工具日志采集我们业务平台每天都会有大量用户访问,会产生大量的访问日志数据,比如电商系统的浏览,加入购物车,下订单,付款等一系列流程我们都可以通过埋点获取到用户的访问路径以及访问时长这些数据;再比智能穿戴设备,实时都会采集我们的血压、脉搏、心率等数据实时上报到云端。 通过分析这些日志信息,我们可以得到出很多业务价值。 通过对这些日志信息进行日志采集、收集,然后进行数据分析,挖掘公司业务平台日志数据中的潜在价值。 为公司决策和公司后台服务器平台性能评估提高可靠的数据保证。 系统日志采集系统做的事情就是收集日志数据提供离线和在线的实时分析使用。 目前常用的开源日志收集系统有Flume、Logstash、Filebeat。 可以根据自己公司的技术栈储备或者组件的优缺点选择合适的日志采集系统,目前了解到的Flume使用的比较多。 各个采集工具的对比如下:具体组件的相关配置可以参考之前的文章《日志收集组件—Flume、Logstash、Filebeat对比》数据库抽取企业一般都会会使用传统的关系型数据库MySQL或Oracle等来存储业务系统数据。 每时每刻产生的业务数据,以数据库一行记录的形式被直接写入到数据库中保存。 大数据分析一般是基于历史海量数据,多维度分析,我们不能直接在原始的业务数据库上直接操作,因为分析的一些复杂SQL查询会明显的影响业务数据库的效率,导致业务系统不可用。 所以我们通常通过数据库采集系统直接与企业业务后台数据库服务器结合,在业务不那么繁忙的凌晨,抽取我们想要的数据到分析数据库或者到HDFS上,最后有大数据处理系统对这些数据进行清洗、组合进行数据分析。 常用数据库抽取工具:阿里开源软件:DataXDataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 开源的DataX貌似只能单机部署。 Apache开源软件:SqoopSqoop(发音:skup)是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 可以集群化部署。 爬虫爬取有很多外部数据,比如天气、IP地址等数据,我们通常会爬取相应的网站数据存储。 目前常用的爬虫工具是Scrapy,它是一个爬虫框架,提供给开发人员便利的爬虫API接口。 开发人员只需要关心爬虫API接口的实现,不需要关心具体框架怎么爬取数据。 Scrapy框架大大降低了开发人员开发速率,开发人员可以很快的完成一个爬虫系统的开发。 03 数据存储HDFS2003年,Google发布论文GFS,启发Apache Nutch开发了HDFS。 2004年,Google 又发布了论文《MapReduce: Simplified Data Processing on Large Clusters》,Doug Cutting等人实现计算框架MapReduce ,并与HDFS结合来更好的支持该框架。 2006年项目从Butch搜索引擎中独立出来,成为了现在的Hadoop。 GFS隐藏了底层的负载均衡,切片备份等细节,使复杂性透明化,并提供统一的文件系统接口。 其成本低,容错高,高吞吐,适合超大数据集应用场景。 HDFS原理:横向扩展,增加“数据节点”就能增加容量。 增加协调部门,“命名节点”维护元数据,负责文件系统的命名空间,控外部访问,将数据块映射到数据节点。 还会备份元数据从命名节点,它只与命名节点通信。 数据在多个数据节点备份。 通常关系型数据库存储的都是结构化的数据,我们抽取后会直接放到HDFS上作为离线分析的数据源。 HBase在实际应用中,我们有很多数据可能不需要复杂的分析,只需要我们能存储,并且提供快速查询的功能。 HBase在HDFS基础上提供了Bigtable的能力; 并且基于列的模式进行存储。 列存储设计的优势是减少不必要的字段占用存储,同时查询的时候也可以只对查询的指定列有IO操作。 HBase可以存储海量的数据,并且可以根据rowkey提供快速的查询性能,是非常好的明细数据存储方案,比如电商的订单数据就可以放入HBase提供高效的查询。 当然还有其他的存储引擎,比如ES适合文本搜索查询等。 04 总结了解了上面的技术栈后,在实际数据接入中,你还会面临各种问题,比如如何考虑确保数据一致性,保障数据不能丢失,数据采集存储的效率,不能产生数据积压等,这些都需要对每个组件进行研究,适配适合你自己业务系统的参数,用最少的资源,达到最好的结果。 调度系统目前大数据平台经常会用来跑一些批任务,跑批处理当然就离不开定时任务。 比如定时抽取业务数据库的数据,定时跑hive/spark任务,定时推送日报、月报指标数据。 任务调度系统已经俨然成为了大数据处理平台不可或缺的一部分,可以说是ETL任务的灵魂。 01 原始任务调度记得第一次参与大数据平台从无到有的搭建,最开始任务调度就是用的Crontab,分时日月周,各种任务脚本配置在一台主机上。 Crontab 使用非常方便,配置也很简单。 刚开始任务很少,用着还可以,每天起床巡检一下日志。 随着任务越来越多,出现了任务不能在原来计划的时间完成,出现了上级任务跑完前,后面依赖的任务已经起来了,这时候没有数据,任务就会报错,或者两个任务并行跑了,出现了错误的结果。 排查任务错误原因越来麻烦,各种任务的依赖关系越来越复杂,最后排查任务问题就行从一团乱麻中,一根一根梳理出每天麻绳。 crontab虽然简单,稳定,但是随着任务的增加和依赖关系越来越复杂,已经完全不能满足我们的需求了,这时候就需要建设自己的调度系统了。 02 调度系统调度系统,关注的首要重点是在正确的时间点启动正确的作业,确保作业按照正确的依赖关系及时准确的执行。 资源的利用率通常不是第一关注要点,业务流程的正确性才是最重要的。 (但是到随着业务的发展,ETL任务越来越多,你会发现经常有任务因为资源问题没有按时启动!)实际调度中,多个任务单元之间往往有着强依赖关系,上游任务执行并成功,下游任务才可以执行。 比如上游任务1结束后拿到结果,下游任务2、任务3需结合任务1的结果才能执行,因此下游任务的开始一定是在上游任务成功运行拿到结果之后才可以开始。 而为了保证数据处理结果的准确性,就必须要求这些任务按照上下游依赖关系有序、高效的执行,最终确保能按时正常生成业务指标。 一款成熟易用,便于管理和维护的作业调度系统,需要和大量的周边组件对接,要处理或使用到包括:血缘管理,权限控制,负载流控,监控报警,质量分析等各种服务或事务。 03 调度系统分类调度系统一般分为两类:定时分片类作业调度系统和DAG工作流类作业调度系统定时分片类作业调度系统这种功能定位的作业调度系统,其最早的需要来源和出发点往往是做一个分布式的Crontab。 核心:将一个大的任务拆成多个小任务分配到不同的服务器上执行, 难点在于要做到不漏,不重,保证负载平衡,节点崩溃时自动进行任务迁移等。 保证任务触发的强实时和可靠性所以,负载均衡,弹性扩容,状态同步和失效转移通常是这类调度系统在架构设计时重点考虑的特性。 DGA工作流调度系统这一类系统的方向,重点定位于任务的调度依赖关系的正确处理,分片执行的逻辑通常不是系统关注的核心,或者不是系统核心流程的关键组成部分。 核心:足够丰富和灵活的依赖触发机制:比如时间触发任务,依赖触发任务,混合触发任务作业的计划,变更和执行流水的管理和同步任务的优先级管理,业务隔离,权限管理等各种特殊流程的处理,比如暂停任务,重刷历史数据,人工标注失败/成功,临时任务和周期任务的协同等完备的监控报警通知机制04 几个调度系统AirflowApache Airflow是一种功能强大的工具,可作为任务的有向无环图(DAG)编排、任务调度和任务监控的工作流工具。 Airflow在DAG中管理作业之间的执行依赖,并可以处理作业失败,重试和警报。 开发人员可以编写Python代码以将数据转换为工作流中的操作。 主要有如下几种组件构成:web server: 主要包括工作流配置,监控,管理等操作scheduler: 工作流调度进程,触发工作流执行,状态更新等操作消息队列:存放任务执行命令和任务执行状态报告worker: 执行任务和汇报状态mysql: 存放工作流,任务元数据信息具体执行流程:scheduler扫描dag文件存入数据库,判断是否触发执行到达触发执行时间的dag,生成dag_run,task_instance 存入数据库发送执行任务命令到消息队列worker从队列获取任务执行命令执行任务worker汇报任务执行状态到消息队列schduler获取任务执行状态,并做下一步操作schduler根据状态更新数据库Kettle将各个任务操作组件拖放到工作区,kettle支持各种常见的数据转换。 此外,用户可以将Python,Java,JavaScript和SQL中的自定义脚本拖放到画布上。 kettle可以接受许多文件类型作为输入,还可以通过JDBC,ODBC连接到40多个数据库,作为源或目标。 社区版本是免费的,但提供的功能比付费版本少。 XXL-JOBXXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求;将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑;因此,“调度”和“任务”两部分可以相互解耦,提高系统整体稳定性和扩展性。 (后来才知道XXL是作者名字拼音首字母缩写)调度系统开源工具有很多,可以结合自己公司人员的熟悉程度和需求选择合适的进行改进。 海豚调度Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台。 致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。 高可靠性去中心化的多Master和多Worker服务对等架构, 避免单Master压力过大,另外采用任务缓冲队列来避免过载简单易用DAG监控界面,所有流程定义都是可视化,通过拖拽任务完成定制DAG,通过API方式与第三方系统集成, 一键部署丰富的使用场景支持多租户,支持暂停恢复操作. 紧密贴合大数据生态,提供Spark, Hive, M/R, Python, Sub_process, Shell等近20种任务类型高扩展性支持自定义任务类型,调度器使用分布式调度,调度能力随集群线性增长,Master和Worker支持动态上下线05 如何自己开发一个调度系统调度平台其实需要解决三个问题:任务编排、任务执行和任务监控。 任务编排,采用调用外部编排服务的方式,主要考虑的是编排需要根据业务的一些属性进行实现,所以将易变的业务部分从作业调度平台分离出去。 如果后续有对编排逻辑进行调整和修改,都无需操作业务作业调度平台。 任务排队,支持多队列排队配置,后期根据不同类型的开发人员可以配置不同的队列和资源,比如面向不同的开发人员需要有不同的服务队列,面向不同的任务也需要有不同的队列优先级支持。 通过队列来隔离调度,能够更好地满足具有不同需求的用户。 不同队列的资源不同,合理的利用资源,达到业务价值最大化。 任务调度,是对任务、以及属于该任务的一组子任务进行调度,为了简单可控起见,每个任务经过编排后会得到一组有序的任务列表,然后对每个任务进行调度。 这里面,稍有点复杂的是,任务里还有子任务,子任务是一些处理组件,比如字段转换、数据抽取,子任务需要在上层任务中引用实现调度。 任务是调度运行的基本单位。 被调度运行的任务会发送到消息队列中,然后等待任务协调计算平台消费并运行任务,这时调度平台只需要等待任务运行完成的结果消息到达,然后对作业和任务的状态进行更新,根据实际状态确定下一次调度的任务。 调度平台设计中还需要注意以下几项:调度运行的任务需要进行超时处理,比如某个任务由于开发人员设计不合理导致运行时间过长,可以设置任务最大的执行时长,超过最大时长的任务需要及时kill掉,以免占用大量资源,影响正常的任务运行。 控制同时能够被调度的作业的数量,集群资源是有限的,我们需要控制任务的并发量,后期任务上千上万后我们要及时调整任务的启动时间,避免同时启动大量的任务,减少调度资源和计算资源压力;作业优先级控制,每个业务都有一定的重要级别,我们要有限保障最重要的业务优先执行,优先给与调度资源分配。 在任务积压时候,先执行优先级高的任务,保障业务影响最小化。 06 总结与展望ETL 开发是数据工程师必备的技能之一,在数据仓库、BI等场景中起到重要的作用。 但很多从业者连 ETL 对应的英文是什么都不了解,更不要谈对 ETL 的深入解析,这无疑是非常不称职的。 做ETL 你可以用任何的编程语言来完成开发,无论是 shell、python、java 甚至数据库的存储过程,只要它最终是让数据完成抽取(E)、转化(T)、加载(L)的效果即可。 由于ETL是极为复杂的过程,而手写程序不易管理,所以越来越多的可视化调度编排工具出现了。 调度系统作为大数据平台的核心部分之一,牵扯的业务逻辑比较复杂,场景不同,也许需求就会差别很多,所以,有自研能力的公司都会选择市面上开源系统二次开发或者完全自研一套调度系统,已满足自身ETL任务调度需求。 不管是哪种工具,只要具备高效运行、稳定可靠、易于维护特点,都是一款好工具
redis书籍有哪些
![耐久化](https://tyye.cn/zb_users/theme/tpure/style/images/lazyload.png)
Redis相关数据的学习需要更多的参考信息,因为Redis现如今的应用并不是很广泛。 本期的Redis书籍推荐专题,就让小编为大家介绍几种Redis相关的精彩书籍。 Redis书籍推荐之《Redis实战》当你需要以接近实时的速度访问快速变动的数据流时,Redis这样的键值数据库就是你的极好选择。 通过接纳散列、字符串、列表等多种数据类型,Redis对键值对模式进行了扩展,它既提供了极其快速的内存数据集操作,又可以在运行时轻松地将这些数据持久化到磁盘上面。 除此之外,Redis还是免费的、开源的。 本书对Redis本身以及它的键值对模型进行了介绍,读者将接触到包括缓存、分布式广告定向等实际使用案例,学到如何从小型的作业任务开始,扩展Redis以适应大规模的数据集,以及如何与其他传统的关系数据库或是其他NoSQL存储系统进行集成。 有经验的开发者应该会对集群和服务器脚本编程等较为深入的内容感兴趣。 Redis书籍推荐之《Redis设计与实现》资深Redis技术专家撰写,深入了解Redis技术内幕的必读之作。 从源码角度解析Redis的架构设计、实现原理和工作机制,为高效使用Redis提供原理性指导。 《Redis 设计与实现》全面而完整地讲解了Redis的内部机制与实现方式,对Redis的大多数单机功能以及所有多机功能的实现原理进行了介绍,展示了这些功能的核心数据结构以及关键的算法思想,图示丰富,描述清晰,并给出大量参考信息。 通过阅读本书,读者可以快速、有效地了解Redis的内部构造以及运作机制,更好、更高效地使用Redis。 Redis设计与实现》主要分为四大部分。 第一部分“数据结构与对象”介绍了Redis中的各种对象及其数据结构,并说明这些数据结构如何影响对象的功能和性能。 第二部分“单机数据库的实现”对Redis实现单机数据库的方法进行了介绍,包括数据库、 RDB持久化、AOF持久化、事件等。 第三部分“多机数据库的实现”对Redis的Sentinel、复制、集群三个多机功能进行了介绍。 第四部分“独立功能的实现”对Redis中各个相对独立的功能模块进行了介绍,涉及发布与订阅、事务、Lua脚本、排序、二进制位数组、慢查询日志、监视器等。 Redis书籍推荐之《Redis入门指南(第2版)》本书旨在帮助读者从零开始,一步步地了解Redis,进入Redis的世界。 在介绍基础知识的同时,本书还着眼于实践,以帮助读者尽快在实际项目中用上 Redis为目标,做到即学即用。 书中大部分章节采用了任务驱动的讲解方法,通过虚构的角色小白和宋老师,在介绍知识点前先设定一个实践任务,不仅提高了读者的阅读动力,而且能让读者更轻易地将书中的知识点与实践结合起来。 主要内容介绍Redis的历史及特性,回答为什么要使用Redis。 讲解如何在开发和生产环境中部署Redis。 通过实践看Redis诸多数据类型的适用场景。 介绍Redis 3.0的哨兵和集群相关特性。 全面介绍管道、事务、持久化和复制等技术。 深度揭秘Redis的存储结构,剖析Redis空间优化方法。 如何基于Redis实现在线用户记录、标签补全和区间查找等实用功能。 使用Redis实现任务队列。 领略Redis脚本的魅力,了解脚本的细节和技巧。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。