1.什么是kafka?
注:高吞吐量的分布式发布订阅消息系统。
能力:流处理。发布订阅消息。
1.1没有架构时候:用户调用系统注册板块,然后板块写入db,然后成功了,再去调用短信接口,在返回。
1.2 如果短息服务出现了故障。那么所有调用注册都会发生异常。
异步发送:加上消息队列,用户注册将数据写入db,同时注册系统,会将成功信息发到消息队列,发送短信服务里的消费者会不停去取队列的消息,最后直接返回给用户。减少了系统资源消耗,较少调用时间。//将消息队列应用在异步通信。
做到了解偶。和可用性。
注:异步通信,削峰填谷
从数据基站,日志产生的现场。----》
对基站的数据进行实时的计算,经过消息队列缓冲(削峰)----〉
流计算平缓的从队列中得到数据----》
流计算的结果放入队列平稳的存入数据库。填谷
主流的流计算框架:
storm/spark strem/flink---》运行在服务端的流处理程序
Kafka Streaming-----〉运行在应用端的流处理程序,方便部署。
2.消息队列(Message Queue)
至多一次:一条消息被一个消费者消费,消费完就被队列自动删除。
没有限制:队列一条数据可以同时被多个用户同时消费,一个用户可以实现对消息的重复消费。kafka就是这样的。
3.kafka基础架构
图例:
实际架构
1.hash的key会均匀的覆盖分区(partition),相同的值保存在相同的分区。
2.启动好的kafka集群里每一个实例叫一个broker。
3.由图可以看到partition0在broker-0里。作为这个partition0分区的leander(主,只有主才能负责读写),而其他(broker-1/broker=2)的partition0作为follower(从)。
4 .如下图2,如果broker-0突然当机了,partition0的主就失效了,那么会重新选举如图(broker-2)上的partition0会成为分区的leande,那么broker-2,上既有partition0的leande,也有partition1的leande。
总结
生产者:发送消息
消费者:订阅,和读取消息。
1.什么是Record?
他是kafka聊天队列里的一则消息。
2.什么是Topic?
他是对kafka消息队列中Record的一种分类机制。
3.什么是分区,什么是副本因子?
分区:指的是我们会吧一个Topic下的数据分散的存储在几个独立的文件当中。
副本因子:指的是当前分区文件会在集群当中有多少个备份数据。
4.在kafka集群中服务节点有两类,
一类叫broker,负责响应,或者负责管理我们对应分区的数据。leande负责数据的读写。follower负责数据的备份。结合zookeeper健康监测等用法。