- .Kafka的定义?
Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据的实时处理领域?
Kafka消息队列应用场景
- 使用消息队列的好处?
1.解耦
允许你独立扩展或者修改俩边的处理过程,只要确保他们遵循同样的接口约束。
2.可恢复性
系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。
3.缓冲–>削峰平谷
有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度是不一样的。
4.灵活性&峰值的处理能力
在访问量剧增的情况下,应用仍然需要继续发挥作用,这样的流量不常见,如果以能处理这类峰值访问为标准投入资源随时待命毫无疑问是巨大的浪费。是用消息队列能够使关键组件顶住压力,不会使程序因为突发的超负荷的请求而完全崩溃。
5.异步通信
很多时候,用户不需要立即处理消息,消息队列提供了异步处理机制。允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候在去处理它。 - 消息队列有几种模式?
两种模式:
1.点对点模式:
点对点模式就是一对一,消费者主动拉取数据,消息收到后消息清除。
消息生产者讲生产的数据放入到queue中,然后消息消费者从queue中拉取出数据,消息被消费之后,queue中不再存储,所以消息消费者不可能消费到已经被消费的消息。queue存在多个消费者,但是面对一个消息而言,只能有一个消费者。(发送并忘记)
2.发布/订阅模式
一对多,消费者,消费数据之后不会清楚消息。
消息生产者(发布)将消息发送到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费。
因为Kafka是基于发布/订阅模式,但是结合了点对点模式消费者自己拉取的模式获取消息。这样的好处是:1.支持多消费,2.消费者端决定消费速度,弊端:需要维护一个服务。长轮询监控消息队列是否有消息,浪费资源。 - 什么是Kafka?
Kafka是一个分布式的数据流式传输平台。
在流失计算中,Kafka一般用来缓存数据,spark通过消费Kafka数据进行计算。
1)Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。
2)Kafka最初是由LinkedIn公司开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
3)Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。
4.无论是Kafka集群,还是consumer都依赖于zookeeper集群保存一些meta信息,用来保证系统可用性。 - Kafka的特点
作为一个数据流式传输平台,Kafka有什么特点?
1.类似于消息队列和商业的消息系统,Kafka提供对流失数据的发布和订阅。
2.Kafka提供一种持久的容错方式存储流式数据。
3.Kafka具有良好的性能,可以及时地处理流式数据。
基于以上三种特点,Kafka在以下亮种应用之间流行:
1.Kafka主要集群方式运行在一个或者多个可跨多个数据中心的服务器上
2.Kafka集群将数据按照类别记录存储,这种类别在Kafka中为主题。
3.每条记录由一个键,一个值和一个时间戳组成。
下一篇文章会深入讲Kafka框架。