Kafka是一个分布式的消息队列,学习见Apache Kafka文档,中文翻译见Kafka分享,一个简单的入门例子见kafka代码入门实例。本文只针对自己感兴趣的点记录下。

1.架构

Producer/Consumer:消息的生成者和使用者。
Broker:kafka server充当broker角色,起到消息队列的作用。
topic/partion:topic是一类消息的名称,一个topic下的消息可以分成多区(partion)存储,一个分区是一个有序队列(消息按接收时间依次追加,利用offset做为唯一id),分区间消息无序。
zookeeper:broker和consumer向zk注册,实现元数据的保存和交换、集群管理。
push/pull:producer通过一个初始broker.list与broker建立连接,获取所有broker信息,主动向一个topic的分区leader推送信息;consumer通过zk获取broker列表,主动从broker拉取信息。
consumer group:为了提高consumer处理并行性,多个consumer可以组成一个group,一个topic下的消息会保证每个group中的一个consumer消费,一个group中的consumer交错消费整个topic。简单说,topic下的一条消息会给所有的group,但一个group中只有一个consumer接收到该消息。

2.数据存储与备份

一个机子存储不下一个topic时,如何做?又如何做消息冗余备份呢?
这就是分区的目的,在创建topic时可以指定其分区数、备份数,消息会被hash到不同的分区存储(其hash过程由producer在客户端处理),每个分区有自己的机器。
如上,该kafka集群有3个broker(3个节点),名字为my-replicated-topic-1的topic有4个partition,每个partition有2个replica(每条消息备份2次,每个replica位于不同的节点),一个partion有一个leader负责该partition内的数据读写。producer根据消息的key hash到一个partition后,直接和该partition的leader通信。
其中ISR(in-sync replicas)同步列表是该partition中处于同步状态的备份broker,如果一个broker长时间不和leader通信,或者消息数与leader相差太大,leader就会将该broker从ISR队列中移除,该broker就会后台从leader fetch数据,直到up-to-date,然后再次加入ISR同步列表。
这些patition、replica信息与状态都存储在zookeeper中,便于leader重新选举和信息同步。
待续
待读:https://cwiki.apache.org/confluence/display/KAFKA/FAQ;http://www.jasongj.com/2015/03/10/KafkaColumn1/

消息队列-Kafka学习的更多相关文章

  1. 消息队列Kafka学习记录

    Kafka其实只是众多消息队列中的一种,对于Kafka的具体释义我这里就不多说了,详见:http://baike.baidu.com/link?url=HWFYszYuMdP_lueFH5bmYnlm ...

  2. 分布式消息队列 Kafka

    分布式消息队列 Kafka 2016-02-25 杜亦舒 Kafka是一个高吞吐量的.分布式的消息系统,由Linkedin开发,开发语言为scala具有高吞吐.可扩展.分布式等特点 适用场景 活动数据 ...

  3. 消息队列kafka

    消息队列kafka   为什么用消息队列 举例 比如在一个企业里,技术老大接到boss的任务,技术老大把这个任务拆分成多个小任务,完成所有的小任务就算搞定整个任务了. 那么在执行这些小任务的时候,可能 ...

  4. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  5. 消息队列 Kafka 的基本知识及 .NET Core 客户端

    前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息 ...

  6. 基于Docker搭建分布式消息队列Kafka

    本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示.本例搭建的 ...

  7. (转)消息队列 Kafka 的基本知识及 .NET Core 客户端

    原文地址:https://www.cnblogs.com/savorboard/p/dotnetcore-kafka.html 前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是 ...

  8. Kafka 消息队列系列之分布式消息队列Kafka

    介绍 ApacheKafka®是一个分布式流媒体平台.这到底是什么意思呢?我们认为流媒体平台具有三个关键功能:它可以让你发布和订阅记录流.在这方面,它类似于消​​息队列或企业消息传递系统.它允许您以容 ...

  9. 消息队列——Kafka基本使用及原理分析

    文章目录 一.什么是Kafka 二.Kafka的基本使用 1. 单机环境搭建及命令行的基本使用 2. 集群搭建 3. Java API的基本使用 三.Kafka原理浅析 1. topic和partit ...

随机推荐

  1. gcc 常用命令行及解释

    gcc - GNU project C and C++ compiler   gcc [option] file...            preprocessing         compila ...

  2. SQL Server客户端登录名与数据库用户关联

    数据库迁移之后,在新的SQL Server客户端工具设置关联时,往往会报错: 用户.组或角色 'XXX' 在当前数据库中已存在. 解决方法: 首先介绍一下sql server中“登录”与“用户”的区别 ...

  3. How to Test Controller Concerns in Rails 4

    Concerns are a new feature that was added in Rails 4. They allow to clean up code in your models and ...

  4. js之数据类型

    1.数组类型 var Array=new Array(); 长度可变 var Array=new Array(n); 长度为n的数组 var Array=new Array("A" ...

  5. css3之多列

                                             

  6. 一行css代码调试中学到的javascript知识,很有意思

    现在到处都是JavaScript,每天都能知道点新东西.一旦你入了门,你总能从这里或是那里领悟到很多知识.今天我想分享Addy Osmani的一行代码 ,这行代码对于你调试你的CSS是很有用的.为了可 ...

  7. LoopBackJS 之 文件上传下载——使用loopback-component-storage

    参考链接: http://loopback.io/doc/en/lb2/Storage-component.html#creating-a-storage-component-data-source ...

  8. UVa 11292 Dragon of Loowater

    简单贪心 龙头的直径和人的佣金排序,价值小的人和直径小的配 #include<iostream> #include<cstdio> #include<cmath> ...

  9. Debian使用相关

    1)将普通用户添加到sudo组 首先安装sudo: root@~#: apt-get install sudo 然后添加将wzc用户添加到sudo组: root@~#: usermod -a -G s ...

  10. lvs DR模式下vip的端口无法telnet

    错误介绍: 在lvs配置文件中新添加一个vip  ,并添加一个virtual_server,添加两个realserver,配置文件都是复制,结果证明没问题,当时的效果是vip的端口telnet不了 过 ...