- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种基于Kafka可靠Consumer设计方案
一种基于Kafka的可靠的Consumer的设计方案
摘要:伴随着互联网和移动互联网的发展,各种新兴应用层出不穷,对大数据处理的实时性和高并发能力要求也在不断提高。Apache Kafka,作为一种分布式的消息系统,具有可水平扩展和高吞吐率而被广泛的使用。对于数据业务的基础支撑系统,除了能够满足高并发度和实时性以外,数据的质量即数据可靠性也是关键的一环。但是,由Kafka原生提供的数据消费者不能够保障数据的可靠性。本文首先简单介绍了Kafka的组成、架构特性等技术背景,然后阐述了原生Consumer的原理和缺陷;最后,基于Kafka提出一个可靠的消费者的设计方案。本方案是基于Kafka的low-level的接口集,解决了Kafka原生Consumer由于将用户消费数据的动作与数据消费位置的记录独立而引起的数据质量问题,保障了数据的可靠性。最后,搭建Kafka集群测试环境,验证了方案的可行性和正确性。
关键词:Kafka;数据可靠性;zookeeper;实时
中图分类号:TP311.5
文献标识码:B
DOI: 10.3969/j.issn.1003-6970.2016.01.015
0 引言
随着互联网行业的不断发展,各种业务的数据量不断增多,在大数据处理环境下,对数据的实时性要求不断提高。笔者原有的技术环境采用ftp技术作为数据传输手段和传统关系型数据库和文件系统作为存储介质,效率较低,无法满足客户对数据实时性的要求。Apache KafkaⅢ,作为一种分布式的消息系统,具有可水平扩展、高吞吐率和实时性而被广泛的使用。笔者为迎合项目的需求采用Kaika作为数据订阅和发布系统,完成数据的传输和缓存功能。最初,由于初学Katka采用Kafka原生提供的High Level的Api,编写数据生产者和消费者。随着使用的深入和业务数据量的增大,发现数据质量不能得到保障,虽然偏差不大,但是对于某些敏感数据,对于数据质量要求十分严苛。
对于数据业务的基础支撑系统,除了能够满足高并发度和实时性以外,数据的质量,也即数据可靠性也是关键的一环。本文的研究目的在于基于Kafka的底层Api给出一种具有数据可靠性的数据消费者(Consumer)的设计方案。
1 技术背景简介
1.1 名词介绍
主题(topic)是Kafka用于区分所发布消息的类别或是名,即一个主题包含一类消息。
分区(partitions)是Kafka为于每一个主题维护了若干个队列,称为分区。
假设有一个拥有3个分区的主题,其中主题(topic)和分区关系如下图,
Kafka中每个主题的每一个分区是一个有序写入、不可变的消息序列,一个topic下可以拥有多个分区。
消息偏移量(offset)是Kafka赋予每个分区(partition)内的每条消息一个唯一的递增的序列号,称为消息偏移量(offset)。
生产者(producer)是根据对于主题的选择向Kafka的发布消息,即向broker push消息的一系列进程。生产者负责决定某一条消息该被被发往选定主题(topic)的哪一个分区(partition)。
消费者(consumer)是向主题注册,并且接收发布到这些主题的消息,即消费一类消息的进程或集群。
代理(broker)是组成Kafka集群的单元。Kafka以一个拥有一台或多台服务器的分布式集群形式运行着,每一台服务器称为broker。
副本(replications)即分区的备份,以便容错,分布在其他broker上,每个broker上只能有这个分区的0到1个副本,即最多只能有一个。
消费者群组(Consumer Group)是有若干个消费者组成的集体。每个Consumer属于一个特定的Consumer Group。Kafka采用将Consumer分组的方式实现一个主题(Topic)的消息的广播(发给所有的Consumer)和单播(发给某一个Consumer)。
1.2 Kafka的基本架构
Kafka是一个分布式的消息订阅和发布的系统。消息的发布者称作producer,将消息的订阅者称consumer.将中间的存储阵列称作broker。
图2极为简要的描述了一个消息订阅和发布系统,所必须具备的角色和工作机制。生产者(producer)将数据生产出来,推送给代理者(broker)进行存储,消费者需要消费数据了,就从broker中拉取数据来,然后完成一系列对数据的处理。
图3展示了Kafka作为消息订阅和发布系统的典型系统架构模型。多个代理者(broker)协同合作,组成了Kafka集群。Kafka的集群架构采用P2P (peerto
文档评论(0)