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. module.export和export

    module.exports 和 exports 是引用到的同一个对象,类似下面代码所示(为了举例,不是完全的正确): var module.exports = {};        var expo ...

  2. lua 快速排序

    function partion(arr, left, right) local tmp = arr[left] while left < right do while left < ri ...

  3. Emgu CV播放视频

    public partial class Form1 : Form {     Capture _capture;     public Form1()     {         Initializ ...

  4. 使用JSON Schema来验证接口数据

    最近在做一些关于JSON Schema的基建,JSON Schema可以描述一个JSON结构,那么反过来他也可以来验证一个JSON是否符合期望的格式. 如果之前看我写的<使用joi来验证数据模型 ...

  5. MySQL的limit查询优化

    MySQL的limit查询优化以下的文章主要是对MySQL limit查询优化的具体内容的介绍,我们大家都知道MySQL数据库的优化是相当重要的.其他最为常用也是最为需要优化的就是limit.MySQ ...

  6. 关于H5本部缓存localStorage,sessionStorage

    HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前,这些都是由 coo ...

  7. 第五章GPIO接口

    5.1 GPIO硬件介绍 可以不通过他们输出高低电平或者通过它们读入应交的状态 S3C2410有117个I/O端口,分为A~H共8组:GPA.GPB....GPH S3C2440有130个I/O端口, ...

  8. [置顶]PADS PCB功能使用技巧系列之NO.002- 如何走差分线?

    差分信号在高速电路设计中应用越来越广泛,如USB.HDMI.PCI.DDR*等,承载差分信号的差分线主要优势有:抗干扰能力强,能有效抑制EMI.时序定位精确等,对于PCB工程师来说,最关注的是如何确保 ...

  9. alfresco install in linux, and integrated with tesseract ocr

    本文描述在Linux系统上安装Alfresco的步骤: 1. 下载安装文件:alfresco-community-5.0.d-installer-linux-x64.bin 2. 增加执行权限并执行: ...

  10. 安装CAS服务器

    1.简介 参考: http://www.coin163.com/java/cas/cas.html CAS主要用于多系统单点登录,属于WEB SSO.SSO体系主要角色有三种:User(多个),WEB ...