大数据学习笔记之kafka----分布式消息发布/订阅系统

一、kafka简介

kafka是Linkedin于2012年12月份开源的消息系统

kafka是一个分布式的,基于发布/订阅的消息系统;

kafka:一个队列平台,不仅支持离线,还支持在线

特点:

  1. --消息持久化:通过O(1)的磁盘数据结构提供数据的持久化;针对磁盘存储做了大量的优化,提高了磁盘存储的效率;主要针对了操作系统的特性来进行优化:预读、后写:针对磁盘的顺序访问,优化了写磁盘的机制,降低了写磁盘的次数,提高了写磁盘的速率
  2. --高吞吐量:每秒百万级的消息读写
  3. --分布式:扩展能力强
  4. --多客户端支持:java、php、python、C++......
  5. --实时性:生产者生产的message立即被消费者可见;其中message为kafa的数据单位

二、kafka基本组件

  1. broker:每一台机器叫一个broker
  2. producer:日志消息生产者,用来写数据;
  3. consumer:消息的消费者,用来读数据,可以订阅一个或者多个话题,从broker拉数据,从而消费这些已发布的消息;
  4. topic:不同消费者去指定的topic中读,不同的生产者往不同的topic中写;topic就类似于一个话题,是一个逻辑概念;然后话题的发布者(producer)可以有很多的粉丝(consumer),然后consumer可以订阅producer生产的topic;producer和consumer之间可以有多个topic;
  5. partition:在topic基础上做了进一步的区分分层;是topic的物理实现

大数据学习笔记之kafka----分布式消息发布/订阅系统_第1张图片

从上图可以看出,生产者将数据发送给Broker代理,Broker代理有多个话题topic,消费者从Broker获取数据。

kafka使用场景

日志收集:公司可以用kafka手机各种服务器的log,通过kafka以统一的接口服务的方式开发给各种consumer,例如Hadoop、Hbase、Solr等

消息系统:解耦生产者和消费者,魂村消息等

用户活动跟踪:kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页,搜索,点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop,数据仓库中做离线分析和挖掘

运营指标:kafka也经常用来记录运营监控数据,包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。

流式处理:比如spark streaming和storm

 

 

 

你可能感兴趣的:(大数据)