1、Kafka整体架构
    一个典型的Kafka集群中包含若干producer(可以是web前端产生的page view,或者是服务器日志,系统CPU、memory等),
若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干consumer group,以及一个zookeeper集群。
Kafka通过zookeeper管理集群配置,选举leader,以及在consumer group发生变化时进行平衡。producer使用push模式将消息
发布到broker,consumer使用pull模式从broker订阅并消费消息。

2、Topic & Partition
    Kafka提供一个抽象概念:topic
    一个topic是对一组消息的归纳,对每个toopic,Kafka对他的日志进行了分区

3、Kafka的特性
(1)、Kafka高吞吐率的原因,顺序读写
(2)、Kafka的吞吐率可以水平扩展
(3)、Kafka的消息可以被保存
(4)、在发送一条消息是,也可以指定这条消息的key,producer根据这个key和partition机制来判断将这条消息发送到哪个partiton。
(5)、一般情况下partition数量大于broker的数量,并且所有partition的leader均匀分布在broker上。
4、如何确定Topic/Patition的数量
(1)越多的分区可以提供更高的吞吐量
(2)越多的分区需要打开更多的文件句柄
(3)更多的分区会导致更高的不可用性
(4)更多分区可能增加端对端的延迟
(5)更多的分区意味着需要客户端需要更多的内存
5、Producer
    Producer将消息发布到制定的topic中,并负责决定发布到哪个分区,通常简单的由负载均衡机制随机选择分区,
但也可以通过特定的分区函数(key值)选择分区,使用更多的是第二种
6、Sync Producer & Async Producer
Sync 同步模式
    生产一条消息,消费一条消息
Async 异步模式
    生产者将生产消息放到队列缓冲中,消费者从缓冲区去中去取消息
7、Consumer/consumer group
    每一个consumer实例都属于一个cousumer group,每一条消息会被同一个consumer group里的一个consumer实例消费。
不同consumer group可以同时消费一条消息

8、Push & Pull
    producer向broker push消息,consumer从broker pull消息。push模式和pull模式各有优劣
    push模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。push模式的目标是尽可能以最快速度传递消息
但是这样很容易造成consumer来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而pull模式则可以根据consumer的消费能力
以适当的速率消费消息。

Kafka的架构的更多相关文章

  1. 揭秘Kafka高性能架构之道 - Kafka设计解析(六)

    原创文章,同步首发自作者个人博客.转载请务必在文章开头处以超链接形式注明出处http://www.jasongj.com/kafka/high_throughput/ 摘要 上一篇文章<Kafk ...

  2. Kafka学习之路 (二)Kafka的架构

    一.Kafka的架构 如上图所示,一个典型的Kafka集群中包含若干Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU.Memory等),若干broker(Kaf ...

  3. Kafka设计解析(六)Kafka高性能架构之道

    转载自 技术世界,原文链接 Kafka设计解析(六)- Kafka高性能架构之道 本文从宏观架构层面和微观实现层面分析了Kafka如何实现高性能.包含Kafka如何利用Partition实现并行处理和 ...

  4. Apache Kafka主题 - 架构和分区

    1.卡夫卡话题 在这篇Kafka文章中,我们将学习Kafka主题与Kafka Architecture的整体概念.Kafka中的体系结构包括复制,故障转移以及并行处理.此外,我们还将看到创建Kafka ...

  5. rocketMq和kafka的架构区别

    概述 其实一直想写一篇rocketMq和kafka在架构设计上的差别,但是一直有个问题没搞明白所以迟迟没动手,今天无意中听人点播了一下似乎明白了这个问题,所以就有了这篇对比. 这篇博文主要讲清楚kaf ...

  6. 第1节 kafka消息队列:2、kafka的架构介绍以及基本组件模型介绍

    3.kafka的架构模型 1.producer:消息的生产者,主要是用于生产消息的.主要是接入一些外部的数据源,从外部获取数据,比如说我们可以从flume获取数据,还可以通过ftp传入数据等,还可以通 ...

  7. Kafka体系架构详细分解

    我的个人博客排版更舒服: https://www.luozhiyun.com/archives/260 基本概念 Kafka 体系架构 Kafka 体系架构包括若干 Producer.若干 Broke ...

  8. Kafka体系架构、命令、Go案例

    原文地址:https://github.com/WilburXu/blog/blob/master/kafka/Kafka基本架构和命令.md Kafka体系架构 Broker服务代理节点 服务代理节 ...

  9. Kafka 探险 - 架构简介

    Kafka 探险 - 架构简介 这个 Kafka 的专题,我会从系统整体架构,设计到代码落地.和大家一起杠源码,学技巧,涨知识.希望大家持续关注一起见证成长! 我相信:技术的道路,十年如一日!十年磨一 ...

随机推荐

  1. OPPO.1107刷机笔记

    手动 转移任意APP为系统APP的方法流程简述 宗旨: 保持和系统原本同目录下的文件各种设置(权限,所有者,SE上下文),目录结构保持一致即可! 从 /data/app/里将对应的APP文件移动到 / ...

  2. HDU5374 Tetris (2015年多校比赛第7场)大模拟

    思路: 先写好了几个函数.旋转,四种操作,推断能否够进行合并消除 题中有好几处要考虑的细节问题,如 自然下落究竟部时不进行合并的推断,而是当自然下落非法时才推断 假设消除一行,这一行上面的所以方块仅仅 ...

  3. C++语言基础(1)-命名空间

    一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,当有两个人都同时定义了一个名字相同的全局变量或函数的时候,若是把他们的代码整合在一块编译,此时编译器就会提示变量或函数重复定义,C++为 ...

  4. python自动生成文件头

    "auto add pyhton header --start autocmd BufNewFile *.py 0r ~/.vim/vim_template/vim_python_heade ...

  5. JavaScript之Date对象

    Javascript中的Date类型是在Java.util.Date基础上创建的. 以1970年01月01日至今的毫秒数来保存时间. 要创建一个Date var now = new Date(); 也 ...

  6. ubuntu16安装docker

    首先确保curl已经安装! 然后执行: curl -sSL https://get.docker.com/|sudo sh 这个是通过脚本的方式安装docker. 运行命令测试 sudo docker ...

  7. python使用hbase

    #coding:utf-8 __author__ = 'similarface' from multiprocessing import Process import happybase import ...

  8. mysql之replicate_do_table/replicate_ingore_table/replicate_wide_do_table/replicate_wide_ingore_table

    参考:http://yhqlzz.blog.51cto.com/2557314/1159084/ mysql官网:http://dev.mysql.com/doc/refman/5.1/en/repl ...

  9. iOS swift cookie创建存储移除

    保存网络请求的cookies,并存储到UserDefaults中 //保存COOKIES static func saveCookies(for urlStr: String){ if let url ...

  10. 在linux下使用curl

    使用curl从 ftp下载文件 curl ftp://192.168.31.164/lrzsz-0.12.20.tar.gz --user root:123456 -o lrzsz-0.12.20.t ...