kafka学习总结之kafka简介
kafka是一个分布式,基于subscribe-publish的消息系统
特性:高吞吐量、低延迟、可扩展性、持久性(消息持久化到本地磁盘)、可靠性、容错性(n个副本,允许n-1个节点失败)、高并发(支持数千个客户端同时读写)
设计思想:
(1) Consumer group:多个consumer可以组成一个group(group-id区分),每个消息只能被组中的一个consumer消费,同时消费一个消息的consumer一定不在同一组;
(2) 消息状态:kafka中,消息的状态被保存在consumer中,节点(broker)不关心什么消息被谁消费了,只保存偏移量(指向partition,即分区中下一个即将被消费的消息);
(3) 消息的保存:消息会被持久化到本地磁盘中,而且可以(可配置)长期保存,以便consumer可以多次消费;
(4) 批量发送:kafka支持以消息集合为单位进行批量发送,从而提高效率
(5) 异步:producer只管向broker push消息,consumer只管从broker pull消息,这个过程是异步的,不存在谁等谁;
(6) 集群:kafka集群中的broker地位相同,没有主从关系,可以随意增加或删除任何一个broker,kafka0.8.x通过metadataAPI进行负载均衡,kafka0.7.x主要靠zookeeper进行负载均衡;
(7) 分区partition:kafka的broker支持消息分区,producer决定将消息发送到哪个分区,分区中消息的顺序即是producer发送的顺序,一个主题可以有多个分区。
架构组件:
topic:主题,kafka中发布订阅的对象
producer:向topic发布消息的一端
consumer:从topic订阅消息的一端
broker:kafka的一个服务实例,即是一个kafka服务器

图 1 kafka集群结构图
topic和partition:
一个topic有多个partition,每个partition中的消息都是有序的,kafka的节点broker会维护一个消息的偏移(index)唯一确定一个消息

图 2 topic和partition关系图
kafka学习总结之kafka简介的更多相关文章
- kafka学习2:kafka集群安装与配置
在前一篇:kafka学习1:kafka安装 中,我们安装了单机版的Kafka,而在实际应用中,不可能是单机版的应用,必定是以集群的方式出现.本篇介绍Kafka集群的安装过程: 一.准备工作 1.开通Z ...
- Kafka学习笔记之Kafka背景及架构介绍
0x00 概述 本文介绍了Kafka的创建背景,设计目标,使用消息系统的优势以及目前流行的消息系统对比.并介绍了Kafka的架构,Producer消息路由,Consumer Group以及由其实现的不 ...
- 【kafka学习之五】kafka运维:kafka操作日志设置和主题删除
一.操作日志 首先附上kafka 操作日志配置文件:log4j.properties 根据相应的需要设置日志. #日志级别覆盖规则 优先级:ALL < DEBUG < INFO <W ...
- Kafka学习之二 Kafka安装和使用
部署环境Linux(Centos 6.5),JDK 1.8.0,zookeeper-3.4.12,kafka_2.11-2.0.0. 1. 单机环境 官方建议使用JDK 1.8版本,因此本文使 ...
- kafka学习1:kafka安装
一.环境准备 1.jdk 如果不会安装linux下的jdk,参考这篇文章:http://www.cnblogs.com/gudi/p/7812033.html 2.kafka wget –c ht ...
- Kafka学习笔记之Kafka三款监控工具
0x00 概述 在之前的博客中,介绍了Kafka Web Console这 个监控工具,在生产环境中使用,运行一段时间后,发现该工具会和Kafka生产者.消费者.ZooKeeper建立大量连接,从而导 ...
- 【kafka学习之四】kafka集群性能测试
kafka集群的性能受限于JVM参数.服务器的硬件配置以及kafka的配置,因此需要对所要部署kafka的机器进行性能测试,根据测试结果,找出符合业务需求的最佳配置. 1.kafka broker j ...
- 【kafka学习之三】kafka集群运维
kafka集群维护一.kafka集群启停#启动kafka/home/cluster/kafka211/bin/kafka-server-start.sh -daemon /home/cluster/k ...
- Kafka学习笔记之Kafka性能测试方法及Benchmark报告
0x00 概述 本文主要介绍了如何利用Kafka自带的性能测试脚本及Kafka Manager测试Kafka的性能,以及如何使用Kafka Manager监控Kafka的工作状态,最后给出了Kafka ...
随机推荐
- SQLSERVER无排序生成序号
实现方式:ROW_NUMBER() SELECT RowID=(ROW_NUMBER() OVER(ORDER BY(SELECT ))) FROM dbo.tbl_name 实现方式:IDENTIT ...
- Oracle物化视图的创建及使用(一
Oracle物化视图的创建及使用 http://blog.csdn.net/tegwy/article/details/8935058 先看简单创建语句: create materialized ...
- android studio 错误: InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClass annotations are ignored
android studio 错误: InnerClass annotations are missing corresponding EnclosingMember annotations. Suc ...
- C++的技术探究
C++深究 函数指针 double pam(int, double); // prototype double (*pf)(int, double); // declare function poin ...
- 初学者在Mysql8.0连接时的几个常见基本问题
最近在做一些java web整合时使用的最新版Mysql8.0.3,发现Mysql连接中的几个问题,总结如下: package db; import java.sql.*; public class ...
- OpenCV——图像修补
- 1.5《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——清屏
使用命令行时,使用clear命令清除屏幕非常方便: $ clear 键盘简写为^L.(Ctrl + L) 同样地,使用完终端当前窗口或标签页,使用exit命令退出进程: $ exit 键盘简写为^D ...
- centos7 sentry部署指南
依赖说明 sentry官方推荐docker方式安装,使用到了docker-compose.docker至少是1.10.3以上的版本.为此需要使用centos7. 安装docker #添加yum 源 # ...
- go语言之行--包与变量
一.包的概念 包是go语言中不可缺少部分,在每个go源码的第一行进行定义,定义方式是:package "包名",并且该名称是作为调用该包时候所使用的名称. 包的概念总结: 每个 G ...
- 20155234 Exp2 后门原理与实践
Windows获得Linux Shell 1.查看ip 2.监听端口 3.实验成功如下图 Linux获得Win Shell 1.查看虚拟机ip 2.监听端口 3.实验成功如下图 使用NC传输数据 1. ...