从接触kafka到现在已经两个多月了,期间利用kafka也实现了一部分功能,对kafka也有了一部分自己的见解,下面简要介绍一下这段时间使用kafka的心得。
很多话题都是围绕着how,what,why来完成的,这篇帖子也不例外,ok,let's we go!
一 ,什么是kafka
Kafka是由LinkedIn开发的一个分布式基于发布/订阅的消息系统;它可以处理消费者规模的网站中的所有动作流数据。其中在官网上kafka号称“非常普通的硬件Kafka也可以支持每秒数百万数据”,是不是很牛,虽然我没尝试过,不过既然这么说,肯定是在一定基础上考究过的;下面我们看一下kafka的基本概念;
1)Broker
Kafka集群包含一个或多个服务器,这种服务器被称为broker。broker端不维护数据的消费状态,提升了性能。直接使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收。
2)Producer
负责发布消息到Kafka broke,也就是消息的生产者
3)Consumer
消息消费者,向Kafka broker读取消息的客户端,consumer从broker拉取(pull)数据并进行处理。可以通过commit来决定是自动提交还是手动提交消费的记录
4)Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic,所有的消息是以topic作为载体存在的;
5)Partition
Parition是物理上的概念,每个Topic包含一个或多个Partition.
6)Consumer Group