kafka是一种分布式的、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统,常用于日志收集系统和消息系统。
直白一点,如图所示:
1.第一个框是我们通过filebeat来收集nginx的日志,filebeat是一个生产者,他将日志吐到kafka
2.中间的框是消息中间集群,接收各种消息,包括filebeat发送过来的日志
3.然后就可以写程序,消费kafka日志,进行清洗结算,将清洗后的数据写入到我们的最后一个框(也就是数据库)
kafka实际上就是一种消息系统。
2.消息系统:1.消息系统简介:
消息系统就是将数据从一个应用传递到另外一个应用,我们只需要关注数据,不需要关注数据是怎么传输的
2.消息系统的两种模式:
点对点传递模式和发布-订阅模式
大部分的消息系统用的是发布-订阅模式
kafka就是一种发布-订阅模式
两种消息系统模式的区别:
首先是点对点:在点对点消息系统中,消息持久化到一个队列中。此时,将有一个或多个消费者消费队列中的数据。但是一条消息只能被消费一次。当一个消费者消费了队列中的某条数据之后,该条数据则从消息队列中删除。该模式即使有多个消费者同时消费数据,也能保证数据处理的顺序。直白说就是生产者消费者 一一对应, 消费者消费完,消息中间件就没有了
示意图如下所示:
然后是发布-订阅:在发布-订阅消息系统中,消息被持久化到一个topic中。与点对点消息系统不同的是,消费者可以订阅一个或多个topic,消费者可以消费该topic中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。在发布-订阅消息系统中,消息的生产者称为发布者,消费者称为订阅者。
示意图如图所示:
3.kafka中的专业术语:broker -- 服务器节点(kafka集群包含一个或多个服务器,服务器节点称为broker)
topic -- 消息的类别
partition -- 分区 --提高吞吐量 -- 提高效率 -- 一般来说有几个broker就设置几个partition
-- 支持并发的读写
-- 有多个partition的话,消息的顺序总体来说就跟原来不一样了,但在单独的partition里面还是顺序的
producer --即数据的发布者
consumer -- 消费者,从broker中读取数据,消费者可以消费多个topic中的数据
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)