本着境内娱乐产业之无力吐槽

RocketMQ与Kafka对比(18项差异)

初稿链接:https://github.com/alibaba/RocketMQ/blob/master/wiki/kafka_partitions_problem.md

淘宝里的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为信息存储媒介,可完全水平扩容,为了进一步降低本钱,我们觉得存储部分可更优化,2011年头,Linkin开源了Kafka这个漂亮的消息中间件,淘宝中间件团队以对Kafka做了尽Review之后,Kafka无限消息堆积,高效之持久化速度吸引了俺们,但是同时发现这个消息网重要定位被日志传输,对于使用于淘宝交易、订单、充值等场景下还产生好多特征不满足,为这个我们又用Java语言编写了RocketMQ,定位于非日志的可靠消息传输(日志场景也OK),目前RocketMQ在阿里集团受广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog分发等景象。

 
3),引擎技术。众所周知,一迟迟游戏的开发成本开发时间与最后落得的显得力量,很怪程度达到且靠游戏开发所选择的发动机,国内的大部玩耍公司就是时至今日照例不够自研游戏引擎的热情,原因主要发生个别上面,一方面开发娱乐引擎在技术上要求非常高,需要比丰富之研发时以及大度的技术人员,一般的中小型游戏公司呢从来不足够的本钱来投入.另一方面对于开发周期长,技术积累不足,很麻烦保证引擎开发了之后真正的实用价值有多高.综合上述两碰大部分戏耍公司周边选择既较为成熟之异国商业引擎,这就算起自然水平达到限值了国内研发水平的固,就类似我们中华去电脑永远使就此外的CPU一样。这几乎年国内几乎下于大型的玩耍企业为当自研游戏引擎,但实际效果并无可以,有的企业也许是失去改变一些开源引擎,有的是修改买来之源代码,有的公司做出了发动机,就渴望用者引擎一连做几悠悠换汤不换药的同质游戏,不过我相信随着时光之延,中国势必会有和好之很成熟之商贸引擎,也冀望团结得吗底有贡献。

消息轨迹

  • Kafka不支持信息轨迹
  • 阿里云ONS支持信息轨迹

      中国娱乐崛起,从我做起,我是程序员,我啊祥和代言!

严格的音信顺序

  • Kafka支持信息顺序,但是同大Broker宕机后,就见面出信息乱序
  • RocketMQ支持严格的音信顺序,在各个信场景下,一尊Broker宕机后,发送消息会失败,但是未见面乱序

Mysql Binlog分发需要严格的信顺序

 
这个行当时还要以挺丰富一段时间来说在国内居然世界都将是一个朝阳产业,也会见生出成百上千底合作社厂家不遗余力的夺抢这块老蛋糕,最近起传言说政府曾准备对游戏进行分级制度并开放要的游玩主机平台于神州底一些展开,无疑又给了国内娱乐市场一针强心剂.国内的娱乐市场直接将玩家称为是”人傻钱多”,也的确是,放眼看中国当下几年只要恒河沙数一般冒出来的打公司,数不胜数,每天开服开测的戏不计其数,真的是受玩家挑花了双眼。但作品更为多吗就算把题目暴露的越来越显。

分布式事务消息

  • Kafka不支持分布式事务消息
  • 阿里云ONS支持分布式定时消息,未来开源版本的RocketMQ也发出计划支持分布式事务消息

 
对于一个恰巧踏上入这个行当才半年的毕业生来说,我是绝非呀身份就这个游戏产业来评论的,但人们都起说话的权利,我哉想说说自之看法,只是一己之见,对同反常不必太过纠结!

信堆积能力

辩驳及Kafka要比RocketMQ的堆积能力再次胜似,不过RocketMQ单机也得支持亿级的信堆积能力,我们以为是堆积能力都全可满足工作需要。

  作为一个从小到死之游戏迷,也左右一个嬉戏行业的从业者,真心的期待中国底玩耍产业能够望更加健康的,更加有生机之方向前行!

数量可靠性

  • RocketMQ支持异步实时刷盘,同步刷盘,同步Replication,异步Replication
  • Kafka使用异步刷盘方式,异步Replication/同步Replication

总结:RocketMQ的共刷盘在单机可靠性上比较Kafka更胜,不见面为操作系统Crash,导致数据丢失。
Kafka同步Replication理论及性低于RocketMQ的同步Replication,原因是Kafka的数额以分区为单位团体,意味着一个Kafka实例上会见时有发生几百独数据分区,RocketMQ一个实例上只发生一个数据分区,RocketMQ可以充分利用IO
Group
Commit机制,批量传输数据,配置同步Replication与异步Replication相比,性能损耗约20%~30%,Kafka没有亲自测试了,但是个人认为理论及会见小于RocketMQ。

 再来说政府方面的:

消费并行度

  • Kafka的费并行度依赖Topic配置的分区数,如分区数为10,那么最多10雅机器来并实施费(每令机器只能被一个线程),或者千篇一律华机械消费(10个线程并行消费)。即花费并行度和分区数一样。

  • RocketMQ消费并行度分点儿种植情景

    • 逐消费方式并行度同Kafka完全一致
    • 混序方式并行度取决于Consumer的线程数,如Topic配置10单班,10玉机器消费,每令机械100只线程,那么连行度为1000。

     
以上内容,由于自才疏学浅,难免有着纰漏,如果来不当之处请立刻批评指教!有两样看法为接讨论!

性比

  • Kafka单机写副TPS约于百万条/秒,消息大小10独字节
  • RocketMQ单机写副TPS单实例约7万条/秒,单机部署3只Broker,可以走至嵩12万条/秒,消息大小10独字节

小结:Kafka的TPS跑至单机百万,主要是由于Producer端将多独稍消息合并,批量发向Broker。

RocketMQ为什么从来不如此做?

  1. Producer通常采用Java语言,缓存过多消息,GC是个坏要紧的问题
  2. Producer调用发送信息接口,消息不发送到Broker,向事情返回成功,此时Producer宕机,会招信息丢失,业务出错
  3. Producer通常为分布式系统,且各令机械都是多线程发送,我们觉得线及的系统单个Producer每秒产生的数据量有限,不容许上万。
  4. 缓存的法力了可由上层业务成功。

 2),对于代理游戏的审批,一种植非常直白的清爽国内游戏市场之办法就是大气的推荐国外精品游戏,这一端可让大气之同质化游戏大量没有玩家如若自生自灭,也得吃国内的家门开发商来再次审视一下友好,但反复国内娱乐企业去代理一慢外大作要当达成异常悠久之审批时,当年网易好不容易从九城手里夺来了《魔兽世界》的代办权,可新资料片的审批活活让国内玩家当了以相当,结果网易对这个充分受伤。这种景象在境内代理的重重逛戏还格外普遍。而发生一部分之那个外老发压根就非考虑于神州上,比如《暗黑波坏神3》。对于这些做办公室的父辈大妈们,我不过想呵呵!

定时信

  • Kafka不支持定时音
  • RocketMQ支持少数近似定时消息
    • 开源版本RocketMQ仅支持定时Level,定时Level用户可定制
    • 阿里云ONS支持定时Level,以及指定的毫秒级别的延时时间

 3),本土单机市场苦。一直以来,单机游戏往往体现了手上全部娱乐行业还是是电脑行业的高技术水平,由于无待考虑玩家带来富,它可在质量上就极致致。国内的单机游戏市场作品屈指可数,这几年还算是好出有私房团体也开尝试开发单机游戏,这是好光景,不过就为才限于RPG游戏,对于其它品种的嬉戏,基本是无啊新作品了。一方面是炎黄的国内玩家对单机市场的消费理念还并未完全的培养起来,但马上几年RPG新作的营销方法已经渐渐成熟,这单是时刻之题目,另一方面是国内盗版猖獗,玩家也玩惯了盗版,很麻烦愿意花钱去购买游戏游艺,虽然当时几年新单机游戏采取的数字版以及激活码方式必定水平达到抑制了这种情况,但当下为只是限于历代神作,若是一暂缓新的著述,没有另外之前玩家群体积累充分麻烦去叫玩家也他们购买特!所以即便需要政府失去净出版销售行业,还玩企业一个常规之条件,大家呢即本会设想单机开发。

单机支持的排数

  • Kafka单机超过64单班/分区,Load会发生显著的飙高现象,队列越多,load越强,发送信息应时间变长。Kafka分区往往无法过多的题目
  • RocketMQ单机支持最高5万只序列,Load不见面发肯定浮动

列多生啊补?

  1. 单机可以创建更多Topic,因为每个Topic都是由同批判队列组成
  2. Consumer的集群规模和行数成为正比,队列越多,Consumer集群可以进一步老

 
1),同质化非常重。由于在中国,对电子游戏并没有生齐的学问产权保护措施,两缓打将画资源替换,剧本重写,即使看起来简直是一个型里刻出来的,你错过法院控告他依旧做不赢。这同样点于回合制的RPG端游里特别强烈。那些为抄袭之游乐开发商也是大无奈,大家就相互抄袭,恶性循环。再比如就几年火起来的《神曲》,已经当页游市场里吃抄的无比多尽多了。

消息回溯

  • Kafka理论及得以按Offset来回顾消息
  • RocketMQ支持以时间来回顾消息,精度毫秒,例如从同天之前的某时某分某秒开始再次消费信息

总结:典型工作场景如consumer做订单分析,但是由程序逻辑或者因之系统发出故障等由,导致今天花之信息满没用,需要重新打昨天零点开始消费,那么以时吗起点的音信重放功能对事情特别有拉。

 1),办事效率低下,态度恶劣。相关的嬉戏审批部门往往是不晓伪装懂,装神弄不好,审来审去,游戏企业新打达到线前要如求神拜佛一样去探寻那些圈在便为相关机关人员去陪笑脸,一趟趟去走去谈。而这些部门的工作人员往往有公务员的缺陷,工作懈怠消极。对于这无异于点真想新一顶的班子能想艺术根治一下。嗨!

Broker端消息过滤

  • Kafka不支持Broker端的信息过滤
  • RocketMQ支持少数种Broker端消息过滤方式
    • 据悉Message Tag来过滤,相当给子topic概念
    • 通向服务器上传一模一样段落Java代码,可以针对信息做任意形式的过滤,甚至可以开Message
      Body的过滤拆分。

 
2),吸金心理。为什么会出现同质化的惨重泛滥,很非常程度上戏开发商自己的心气问题,大家都拿走在先赚一笔再说的思,今天卡牌游戏炸了,大家还来举行卡牌,今天横版格斗活了,大家就都来开横版格斗。页游和手游市场由开发时间短,成本低,即使走来吸金,一般就是赚不了为未会见亏的无比惨,但是对于端游来说,一旦达丝后达成不顶那时候底预想,损失是千千万万的。对于游戏企业来说盈利是参天目的,这无可厚非,但是若直白满怀这种吸金心理来参与越来越残酷激烈的市场竞争,究竟还能活动多远这很难说。

花费失败重试

  • Kafka消费失败不支持重试。
  • RocketMQ消费失败支持定时重试,每次重试间隔时间顺延

小结:例如充值类应用,当前时时调用运营商网关,充值失败,可能是对方压力过多,稍后又调用就会见成功,如支付宝到银行扣款也是近乎需求。

这里的重试需要可靠的重试,即失败重试的音讯不为Consumer宕机导致丢失。

 4),公司流程与体制。这一点国内的每个游戏企业都不尽相同,但从根本上来说在所有管理法与开发流程达到跟欧美的良厂家或者在在许多之区别,国内娱乐企业大不够更新,为什么,因为一个玩耍在真正的失去确定立项制作之前市场机构会去做大量的调研,研究来研究去总会得出,某某类型的娱乐大生气,准了小钱,是蓝海是吉海的等等的定论,如果您是错开做同质化的打,这些调研还发出头用处,而要您是错过开同样缓缓开创性的一日游这些调研往往会为他俩胎死腹中,不敢去举行第一单吃螃蟹的丁,永远和当他人的后。在切实的开流程达到海外的商号依据不同的娱乐项目不同之人员频繁会发两样的付出模式,常见的仍合谋小组,快速迭代开发等等。而境内企业付出往往有着戏还倒一个途径,而且在具体流程上为并无是生宏观。

开源社区活跃度

  • Kafka社区创新较缓
  • RocketMQ的github社区有250独个体、公司用户登记了联系方式,QQ群超过1000口。

 
在毕业之前的几十年日里,我一直是盖玩家的地位来介入到这个产业生态链里,也尽管是居于最下游!从FC时代到新兴底MMOPRG,以及诸如战地4这样的不善时代作品。即使今天做事了也本着LOL和Dota情有独钟(虽然比较坑).随着年纪的增强自己发现自越来越难适应现在底华游戏,对于新游戏的话,一般才会失掉玩日本光荣公司的经系列新作,以及一些欧美十分厂家有的游戏,至于国内作品除了《仙剑奇侠传》一直于坚持不懈,以及针对性《传奇》和《传奇3》有甚死的怀旧情怀,其他娱乐中心好少碰,而对网游基本很快便流失了。

支付语言友好性

  • Kafka采用Scala编写
  • RocketMQ采用Java语言编写

  首先对此游戏的支付厂商来说:

消息查询

  • Kafka不支持信息查询
  • RocketMQ支持因Message
    Id查询信息,也支撑因信息内容查询信息(发送信息不时指定一个Message
    Key,任意字符串,例如指定为订单Id)

总:消息查询对于一贯信息丢失问题格外有救助,例如有订单处理失败,是信尚未接过还是收下处理发生错了。

消息投递实时性

  • Kafka使用短轮询方式,实时性取决于轮询间隔时间,0.8后头版本支持添加轮询。
  • RocketMQ使用长轮询,同Push方式实时性一致,消息之投递延时通常在几乎独毫秒。

成熟度

  • Kafka在日记领域较成熟
  • RocketMQ以阿里集团内部发生雅量的用在用,每天都产生海量的消息,并且顺利支持了反复天猫双十一海量信息考验,是数额削峰填谷的利器。

发表评论

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