Kafka 学习应用笔记(一)

来源:互联网 发布:给男朋友织围巾知乎 编辑:程序博客网 时间:2024/05/18 22:56

准备重构公司的日志系统,公司目前有多台的服务器在提供服务,产生日志。如果把日志记录在每个服务器,就要每天设置定时任务,把日志同步到一起,再整合起来,也不便于实时分析。。。。。。
反正感觉有各种不便,于是决定全用kafka。
每台服务器都相当于是一个producer, 然后部署一个kafka cluster,就可以实时接收这些服务器的日志,后续扩展也没有任何问题。

但之前由于自己对kafka还没有在实际项目中应用过,还是从头开始,一步一个脚印的学起。

首先,了解 一下 kafka 的常见组件名称与解释。

  1. Topic(话题):Kafka中用于区分不同类别信息的类别名称。由producer指定
  2. Producer(生产者):将消息发布到Kafka特定的Topic的对象(过程)
  3. Consumers(消费者):订阅并处理特定的Topic中的消息的对象(过程)
  4. Broker(Kafka服务集群):已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker).
    消费者可以订阅一个或多个话题,并从Broker拉数据,从而消费这些已发布的消息。
  5. Partition(分区):Topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)

  6. Message:消息,是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。

第二,kafka 的应用场景

1.消息

kafka更好的替换传统的消息系统,消息系统被用于各种场景(解耦数据生产者,缓存未处理的消息,等),与大多数消息系统比较,kafka有更好的吞吐量,内置分区,副本和故障转移,这有利于处理大规模的消息。

根据我们的经验,消息往往用于较低的吞吐量,但需要低的端到端延迟,并需要提供强大的耐用性的保证。

在这一领域的kafka比得上传统的消息系统,如的ActiveMQ或RabbitMQ的。

2.网站活动追踪

kafka原本的使用场景:用户的活动追踪,网站的活动(网页游览,搜索或其他用户的操作信息)发布到不同的话题中心,这些消息可实时处理,实时监测,也可加载到Hadoop或离线处理数据仓库。

每个用户页面视图都会产生非常高的量。

3.指标

kafka也常常用于监测数据。分布式应用程序生成的统计数据集中聚合。

4.日志聚合

使用kafka代替一个日志聚合的解决方案。

5.流处理

kafka消息处理包含多个阶段。其中原始输入数据是从kafka主题消费的,然后汇总,丰富,或者以其他的方式处理转化为新主题,例如,一个推荐新闻文章,文章内容可能从“articles”主题获取;然后进一步处理内容,得到一个处理后的新内容,最后推荐给用户。这种处理是基于单个主题的实时数据流。从0.10.0.0开始,轻量,但功能强大的流处理,就进行这样的数据处理了。

除了Kafka Streams,还有Apache Storm和Apache Samza可选择。

6.事件采集

事件采集是一种应用程序的设计风格,其中状态的变化根据时间的顺序记录下来,kafka支持这种非常大的存储日志数据的场景。

7.提交日志

kafka可以作为一种分布式的外部提交日志,日志帮助节点之间复制数据,并作为失败的节点来恢复数据重新同步,kafka的日志压缩功能很好的支持这种用法,这种用法类似于Apacha BookKeeper项目。

参考:
http://blog.csdn.net/louisliaoxh/article/details/51516823
http://orchome.com/295

0 0