kafka是一种高可用,高吞吐量,基于zookeeper协调的分布式发布订阅消息系统。

消息中间件:生产者和消费者

举个例子:

  生产者:做馒头,消费者:吃馒头,数据流:馒头

如果消费者宕机了,吃不下去了,那么馒头就浪费了,所以生产者生产之后丢在篮子里,消费者要吃的时候到篮子立面去取。

  这个篮子就好比我们的kafka,起到一个缓冲的作用,如果篮子满了装不下馒头了,那就多准备几个篮子,多准备篮子就是kafka的扩容

producer:生产者,生产馒头的

consumer:消费者,吃馒头的

broker:篮子

topic:主题,相当于给馒头打一个标签,并不是生产者生产的所有馒头消费者都会吃的。比方说topicA馒头是给你吃的,topicB馒头是给你妹妹吃的

消息系统有两种模式:peer to peer,和发布/订阅

peer to peer:
1.一般基于pull和polling接收消息
2.发送到队列的消息被一个且仅仅被一个接收者接收,即便有多个接收者在队列中监听同一消息
3.支持异步"即发即弃"的消息传送方式,也支持同步请求/应答传送方式。意思是我们即可以发送完就滚蛋,也可以发送完不走,确定被接收者接收之后再走

发布/订阅
1.发布到一个主题的消息,可被多个订阅者接收
2.发布/订阅即可基于push消费数据,也可以基于pull/polling消费数据
3.解耦能力比peer to peer模型更强

消息系统适用场景:
1.解耦:各位系统之间通过消息系统这个统一的接口交换数据,无需了解彼此的存在
2.冗余:部分消息系统具有消息持久化的能力,可规避消息处理前丢失的风险
3.扩展:消息系统是统一的数据接口,各系统可独立扩展
4.峰值处理能力:消息系统可顶住峰值流量,业务系统可根据处理能力从消息系统中获取对应处理量的请求
5.可恢复性:系统中部分组件失效并不会影响整个系统,回复之后仍然可以从消息系统中获取数据
6.异步通信:在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理

常用消息系统对比:
rabbitMQ:erlang编写,支持多协议,AMQP,XMPP,SMTP,STOMP.支持负载均衡,数据持久化。同时支持peer to peer和发布/订阅模式
Redis:基于key-value的nosql数据库,同时支持MQ功能,可做轻量队列使用。就入队操作而言,对短消息(小于10kb)的处理,redis的性能比rabbitmq要好
kafka/jafka:高性能跨语言的分布式发布/订阅消息系统,数据持久化,全分布式,同时支持在线和离线处理。jafka是kafka的java实现。
以及还有zeroMQ,activeMQ,MetaQ等等这里就不推荐了,个人建议使用rabbitMQ或者kafka

kafka的设计目标:
高吞吐率:在链家的商用机器上单机可支持每秒100万条消息的读写,尽管是把消息持久化到磁盘,但是不代表性能低,实际上吞吐率是相当高的
消息持久化:所有消息均被持久化到磁盘,无消息丢失,支持消息重放
完全分布式:producer,broker,consumer均支持水平扩展
同时满足适应在线流处理和离线流处理,现在的sparkStreaming也和kafka结合的比较好。也可以将kafka里的数据导入到HDFS里面,方式也比较多,一般是通过flume的kafka source将kafka的数据拿过来,在使用flume的hdfs sink或者hive sink将数据导入hdfs或者hive进行离线的流式批处理

1.kafka的介绍的更多相关文章

  1. Kafka入门介绍

    1. Kafka入门介绍 1.1 Apache Kafka是一个分布式的流平台.这到底意味着什么? 我们认为,一个流平台具有三个关键能力: ① 发布和订阅消息.在这方面,它类似一个消息队列或企业消息系 ...

  2. Kafka设计解析(十四)Kafka producer介绍

    转载自 huxihx,原文链接 Kafka producer介绍 Kafka 0.9版本正式使用Java版本的producer替换了原Scala版本的producer.本文着重讨论新版本produce ...

  3. kafka基础介绍

    kafka基础介绍 一.kafka介绍 1.1主要功能 根据官网的介绍,kafka是一个分布式流媒体的平台,它主要有三大功能: 1.11:It lets you publish and subscri ...

  4. 【转帖】Kafka入门介绍

    Kafka入门介绍 https://www.cnblogs.com/swordfall/p/8251700.html 最近在看hdoop的hdfs 以及看了下kafka的底层存储,发现分布式的技术基本 ...

  5. kafka架构,消息存储和生成消费模型,Kafka与其他队列对比,零拷贝,Kafka基本介绍

    kafka架构,消息存储和生成消费模型,Kafka与其他队列对比,零拷贝,Kafka基本介绍 一.初识kafka 1.1SparkStreaming+Kafka好处: 1.2Kafka的架构: 二.k ...

  6. [Kafka] - Kafka 安装介绍

    Kafka是由LinkedIn公司开发的,之后贡献给Apache基金会,成为Apache的一个顶级项目,开发语言为Scala.提供了各种不同语言的API,具体参考Kafka的cwiki页面: Kafk ...

  7. kafka搜索介绍

    kafka详解  https://blog.csdn.net/liubenlong007/article/details/55211196##1  1.2 Kafka诞生 Kafka由 linked- ...

  8. 第1节 kafka消息队列:1、kafka基本介绍以及与传统消息队列的对比

    1. Kafka介绍 l  Apache Kafka是一个开源消息系统,由Scala写成.是由Apache软件基金会开发的一个开源消息系统项目. l  Kafka最初是由LinkedIn开发,并于20 ...

  9. 【Kafka】Kafka简单介绍

    目录 基本介绍 概述 优点 主要应用场景 Kafka的架构 四大核心API 架构内部细节 基本介绍 概述 Kafka官网网站:http://kafka.apache.org/ Kafka是由Apach ...

  10. kafka综合介绍

    设计目标 高吞吐率.即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输. 支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输 同 ...

随机推荐

  1. LeetCode 410——分割数组的最大值

    1. 题目 2. 解答 此题目为 今日头条 2018 AI Camp 5 月 26 日在线笔试编程题第二道--最小分割分数. class Solution { public: // 若分割数组的最大值 ...

  2. [转载]深入理解Batch Normalization批标准化

    文章转载自:http://www.cnblogs.com/guoyaohua/p/8724433.html Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和 ...

  3. matlab mex 小o -o 出错

    https://github.com/kyamagu/mexopencv/issues/117 就是说2014a以后的版本mex   -o 选项变成了 -output 蛋疼,这有什么好改的.找了好久才 ...

  4. Week7 Teamework from Z.XML-任务分配

    任务分配 Z.XML任务初步分配新鲜出炉,请关注! 初步估计,我们的项目需要191小时.但是根据敏捷开发的方法,我们将在开发过程中根据情况迅速调整任务分配,以适应当时问题.

  5. 【Python】python中的__dict__,__getattr__,__setattr__

    Python class 通过内置成员__dict__ 存储成员信息(字典) 首先用一个简单的例子看一下__dict__ 的用法 class A(): def __init__(self,ax,bx) ...

  6. Coursera: Internet History, Technology, and Security

    课程网址:https://www.coursera.org/learn/internet-history 学习笔记: Week 1: History - Dawn of Early Computing ...

  7. Java——异常博客作业

    本次任务地址 6. 为如下代码加上异常处理 6.1 改正代码,并增加如下功能.当找不到文件时,需提示用户找不到文件xxx,请重新输入文件名,然后尝试重新打开. 如果是其他异常则提示打开或读取文件失败! ...

  8. ubuntu16.04 装了一天的gitlab

    1.安装gitlab baidu安装完了[后续再自己写安装过程] 2.遇到的问题 访问gitlab http://ip 可以进入页面也能操作但是console报404无法加载js和css,这样很不方便 ...

  9. [BJOI2006]狼抓兔子——最小割转对偶图最短路

    其实这个题直接Dinic跑最小割可过. (小优化是: 无向图建网络流,一条边不用建成4条,可以正反容量都是边权即可.完全等价 ) [无效]网络流之转换对偶图 一个巧妙的事情是,如果建边合适的话,最小割 ...

  10. org.json与json-lib的区别(补充 FastJson)

    org.json 是JSON国际组织官方推出的标准json解析方案,已经被 android sdk 纳入到标准内置类库,依赖项少,但直至API17版本SDK中,仅支持JSONObject与JSONAr ...