Kafka中一些基本概念

Kafka概述

Kafka 是分布式发布-订阅消息系统,即,kafka是一种分布式的消息队列工具。

kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群由多个kafka实例组成,每个实例(server)称为broker。

无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。

Kafka特点

  高吞吐量:Kafka 每秒可以生产约 25 万消息(50 MB),每秒处理 55 万消息(110 MB)

  持久化数据存储:可进行持久化操作。将消息持久化到磁盘,因此可用于批量消费。

  分布式系统易于扩展:所有的 producer、broker 和 consumer 都会有多个,均为分布式的。

  客户端状态维护:消息被处理的状态是在 consumer 端维护,而不是由 server 端维护。

Kafka详解

Topic & Partition & replication - 主题、分区和副本

Topic主题

一个topic是对一组消息的归纳。在一个Kafka集群中,可以创建多个topic主题,以topic主题为单位管理消息,kafka中多个topic主题之间是互相隔离互不影响,从而可以在一个Kafka集群中通过创建多个topic主题实现不同的使用者独立使用不同topic主题而互不影响。

Partition分区

kafka的topic主题中还可以划分出若干的分区。Kafka以分区为单位对主题中的数据实现多副本并进行分布式存储。利用分区机制保证了每个分区的数据量不会太大,可以在单个服务上保存。分区通过多副本实现了kafka的负载均衡及失败恢复。另外每个分区可以单独发布和消费,为并发操作topic提供了一种可能。

offset序号

分区中的每个消息都有一个连续的序列号叫做offset,用来在分区中唯一的标识这个消息。

Replication副本

每个分区都可以有若干副本,这些副本分布式的存放在不同的服务器中,共同处理请求提升性能,并使Kafka具备了容错能力。为了保证数据的一致性,若干副本中会有一个成为leader负责读写操作,而其他副本成为follower负责同步leader的数据,对外只提供读的能力。

Producer - 生产者

生产者是一个向kafka Cluster发布记录的客户端;生产者是线程安全的,跨线程共享单个生产者实例通常比具有多个实例更快

Consumer - 消费者

消费者是一个从kafka Cluster中消费数据的一个客户端;该客户端可以处理kafka brokers中的故障问题,并且可以适应在集群内的迁移的topic分区;该客户端还允许消费者组使用消费者组来进行负载均衡。

Kafka在大数据生产环境下的优势

分布式存储数据,易于扩展

利用磁盘存储数据,且按照主题、分区来分布式存放数据,持久化存储,提供海量数据存储能力

利用磁盘存储数据,数据不会意外丢失,提供了更好的可靠性

采用磁盘存储数据,连续进行读写保证性能,性能和磁盘的性能相关和数据量的大小无关

CAP理论

CAP定理认为,在分布式开发环境下

C(Consistency:一致性):分布式环境下 任意时间点中 数据是否一致

P(Partition Tolerance:分区容忍性):是否可以对数据进行分区 达成分布式环境的可伸缩

A(Availability:可用性):分布式环境下 任意节点 的数据是否可用

三个分布式环境下最重要的三个特性无法同时完美的满足,必然要弱化其中至少一项,同时满足以上三个要求的分布式程序是无法实现的。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值