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. Linux下lvm在线扩容步骤

    转 :https://jingyan.baidu.com/article/25648fc18f22b29191fd0011.html 图片看不清可以看原文 LVM是逻辑盘卷管理(Logical Vol ...

  2. Netty(一):初识Netty

    Netty是什么? Netty是由JBOSS提供的一个java开源框架. Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 封装了JDK底 ...

  3. Html打印需要内容块(Js实现)

    首先在head里面加入下面一段js代码: function preview(oper) { ) { bdhtml = window.document.body.innerHTML; //获取当前页的h ...

  4. 更改系统环境设置,让alias永远生效

        alias(中文称为“别名”)允许使用更加简短的名称来重新定义 Linux 中的 Shell 命令,从而简化命令行的输入.如果经常与 CLI 打交道,那么使用 alias 不仅会节省时间,而且 ...

  5. [浪风分享]App必死 Web永生 看Web的前世今生 必会卷土重来

    当我们回顾技术的演变历史时,我们也应该关注技术演变的背后逻辑. 几年前,美国的<连线>杂志发表了“Web已死,Internet永生”的文章,由于作者之一是长尾理论的提出者克里斯.安德森(C ...

  6. #进阶系列——WebApi 身份认证解决方案:Basic基础认证

    阅读目录 一.为什么需要身份认证 二.Basic基础认证的原理解析 1.常见的认证方式 2.Basic基础认证原理 三.Basic基础认证的代码示例 1.登录过程 2./Home/Index主界面 3 ...

  7. NDK,在JNI层使用AssetManager读取文件

    NDK,二进制文件数据读取,在JNI层,通过AAssetManager读取asset内部的资源: 需要头文件的支持 #include <android/asset_manager_jni.h&g ...

  8. jmeter 参数值写入到指定的文件中[如获取token写入某文件为免登录备用]

    1.编写java 类AppendFile ,代码如下 import java.io.File;import java.io.FileWriter;import java.io.IOException; ...

  9. Unity3d 子线程能做的事

    一,子线程中能做的事: 1,数据逻辑方面计算: 二,子线程中,不能: 1,加载场景相关事件: Application.LoadLevelAsync.Application.LoadLevel等: 2, ...

  10. Android开发:《Gradle Recipes for Android》阅读笔记1.6——使用android studio添加依赖

    有经验的gradle开发者习惯直接编辑build.gradle文件,但是IDE没有提供许多代码提示.IDE提供了一个可视的界面显示配置内容. 点击像文件夹一样的图标可以看到project struct ...