转发:解密Redis持久化

转载自:http://www.cnblogs.com/hgmyz/p/5313983.html

正文内容出自Redis小编博文,Redis小编说,他看出的保有针对Redis的切磋中,对Redis持久化的误解是最大的,于是她写了一篇长文来对Redis的持久化实行了系统性的演说。文章尤其长,也很值得一看,NoSQLFan将重点内容简述开支文。

依据转载实行增加补充

怎样是持久化,简单的讲便是将数据放到断电后数据不会丢掉的装备中。也便是大家常见了然的硬盘上。

 

写操作的流程

率先大家来看一下数据库在进展写操作时究竟做了什么样事,主要有上面多个经过。

  1. 客户端向服务端发送写操作(数据在客户端的内部存款和储蓄器中)
  2. 数据库服务端接收到写请求的数据(数据在服务端的内存中)
  3. 服务端调用write(2)
    那个连串调用,将数据往磁盘上写(数据在系统内部存款和储蓄器的缓冲区中)
  4. 操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中)
  5. 磁盘控制器将数据写到磁盘的物理介质中(数据真正达到磁盘上)

RPC框架:

牧马人PC:远程进程调用协议,它是一种通过互连网从远程总结机程序上呼吁服务,而不须要明白底层网络技术的说道。RAV4PC协议假使有个别传输协议的存在,如TCP或UDP,为通讯程序之间指导音信数据。

Thrift:是贰个软件框架,用来拓展可增添且跨语言的劳务的支付。

gPRC:是谷歌(Google)发布的QX56PC开源软件,基于最新的HTTP2.0商议,并扶助广大的成都百货上千编制程序语言。

Wildfly:是JBossAS改名后的JBoss应用服务器,达成了全部的JavaEE规范。

Dubbo:是阿里Baba(Alibaba)开源的一个颇为成员的TiguanPC框架

 

 

故障分析

写操作大约有地点五个流程,上边我们结合方面包车型客车八个流程看一下各样级其他故障。

  • 当数据库系统故障时,那时候系统基本依然OK的,那么此时只要我们实践完了第①步,那么数量就是平安的,因为三番五次操作系统会来形成前面几步,保障数据最后会落得磁盘上。
  • 当系统断电,这时候上边5项中涉及的有所缓存都会失灵,并且数据库和操作系统都会终止工作。所以唯有当数码在做到第六步后,机器断电才能保险数据不丢掉,在上述四步中的数据都会丢掉。

通过上边5步的摸底,大概大家会愿意搞清上面一些问题:

  • 数据库多久调用2遍write(2),将数据写到内核缓冲区
  • 水源多久会将系统缓冲区中的数据写到磁盘控制器
  • 磁盘控制器又在怎么样时候把缓存中的数据写到物理介质上

对于第三个难点,平时数据库层面会展开周详控制。而对第三个难题,操作系统有其暗许的策略,可是大家也足以透过POSIX
API提供的fsync类别命令强制操作系统将数据从内核区写到磁盘控制器上。对于第多少个难点,好像数据库已经黔驴技穷触及,但实在,大部分情况下磁盘缓存是棉被服装置关闭的。恐怕是只开启为读缓存,也正是写操作不会进展缓存,直接写到磁盘。建议的做法是单纯当你的磁盘设备有备用电池时才打开写缓存。

分布式缓存框架:

Microsoft Velocity:微软本身分布式缓存服务框架。

Memcahed:一套分布式的高速缓存系统,近期被很多网站使用以提高网站的访问速度。

Redis:是1个高质量的KV数据库。 它的面世相当大程度补偿了Memcached在某个地点的阙如。

EnyimMemcached:访问Memcached最美好的.NET客户端,集成不错的分布式均衡算法。

 

多少损坏

所谓数据损坏,正是数量不可能复苏,下边大家讲的都以如何保证数据是实在写到磁盘上去,不过写到磁盘上大概并不意味数据不会损坏。比如大家或然三遍写请求会开始展览一次差别的写操作,当意外发生时,或许会导致二回写操作安全到位,可是另一遍还并未进展。借使数据库的数据文件结构组织不客观,也许就会造成数据完全无法回复的现象出现。

此地平时也有二种政策来协会数量,以预防数据文件损坏到不能恢复生机的情状:

  • 首先种是最粗糙的处理,正是不经过数量的集团方式保障数据的可苏醒性。而是经过配备数据同步备份的章程,在数据文件损坏后透过数据备份来展开还原。实际上MongoDB在不开启journaling日志,通过配备Replica
    Sets时正是那种景况。
  • 另一种是在地点基础上添加三个操作日志,每趟操作时记一下操作的作为,那样大家得以由此操作日志来实行数据恢复生机。因为操作日志是种种追加的不二法门写的,所以不会出现操作日志也无能为力复苏的景况。那也就像是于MongoDB开启了journaling日志的情况。
  • 更有限支持的做法是数据库不实行老多少的改动,只是以充实格局去做到写操作,那样数据本人正是一份日记,那样就永远不会晤世数量没办法苏醒的图景了。实际上CouchDB正是此做法的精良范例。

开源的.NET系统推荐:

OXITE:微软ASP.NET MVC案例演示框架。

PetShop:微软ASP.NET宠物商店。

Orchard:海外一个MVC开源的博客系统。

SSCLI:微软在NET Framework 2.0一时的开源代码。

DasBlog:外国贰个依照ASP.NET的博客系统。

BlogEngine.NET:海外一款免费开源的博客系统。

Dotnetnuke.NET:一套非常精美的基于ASP.NET的开源门户网站程序。

Discuz.NET:国内开源的论坛社区系统。

nopCommerce和Aspxcommerce:国外一套高质量的开源B2C网站系统。

JumboTCMS和DTCMS:国内四款开源的网站管理连串:

 

RDB快照

上边大家说一下Redis的首先个持久化策略,奥迪Q3DB快速照相。Redis协助将如今多少的快照存成贰个数据文件的持久化学工业机械制。而三个不断写入的数据库怎样变化快速照相呢。Redis借助了fork命令的copy
on
write机制。在云谲波诡快速照相时,将如今经过fork出一个子经过,然后在子进度中循环全数的数目,将数据写成为PAJERODB文件。

我们能够经过Redis的save指令来布局帕杰罗DB快照生成的时机,比如你能够配备当10分钟之内有玖十五回写入就成形快速照相,也足以配备当1小时内有1000次写入就转变快速照相,也能够八个规则一起实施。那些规则的定义就在Redis的安插文件中,你也足以通过Redis的CONFIG
SET命令在Redis运营时设置规则,不须求重启Redis。

Redis的MuranoDB文件不会坏掉,因为其写操作是在二个新进程中展开的,当生成二个新的奥迪Q5DB文件时,Redis生成的子进度会先将数据写到三个一时文件中,然后通过原子性rename系统调用将一时半刻文件重命名为奥迪Q5DB文件,那样在其余时候出现故障,Redis的奥迪Q5DB文件都接连可用的。

还要,Redis的中华VDB文件也是Redis主从共同内部贯彻中的一环。

可是,我们能够很领悟的收看,逍客DB有他的供不应求,就是借使数据库出现难点,那么大家的PAJERODB文件中保留的多少并不是全新的,从上次MuranoDB文件变化到Redis停机那段时日的数据总体扬弃了。在好几事情下,这是足以忍受的,大家也推荐那一个业务使用LX570DB的点子开始展览持久化,因为打开HighlanderDB的代价并不高。可是对于别的一些对数码安全性要求极高的选取,不能够耐受数据丢失的施用,QX56DB就不能了,所以Redis引入了另三个根本的持久化学工业机械制:AOF日志。

日记记录格外处理:

Log4Net.dll:轻量级的免费开源.NET日志记录框架。

Enterprise Library Log Application Black:微软集团库日志记录。

Elmah:达成最盛行的ASP.NET应用特别日志记录框架。

NLog:是三个简练利落的日志记录类库,质量比Log4Net高,使用和保卫安全难度低。

 

AOF日志

aof日志的全称是append only
file,从名字上大家就能看出来,它是2个充实写入的日志文件。与一般数据库的binlog区别的是,AOF文件是可识别的纯文本,它的剧情正是1个个的Redis标准命令。比如大家实行如下实验,使用Redis2.6本子,在开发银行命令参数中装置开启aof功用:

./redis-server --appendonly yes

然后大家履行如下的下令:

redis 127.0.0.1:6379> set key1 Hello
OK
redis 127.0.0.1:6379> append key1 " World!"
(integer) 12
redis 127.0.0.1:6379> del key1
(integer) 1
redis 127.0.0.1:6379> del non_existing_key
(integer) 0

那儿我们查阅AOF日志文件,就会博得如下内容:

$ cat appendonly.aof
*2
$6
SELECT
$1
0
*3
$3
set
$4
key1
$5
Hello
*3
$6
append
$4
key1
$7
 World!
*2
$3
del
$4
key1

 

能够看来,写操作都生成了一条相应的吩咐作为日志。在那之中值得注意的是终极1个del命令,它并没有被记录在AOF日志中,那是因为Redis判断出那一个命令不会对现阶段数据集做出修改。所以不须要记录那几个无用的写命令。此外AOF日志也不是一心按客户端的伸手来变化日志的,比如命令INCRBYFLOAT在记AOF日志时就被记成一条SET记录,因为浮点数操作或者在差异的种类上会不相同,所以为了防止同一份日记在区别的系统上转移不相同的数据集,所以那边只将操作后的结果通过SET来记录。

NoSQL数据库:

Mongodb:分布式文件存款和储蓄数据库。

Membase:家族的3个新的重量级的积极分子。

 

AOF重写

你能够会想,每一条写命令都生成一条日志,那么AOF文件是否会十分大?答案是肯定的,AOF文件会越来越大,所以Redis又提供了三个效益,叫做AOF
rewrite。其意义便是重新生成一份AOF文件,新的AOF文件中一条记下的操作只会有二次,而不像一份老文件这样,可能记录了对同二个值的屡屡操作。其转移进度和LANDDB类似,也是fork二个历程,直接遍历数据,写入新的AOF临时文件。在写入新文件的经过中,全体的写操作日志依旧会写到原来老的AOF文件中,同时还会记录在内部存款和储蓄器缓冲区中。当重完操作完结后,会将富有缓冲区中的日志三次性写入到暂时文件中。然后调用原子性的rename命令用新的AOF文件替代老的AOF文件。

从上边的流水生产线大家能够看出,福特ExplorerDB和AOF操作都以逐一IO操作,质量都很高。而同时在通过路虎极光DB文件大概AOF日志进行数据库苏醒的时候,也是逐一的读取数据加载到内部存款和储蓄器中。所以也不会导致磁盘的即兴读。

电动任务调度框架

Quartz.NET:开源的课业调度和自动任务框架。

Topshelf:另一种创立Windows服务的开源框架

 

AOF可相信性设置

AOF是1个写文件操作,其指标是将操作日志写到磁盘上,所以它也一如既往会遇到我们地点说的写操作的五个流程。那么写AOF的操作安全性又有多高啊。实际上那是能够设置的,在Redis中对AOF调用write(2)写入后,曾几何时再调用fsync将其写到磁盘上,通过appendfsync采纳来控制,上边appendfsync的四个设置项,安全强度日益变强。

重视注入IOC容器框架:

Unity:微软patterns&practicest团队支付的IOC注重注入框架,帮助AOP横切关怀点。

MEF(Managed Extensibility
Framework):是一个用来扩张.NET应用程序的框架,可开发插件系统。

Spring.NET:信赖注入、面向方面编制程序(AOP)、数据访问抽象,、以及ASP.NET集成。

Autofac:最盛行的借助注入和IOC框架,轻量且高质量,对品种代码差不离无此外侵入性。

PostSharp:达成静态AOP横切关切点,使用不难,功用强大,对指标拦截的方法无需任何变更。

Ninject:基于.NET轻量级开源的借助注入IOC框架

 

appendfsync no

当设置appendfsync为no的时候,Redis不会主动调用fsync去将AOF日志内容同步到磁盘,所以这一体就完全依靠于操作系统的调剂了。对超越百分之五十Linux操作系统,是每30秒实行一次fsync,将缓冲区中的数据写到磁盘上。

ORM框架:

EF(ADO.NET Entity Framework):微软遵照ADO.NET开发的O奇骏M框架。

Nhibernate:面向.NET环境的轻量级的O奥迪Q7M框架。

SqlMapper.cs:用于小品种的通用的C#数据库访问类。

AutoMapper:流行的目的映射框架,可削减大气硬编码,很精妙灵活,质量表现也可承受。

SubSonic:卓绝的开源的O汉兰达M映射框架,同时提供符合笔者供给的代码生成器。

FluentData:开源的基于Fluent API的链式查询O奥德赛M轻量级框架。

Dapper:轻量级高品质基于EMIT生成的OXC90M框架。

EmitMapper:品质较高的OQX56M框架,运维时经过EMIT动态生成IL代码,并非采用反射机制。

 

appendfsync everysec

当设置appendfsync为everysec的时候,Redis会默许每隔一秒进行1次fsync调用,将缓冲区中的数据写到磁盘。但是当那一遍的fsync调用时间长度超过1秒时。Redis会采用延迟fsync的国策,再等一分钟。相当于在两秒后再实行fsync,那三遍的fsync就不管会执行多久都会开始展览。那时候由于在fsync时文件讲述符会被卡住,所以当前的写操作就会阻塞。

为此,结论就是,在大部处境下,Redis会每隔一秒实行3遍fsync。在最坏的气象下,两分钟会实行三次fsync操作。

这一操作在超越四分一数据库系统中被称作group
commit,正是组成多次写操作的数量,2次性将日志写到磁盘。

格式和数据类型转换

Newtonsoft.Json:近期.NET付出中最风靡的JSON种类化库,为新版的WebApi库提供基础。

System.JSON.dll:微软温馨开支的JSON连串化组件(供给独自下载)

DataContractJsonSerializer 和
DataContractXmlSerializer
:微软在WCF中运用的种类化器。

JavaScriptSerializer:微软暗中同意针对WEB开发者提供的JSON格式化器。

iTextSharp、PDFsharp 和 PDF.NET:通过.NET处理和生成PDF文书档案的机件。

SharpZipLib.dll:免费开源的ZIP和GZIP文件解压缩组件。

Math.NET:强大的数学运算、微积分、解方程和不错运算。

DocX:不必要安装word软件,通过C#操作word文件。

SharpSerializer:开源XML和、二进制、JSON、压缩和优化框架。

 

appednfsync always

当设置appendfsync为always时,每二遍写操作都会调用三回fsync,那时数据是最安全的,当然,由于每一次都会进行fsync,所以其性情也会遭遇震慑。

反射和动态语言

Clay dynamic:开源的动态语言dynamic框架让您形如javascript的办法创制对象。

ExposedObject:在类的外表通过动态语言dynamic的措施访问私有成员。

PrivateObject:微软单元测试框架中便捷在外表调用类内部私有成员的一个类。

 

对于pipelining有怎么着两样

对此pipelining的操作,其切实进程是客户端3回性发送N个指令,然后等待这N个指令的归来结果被一道回去。通过利用pipilining就意味着屏弃了对每一个限令的重临值确认。由于在那种地方下,N个指令是在同3个履行进度中实践的。所以当设置appendfsync为everysec时,可能会有一些过错,因为那N个指令大概进行时间当先1秒甚至2秒。然则可以保证的是,最长日子不会领先那N个指令的进行时间和。

跨平台和平运动作时化解方案

MONO.NET:跨平台的.NET运营条件,让.NET跨平台运维成为大概。

DotGnu Portable.NET:类似于MONO.NET的跨平台运营时。

Phalanger:将PHP编译成.NET,可实现PHP与.NET互操作。

VMDotNet:中国邮电通讯飞信所利用过的.NET运转时。

Unity3D:微软尽力补助的机遇C#和JavaScript的跨平台游戏支付框架。

Cassini、IIS Express和Cassinidev:开源的ASP.NET执行环境。

Katana:微软依照OWIN规范落实的非IIS寄宿ASP.NET和MVC等。

IKVM.NET:基于.NET的JAVA虚拟机,让JAVA运行在.NET之上。

 

与postgreSQL和MySQL的比较

这一块就不多说了,由于地方操作系统层面包车型大巴多少安全已经讲了累累,所以实际上不如的数据库在促成上都差不离。由此可知最终的定论正是,在Redis开启AOF的情况下,其单机数据安全性并不及这几个成熟的SQL数据库弱。

WEB开发和设计

Jumony Core:基于.NET开发的HTML引擎。

Microsoft.mshtml.dll、Winista.HtmlParser.dll 和
HtmlAgilityPack.dll
:解析处理HTML文书档案的框架。

JavaScript.NET和ClearScript(微软出品):基于.NET开发的JavaScript引擎。

NCrawler:其HTML处理引擎htmlagilitypack的的开源互联网爬虫软件。

AntiXSS:微软官方预防跨站XSS脚本入侵攻击的开源类库,它经过白名单机制实行内容编码。

YUICompressor.NET、Microsoft Ajax Minifier 和 Google Closure
Compiler
:JavaScrip和CSS压缩器。

NancyFx:是八个毋庸置疑的轻量级开源.NET
WEB框架。假设想飞速做个大致的WEB应用。

AspNetPager:国爱妻所共知的ASP.NET分页控件,帮忙各种分页格局。

NOPI.dll:导出Excel报表的插件(基于微软OpenXml达成)(nopi.css.dl通过css设置样式)

Enterprise Library:微软本着集团级应用开发的一流实践组件。

PowerCollections:国外三个牛人写的高档开源集合。

 

数码导入

这一个持久化的数量有啥样用,当然是用以重启后的数据复苏。Redis是3个内部存款和储蓄器数据库,无论是奥迪Q3DB依然AOF,都只是其保证数据复苏的主意。所以Redis在选用中华VDB和AOF进行回复的时候,都会读取本田CR-VDB或AOF文件,重新加载到内部存款和储蓄器中。相对于MySQL等数据库的运行时间来说,会长很多,因为MySQL本来是不须要将数据加载到内部存款和储蓄器中的。

可是相对来说,MySQL运维后提供服务时,其被访问的热数据也会慢慢加载到内部存款和储蓄器中,日常大家誉为预热,而在预热达成前,其属性都不会太高。而Redis的利益是三次性将数据加载到内部存款和储蓄器中,1遍性预热。那样借使Redis运转完结,那么其提供服务的进度都是不行快的。

而在动用卡宴DB和动用AOF运营上,其运转时间有一些不相同。福睿斯DB的起步时间会更短,原因有五个,一是君越DB文件中每一条数据唯有一条记下,不会像AOF日志那样大概有一条数据的屡屡操作记录。所以每条数据只必要写三次就行了。另2个原因是途锐DB文件的仓库储存格式和Redis数据在内存中的编码格式是相同的,不要求再开始展览数据编码工作。在CPU消耗上要远低于AOF日志的加载。

好了,差不多内容就说到此处。更详细完整的本子请看Redis作者的博文:Redis
persistence
demystified
。本文如有描述不周之处,就我们指正。

 

转发出处:http://blog.nosqlfan.com/html/3813.html

运动互连网和云计算

PushSharp:通过.NET向各个活动平台推送音讯。

mono for android:用.NET语言开发安卓应用:

MonoTouch:用.NET语言开发IOS应用。

PhoneGap和AppCan:跨平台基于HTML5的运动支付平台。

Cordova:PhoneGap进献给Apache后的开源项目,是驱动PhoneGap的主干引擎。

 

互连网通讯和网络协议

SuperSocket:基于.NET轻量级的可扩张的Socket开发框架。

SuperWebSocket:通过.NET实现TML5 WebSocket框架。

XProxy:支持插件的根底代理程序集,内置NAT、加解密、反向、直接和直接代理。

 

图片和图像处理框架

Paint.NET:基于.NET小巧灵活有力的图形处理开源项目。

Imagemagick.NET:用C#对开源图像处理组件Imagemagick的卷入。

Skimpt:基于.NET开源的荧屏截图软件。

ImageGlue.NET:商业的图像处理组件,扶助的格式列了一大堆。

Sprite and Image Optimization
Framework
:微软CSS天使,多图合成一张大图和CSS样式。

 

桌面应用程序框架

DevExpress:1个环球著名的桌面应用程序UI控件库。

Prism:微软开发的针对WPF和Silverlight的MVVM框架,通过功效模块化的合计,来讲复杂的事情职能和UI耦合性进行分离。

WPFToolkit 和 Fluent Ribbon Control
Suite
:开发近乎于Office风格的Ribbon菜单。

Hex:通过前端和nodejs技术开发桌面应用的框架,应用案例有:有道词典、有道云笔记。

nw.js:通过前端和nodejs技术开发桌面应用的框架。

electron:通过前端和nodejs技术开发桌面应用的框架,应用案例有:atom、visual
studio code、GitHub desktop。

CefSharp:基于cef(chromium embed
framework)的C#打包,是一个谷歌水源的韦布rower控件,通过该控件可惠及的应用前端技术拓展桌面应用的付出。

 

测试和总体性评估方面

Faker.Net:方便生成多量测试数据的框架。

Nunit:贰个轻量级的单元测试框架。

Moq:相当流行的Mock框架,支持LINQ,灵活且高品质。

xUnit:比NUnit更好的单元测试框架,升级立异版的Nunit框架。

MiniProfiler和Glimpse:基于MVC的三款品质事件监察和控制框架。

 

业务和分布式事务支持

KtmIntegration:三个帮忙NTFS文件系统的政工开源类。

NET Transactional File
Manager
:对文件系统操作(复制、移动和删除)插足工作扶助。

 

分词、全文检索和搜索引擎

Lucene.net:流行高品质的全文索引库,可用于为各项消息提供强大的追寻效果。

Lucene.Net.Analysis.PanGu:帮忙Lucene.Net最新版的苍天中文分词扩大库。

 

数码证实组件整理

FluentValidation for .NET:基于LINQ表明式方法链Fluent接口验证组件。

Microsoft.Practices.EnterpriseLibrary.Validation.dll:微软商厦库验证程序块。

CuttingEdge.Conditions:基于Fluent接口方法练接口的契约编制程序组件。

DotNetOpenAuth:让网站有着协理OpenID、OAuth、InfoCard等身份验证的力量。

 

开源图表计算量控制件:

Visifire:一套效果十分好的WPF图表控件,扶助3D绘制、曲线、折线、扇形、环形和梯形。
SparrowToolkit:一套WPF图表控件集,帮助绘制动态曲线,可绘制示波器、CPU使用率和波形。
DynamicDataDisplay:微软开源的WPF动态曲线图,线图、气泡图和热力图。

 

可扩充音信队列框架:

Kafka

卡夫卡是一种分布式的,基于公布/订阅的新闻系统。首要设计目的如下:
以时日复杂度为O(1)的章程提供音信持久化能力,就算对TB级以上数据也能担保常数时间复杂度的拜访品质。
高吞吐率。尽管在很是廉价的商用机器上也能成功单机帮衬每秒100K条以上音讯的传导。
支撑卡夫卡Server间的新闻分区,及分布式消费,同时确认保障各类Partition内的音信顺序传输。
并且帮衬离线数据处理和实时数据处理。
Scale out:帮忙在线水平扩大。
RabbitMQ
RabbitMQ是利用Erlang编写的二个开源的音信队列,本人支持广大的商议:AMQP,XMPP,
SMTP,
STOMP,也正因如此,它卓殊重量级,更适合于集团级的付出。同时落到实处了Broker构架,这代表新闻在发送给客户端时先在着力队列排队。对路由,负载均衡或然数额持久化都有很好的支撑。
Redis
Redis是1个基于Key-Value对的NoSQL数据库,开发珍爱很活泼。尽管它是1个Key-Value数据仓库储存款和储蓄系统,但它本人帮助MQ作用,所以完全可以用作二个轻量级的种类服务来采纳。对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录2回施行时间。测试数据分为128Bytes、512Bytes、1K和10K两个例外大小的数据。实验声明:入队时,当数码相比较小时Redis的属性要高于RabbitMQ,而要是数量大小超越了10K,Redis则慢的不能忍受;出队时,无论数额大小,Redis都显示出万分好的属性,而RabbitMQ的出队品质则远低于Redis。
ZeroMQ
ZeroMQ号称最快的音讯队列系统,越发针对大吞吐量的须要情形。ZeroMQ可以落实RabbitMQ不擅长的高档/复杂的类别,可是开发人士要求协调组合种种技术框架,技术上的复杂度是对那MQ能够利用成功的挑衅。ZeroMQ具有3个分外的非中间件的方式,你不要求设置和平运动行3个音信服务器或中间件,因为你的应用程序将饰演这些服务器剧中人物。你只须求不难的引用ZeroMQ程序库,能够利用NuGet安装,然后您就足以喜笑颜开的在应用程序之间发送音信了。可是ZeroMQ仅提供非持久性的连串,也正是说就算宕机,数据将会丢掉。在那之中,推文(Tweet)的Storm
0.9.0在先的版本中私下认可使用ZeroMQ作为数据流的传输(Storm从0.9版本开头还要扶助ZeroMQ和Netty作为传输模块)。
ActiveMQ
ActiveMQ是Apache下的三个子项目。
类似于ZeroMQ,它亦能够代办和点对点的技巧达成队列。同时类似于RabbitMQ,它少量代码就能够快捷地贯彻高级应用场景。
Kafka/Jafka
卡夫卡是Apache下的2个子项目,是3个高质量跨语言分布式发表/订阅音讯队列系统,而Jafka是在Kafka之上孵化而来的,即Kafka的三个升级版。具有以下特征:神速持久化,能够在O(1)的种类开发下举行音信持久化;高吞吐,在一台一般的服务器上既能够高达10W/s的吞吐速率;完全的分布式系统,Broker、Producer、Consumer都原生自动帮忙分布式,自动实现负载均衡;帮助Hadoop数据交互加载,对于像Hadoop的相同的日志数据和离线分析种类,但又供给实时处理的限制,那是二个使得的化解方案。卡夫卡通过Hadoop的互相加运载飞机制统一了在线和离线的音讯处理。Apache
卡夫卡相对于ActiveMQ是2个老大轻量级的音信系统,除了品质格外好之外,依然三个行事出彩的分布式系统。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注