Kafka实战-入门

1.概述

  通过一个多月的时间观察,业务上在集成Kafka后,各方面还算稳定,这里打算抽时间给你们分享一下Kafka在实际场景中的一些使用心得。本篇博客打算先给你们入个门,让你们对Kafka有个初步的了解,知道Kafka是作什么的,下面是本篇博客的目录内容:架构

  • Kafka背景
  • Kafka应用场景
  • Kafka架构原理

  下面开始今天的博客分享内容。分布式

2.Kafka背景

  Kafka它本质上是一个消息系统,由当时从LinkedIn出来创业的三人小组开发,他们开发出了Apache Kafka实时信息队列技术,该技术致力于为各行各业的公司提供实时数据处理服务解决方案。Kafka为LinkedIn的中枢神经系统,管理从各个应用程序的汇聚,这些数据通过处理后再被分发到其余地方。Kafka不一样于传统的企业信息队列系统,它是以近乎实时的方式处理流经一个公司的全部数据,目前已经服务于LinkedIn、Netflix、Uber以及Verizon,并为此创建了实时信息处理平台。性能

  流水数据是全部站点对其网站使用状况作报表时都要用到的数据中最经常使用的一部分,流水数据包括PV,浏览内容信息以及搜索记录等。这些数据一般是先以日志文件的形式存在,而后有周期的去对这些日志文件进行统计分析处理,而后得到须要的KPI指标结果。学习

3.Kafka应用场景

  咱们在接触一门新技术或是新语言时,得明白这门技术(或是语言)的应用场景,也就说要明白它能作什么,服务的对象是谁,下面用一个图来讲明,以下图所示:网站

  首先,Kafka能够应用于消息系统,好比,当下较为热门的消息推送,这些消息推送系统的消息源,可使用Kafka做为系统的核心组建来完成消息的生产和消息的消费。而后是网站的行迹,咱们能够将企业的Portal,用户的操做记录等信息发送到Kafka中,按照实际业务需求,能够进行实时监控,或者作离线处理等。最后,一个是日志收集,相似于Flume套件这样的日志收集系统,但Kafka的设计架构采用push/pull,适合异构集群,Kafka能够批量提交消息,对Producer来讲,在性能方面基本上是无消耗的,而在Consumer端中,咱们可使用HDFS这类的分布式文件存储系统进行存储。编码

4.Kafka架构原理

  Kafka的设计之初是但愿作一个统一的信息收集平台,可以实时的收集反馈信息,而且具备良好的容错能力。Kafka中咱们最直观的感觉就是它的消费者与生产者,以下图所示:设计

4.1Producer And Consumer

  这里Kafka对消息的保存是根据Topic进行归类的,由消息生产者(Producer)和消息消费者(Consumer)组成,另外,每个Server称为一个Broker。对于Kafka集群而言,Producer和Consumer都依赖于ZooKeeper来保证数据的一致性。3d

4.2Topic

  在每条消息输送到Kafka集群后,消息都会由一个Type,这个Type被称为一个Topic,不一样的Topic的消息是分开存储的。以下图所示:日志

  一个Topic会被归类为一则消息,每一个Topic能够被分割为多个Partition,在每条消息中,它在文件中的位置称为Offset,用于标记惟一一条消息。在Kafka中,消息被消费后,消息仍然会被保留必定时间后在删除,好比在配置信息中,文件信息保留7天,那么7天后,无论Kafka中的消息是否被消费,都会被删除;以此来释放磁盘空间,减小磁盘的IO消耗。对象

  在Kafka中,一个Topic的多个分区,被分布在Kafka集群的多个Server上,每一个Server负责分区中消息的读写操做。另外,Kafka还能够配置分区须要备份的个数,以便提升可用行。因为用到来ZK来协调,每一个分区都有一个Server为Leader状态,服务对外响应(如读写操做),若该Leader宕机,会由其余的Follower来选举出新的Leader来保证集群的高可用性。

5.总结

  整体来讲,介绍Kafka的相关背景,概述及原理,这些较为偏理论,概念性较强,须要你们认真的去理解、琢磨,这里能够大体熟悉一下,心中有个轮廓,后面会陆续介绍Kafka的实战用法,让你们在实际业务和编码中去体会Kafka的这些原理。

6.结束语

  这篇博客就和你们分享到这里,若是你们在研究学习的过程中有什么问题,能够加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

相关文章
相关标签/搜索