Kafka黑话(基本概念)(一)

kafka中的基本概念

消息和批次

消息:

消息kafka里的数据单元,也就是我们一般消息中间件里的消息概念;消息由字节数组组成,消息还可以包含键,用以对消息选取分区。

批次:

为了提高效率,消息被分批写入kafka;批次就是一组消息,这些消息属于同一个主题和分区。如果只传递单个消息,会导致大量的网络开销,把消息分成批次传输可以减少开销。但是,这个需要权衡,批次里包含的消息越多,单位时间内处理的消息就越多,单个消息的传输时间就越长。如果进行压缩,可以提升数据的传输和存储能力,但需要更多的计算处理。

主题和分区

kafka里的消息用主题进行分类,主题下又可以被分为若干个分区。分区本质上是个提交日志,有新消息,这个消息就会以追加的方式写入分区,然后用先入先出的顺序读取。

①但是因为主题会有多个分区,所以在整个主题的范围内,是无法保证消息的顺序的,单个分区则可以保证。

②kafka通过分区来实现数据冗余和伸缩性,因为分区可以分布在不同的服务器上,那就是说一个主题可以跨越多个服务器。

③kafka可以看成一个流平台,很多时候,我们会把一个注意的数据看成一个流,不管有多少个分区。

生产者和消费者、偏移量、消费者群组

(1)生产者默认情况下把消息均衡分布到主题的所有分区上,如果需要指定分区,则需要使用消息里的消息键和分区器。

(2)消费者订阅主题,一个或者多个,并且按照消息的生成顺序读取。消费者通过检查所谓的偏移量来区分消息是否读取过。偏移量是一种元数据,一个不断递增的整数值,创建消息的时候,kafka会把他加入消息。在一个分区里,每个消息的偏移量是唯一的。每个分区最后读取的消息偏移量会保存到Zookeeper或者kafka上,这样分区的消费者关闭或重启,读取状态都不会丢失。

(3)多个消费者可以构成一个消费者群组。    共同读取一个主题的消费者们,就形成了一个群组。群组可以保证每个分区只被一个消费者使用。

(4)消费者和分区之间的这种映射关系叫做消费者对分区的所有权关系,可以得出,一个分区只有一个消费者,而一个消费者可以有多个分区。

Broker和集群

(1)一个独立的kafka服务器叫Broker。broker的主要任务是:接收生产者的消息,设置偏移量,提交消息到磁盘保存;为消费者提供服务,相应请求,返回消息。在合适的硬件上 单个broker可以处理上千个分区和每秒百万级的消息量。

(2)多个broker可以组成一个集群。每个集群中broker会选举出一个集群控制器。控制器会进行管理,包括将分区分配给broker和监控broker。

(3)集群里,一个分区从属于一个broker,这个broker被称为首领。但是分区可以被分配给多个broker,这个时候会发生分区复制。

(4)分区复制带来的好处是,提供了消息冗余。一旦首领 broker 失效,其他 broker 可以接管领导权。当然相关的消费者和生产者都要重新连接到新的首领上。

保留消息策略

在一定期限内保留消息是kafka的一个重要特性,broker默认的保留策略是:要么保留一段时间 , 要么保留一定大小。到了限制,旧消息过期并删除。但是每个主题可以根据业务需求 配置自己的保留策略。

kafka的特性(为什么选择kafka)

优点:

①多生产者和多消费者

②基于磁盘的数据存储,或者说 kafka 的数据天生就是持久化的。

③高伸缩性,kafka一开始就被设计成一个具有灵活伸缩性的系统,对在线集群的伸缩 丝毫不影响整体系统的可用性。

④高性能,结合横向扩展生产者、消费者和broker,kafka可以轻松处理巨大的信息流,同时保证压秒及的消息延迟。

常见场景

传递消息

        标准消息中间件功能

活动跟踪

        记录页面访问次数和点击,将这些信息作为消息发布到一个或者多个主题上。(这一步 Redis 也可以奥。。。)

提交日志

        收集其他系统的变动日志,如DB。可以把DB的更新发布到kafka上,应用通过监控事件流来接收数据库数据库的实时更新,或者通过事件流将数据库的更新复制到远程系统。

        还可以当其他系统崩溃了,通过重放日志来回复系统的状态。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值