1、持久化(Persistence)
Kafka是高度依赖文件系统和缓存的,Kafka对磁盘时append操作,磁盘检索的开支是较少的,同时为了减少磁盘写入的次数,broker会将消息暂时缓存起来,当消息的数量(offset)达到一定阀值时(可配置 offset可以设置为自动提交或者手动提交),再刷新到磁盘中,这样减少了磁盘的开销。
2、生产者(producer)
producer用于往broker中发送/生产消息,每一个broker中可以有多个topic,每个topic下面又会有多个partition,在负载均衡的情况,如果均衡的将消息发送到指定的partition中。
异步处理:将多条消息存储在buffer中,之后,批量的提交到broker中,从而提高了网络IO。采用异步发送机制时,如果producer异常或者失效,消息将会丢失。
3、消费者(Consumer)
Consumer通过链接broker,采用 pull 方式来拉取broker中的数据,consumer根据自己的消费能力,去消费信息。
为什么采用 pull 的方式而不是采用 push 呢,因为pull模式中:
broker不需要感知有多少个consumer;
如果采用push模式一旦消息量级超过consumer的承受范围,会压垮consumer;
consumer每消费完一条信息之后,kafka会自动的提交offset;
也可以设置为手动提交,如当消费100000条消息之后,offset存储在一个list中,达到一定的消息量之后,提交这个offset list。