Kafka基本概念(分布式的消息系统)(1)消息队列:Kafka就是消息队列,又称分布式消息系统,它是一种对等的分布式架构。分为两种模式:( 1)一对多:消息队列中的数据可以被多次使用(2)一对一:消息队列中的数据,一旦被使用,就不能再次被使用了Kafka就是一对多的模式 。Kafka中的数据是具有周期性的,默认为一个星期,之后就会消除。消费者和生产者生产者:就是向kafka中存入数据的一方,也就 是提供数据的一方消费者:就是从kafka中取数据的一方,也就是对数据处理的一方Kafaka存在的必要性对于大量的数据若是由生成 者直接提供给消费者,那么一旦消费者出现了宕机,则会产生数据丢失,那么我们构建kafka,将生产者的数据统一的存储起来,消费者处理数 据时,只需要从中抓取数据即可,处理多少就抓取多少。这样不会使得数据丢失。同时解除生产者和消费者之间的耦合关系。(没有kafka)( 有kafka)kafka的基本架构Kafka相当于关系型数据库,而其中的topic相当于数据表生产者可以控制将数据发到卡夫卡中的那 个分区,同时消费者也能选择从那个分区中取数据Kafka一种分布式集群与Hadoop不同的是,它并不是主从架构。而是各个节点是平等的 ,类似于ES那样的主从架构。图中每个Broker就是kafka对应的一个节点,Broker:由多个Broker才构成了kafka集 群。是缓存代理。Kafka组成:kafka是内部由多个主题topic组成,一个topic由多个节点构成。每个topic中又划分为多 个分区partition。每个分区完整的分部在每个节点上,也就是说每个集群节点对应的是一个完整的分区。同时对于分区也分为主分区和从 分区,主分区(leaderpartition)是用来信息交互的,而从分区(flowerpartition)是跟随主分区的。从 结构上来看kafka类似于hive的结构,每个topic都是一个文件目录,而partition则是topic的子目录。总结基本概 念:producer:生产者consumer:消费者Topic:就是kafka处理消息的分类,类似于关系型数据库里面的一张表pa rtition:分区。就是topic物理上的分区Message:消息,是通信的基本单位,这些消息说白了就是数据Broker:由多 个Broker才构成了kafka集群。是缓存代理kafka的存储Kafka是基于磁盘进行存储的,为什么他不设计成基于内存呢?1 数据线性写就可以了,在线性写是可以保证速度的2如果数据量大的话,因为内存资源很珍贵,所以使用磁盘3数据存在内存不安全,因为k afka停了以后,数据就会丢失为什么不用hdfs去替代kafka这是因为kafka是线性读写,这样速度快Kafka中的数据安全吗? Kafka的集群不是主从式的架构,而是对等式的架构(类似于ES)数据有分区:一个完整的分区的数据肯定是存在同一台服务器上面的,如果 只有一个分区,也就是说一个主题只有一个目录,而这个目录只能在我们的某个节点上。如果数据量很大,服务器存不下。但如果有多个分区,如 主题A有10个分区,这个时候10个分区存在各个节点上。数据就能存的下。(就是说,一个分区是存在一个节点上,而一个主题不是在一个节点 上)Kafka的好处1可以进行解耦合(生产者和消费者之间的关系度不大)2数据的安全性3增加了系统的可扩展性(zookeeper起 到了关键的作用)4峰值的处理能力5可恢复性:生产者和消费者,若有一方出现问题,也不会对数据有影响kafka的集群架构其中zooke eper可以实现消费者动态扩展,在zookeeper的作用下,kafka中的topic之间可以自动实现负载均衡,完成topic的主 从选举。注:kafka本身就是一个对等式的主从架构,而且其内部的topic也是主从架构。在整个集群架构中,生产者直接访问的是ka fka,并不方位zookeeper,也就是说生产者于zookeeper无关。而消费者访问zookeeper。同时注意zookeeper与kafka中的元数据信息是一样的。kafka的搭建详情见搭建 |
|