kafka入门及基本概念

1、kafka

kafka是一个分布式的、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统,低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,目前已经成为Apache基金会的顶级开源项目。

2、kafka的特性

  • 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition,consumer group 对partition进行consume操作
  • 可扩展性:kafka集群支持特扩展
  • 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据的丢失
  • 容错性:允许集群中节点的失败(若副本数量为n,则允许n-1个节点失败)
  • 高并发:支持数千个客户端同时读写

3、几个核心概念

broker: 消息中间件处理节点,一个kafka节点就是一个broker,一个或者多个broker可以组成一个kafka集群

topic: 主题,kafka根据topic对消息进行归类,发布到kafka集群的每一条消息都需要指定一个topic

partition:分区,物理上的概念,一个topic可以分为多个partition,每一个partition内部都是有序的

producer: 消息生产者,向broker发送消息的客户端

consumer:消息消费者,从broker读取消息的客户端

consumerGroup: 每个consumer属于一个特定的consumer Group,一条消息可以被不同的消费者组同时进行消费,但是一个消费者组内只能有一个消费者能够消费该消息

4、topic以及partition

一个topic认为是一类消息,每个topic将被分成多个partition,每一个partition在存储层面是append log 文件。任何发布到此partition的消息都会被追加到log文件的尾部,没一条消息在文件中的位置称为offset(偏移量),offset为一个long型的数字,它唯一标记一条消息。每条消息都被append到partition中,是顺序写入磁盘,因此效率非常的高。每一个partition可以理解为一个非常长的数组,每一条消息在里面都有一个索引位置。

没一条消息被发送到broker中,会根据partition规则选择被存储到哪一个partition。如果partition规则设置的合理,所有的消息可以均匀分布到不同的partition里面,这样就实现了水平扩展。如果不额外设置规则,默认的设置多个partition,kafka就会将消息均匀地将消息发送到不同的partition中。

5、基本配置

kafka server的基本配置都在server.properties中,下列列出主要的配置项

# broker的ID
broker.id=0
# 服务端需要监听的地址
listeners = PLAINTEXT://your.host.name:9092
# 分区数量
num.partitions=3
# 副本数量
offsets.topic.replication.factor=2
# log保存时间默认168h
log.retention.hours=168
# log 文件的路径
log.dirs=/tmp/kafka-logs
# log文件的大小
log.segment.bytes=1073741824
# zookeeper连接地址
zookeeper.connect=localhost:2181

6、数据可靠性

当producer向leader发送数据时,可以通过request.required.acks参数来设置数据可靠性级别

1: 这意味着producer在leader已成功收到数据并得到确认,如果leader宕机了,则会丢失数据。

0:这意味着producer无需等待来自broker的确认而继续发送下一批消息。这种情况下数据传输效率最高,但是数据可靠性最低。

-1(all): producer需要等待所有的follower都确认接收到数据后才算一次发送完成,可靠性最高,但是牺牲了一定的效率。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值