Kafka笔记基础概念和安装配置
来源:互联网 发布:基金软件手机版 编辑:程序博客网 时间:2024/06/01 08:27
1 定义
Kafka是一个分布式消息队列,是由apache开源的一个消息系统,用scala写成。
它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。
kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。
无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。
2 概念
一个topic可分为多个partitions,每个partition为一个目录,partition命名规则为:topic名称+有序序号,序号从0开始,最大值为partition数量减一。每个partition(目录)包含多个大小相等的segment数据文件,相当于一个大文件被平均分配到多个大小相等的segment中,每个segment包含多个消息,消息数不一定相同。
topicànpartitions(目录)
partitionànsegments
segmentàn msgs
一个topic可以被多个group订阅,topic会发送到所有的group。
topic中的一条特定的消息,只会被订阅此topic的每个group中的其中一个consumer消费,此消息不会发送给一个group中的多个consumer。
一个consumer可以同时消费多个partition。
kafka保证一个patition中的消息被某个consumer消费时是有序的,不保证patitions之间消息的有序性。
即:一个消息或partition只能被一个consumer消费,消费完就没了。
同一个group中不能有多余partitions个数的consumer同时消费,否则某些consumer将无法得到消息。
一个group可以有多个consumer,一个consumer只能属于一个group。通常情况下,一个group中会包含多个consumer,这样不仅可以提高topic中消息的并发消费能力,还能提高“故障容错”性,如果group中的某个consumer失效了,那么其消费的patitions将会由其他consumer自动接管(触发kafka的rebalance)。
3 安装配置
3.1 安装
上kafaka.apache.org下载、解压、配置环境变量即完成安装。kafka依赖zookeeper,需先安装zookeeper。
环境变量:
export KAFKA_HOME=xxx
export PATH=${KAFKA_HOME}/bin:$PATH
3.2 配置
3.2.1 配置server.properties
各服务器上的server.properties里的broker.id值不能重复。
host.name为本机IP,若不改则报错connection to localhost:port unsuccessful。
3.2.2 配置consumer.properties
3.2.3 配置producer.properties
3.3 启动
[root@yhnormal kafkahome]#bin/kafka-server-start.shconfig/server.properties
- Kafka笔记基础概念和安装配置
- kafka的安装和配置
- Kafka基础概念
- Kafka基础概念
- Subversion基础:概念、安装、配置和基本操作
- Subversion基础:概念、安装、配置和基本操作
- kafka基础之核心概念
- 领英的kafka安装和配置
- kafka+java 伪分布式安装和配置
- Kafka系列(一)安装和配置说明
- 关于zookeeper和kafka的配置安装
- Kafka学习笔记1:概念
- Kafka学习笔记 --- 概念梳理
- Hive基础(1)概念、安装、使用笔记
- Kafka 基础笔记
- [学习笔记]Python基础_安装和环境配置
- Kafka 安装配置
- kafka安装配置简介
- ARM裸机从零开始的学习1--基础概念
- 新浪面试
- POJ 3111 K Best 01分治
- PHP的exec()函数用法详解
- 微信授权登录以及静默授权
- Kafka笔记基础概念和安装配置
- 【Android】の基础——Volley框架
- [HDU](2570)迷瘴 ---贪心
- 正则表达式 注释
- 数据结构之栈的应用(2)回文序列
- 1016划拳(模拟)
- 转盘红包的学习记录
- ids for this class must be manually assigned before calling save():
- Error:A problem occurred configuring project ':app'.