陪你一起学kafka(一)——简介篇

消息中间件的共性优势

  • 异步处理

场景说明:⽤户注册后,需要发注册邮件和注册短信。

  • 解耦

场景说明:⽤户下单后,订单系统需要通知库存系统

  • 流量削峰

应⽤场景:秒杀活动,⼀般会因为流量过⼤,导致流量暴增,应⽤挂掉。为解决这个问题,⼀般需要在应⽤前端加⼊消息队列。

  • 消息队列的其他用处

冗余

消息队列把数据进⾏持久化直到它们已经被完全处理,通过这⼀⽅式规避了数据丢失⻛险。许多消 息队列所采⽤的"插⼊-获取-删除"范式中,在把⼀个消息从队列中删除之前,需要你的处理系统明确的 指出该消息已经被处理完毕,从⽽确保你的数据被安全的保存直到你使⽤完毕。

扩展性

因为消息队列解耦了你的处理过程,所以增⼤消息⼊队和处理的频率是很容易的,只要另外增加处 理过程即可。

灵活性 & 峰值处理能⼒

在访问量剧增的情况下,应⽤仍然需要继续发挥作⽤,但是这样的突发流量并不常⻅。如果为以能 处理这类峰值访问为标准来投⼊资源随时待命⽆疑是巨⼤的浪费。使⽤消息队列能够使关键组件顶住突 发的访问压⼒,⽽不会因为突发的超负荷的请求⽽完全崩溃。

可恢复性

系统的⼀部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使⼀个 处理消息的进程挂掉,加⼊队列中的消息仍然可以在系统恢复后被处理。

顺序保证

在⼤多使⽤场景下,数据处理的顺序都很重要。⼤部分消息队列本来就是排序的,并且能保证数据 会按照特定的顺序来处理。(Kafka 保证⼀个 Partition 内的消息的有序性)

缓冲

有助于控制和优化数据流经过系统的速度,解决⽣产消息和消费消息的处理速度不⼀致的情况。

kafka简介

Apache Kafka是⼀个快速、可扩展的、⾼吞吐的、可容错的分布式“发布-订阅”消息系统,使⽤ Scala与Java语⾔编写,能够将消息从⼀个端点传递到另⼀个端点,较之传统的消息中间件(例如 ActiveMQ、RabbitMQ),Kafka具有⾼吞吐量、内置分区、⽀持消息副本和⾼容错的特性,⾮常适合 ⼤规模消息处理应⽤程序,主要应⽤于⼤数据实时处理领域。

Kafka官⽹: kafka.apache.org/

Kafka特性

  • ⾼吞吐、低延迟

kakfa 最⼤的特点就是收发消息⾮常快,kafka 每秒可以处理⼏⼗万条消息,它的最低延迟只有⼏ 毫秒。

  • ⾼伸缩性

每个主题(topic) 包含多个分区(partition),主题中的分区可以分布在不同的主机(broker)中。

  • 持久性、可靠性

Kafka 能够允许数据的持久化存储,消息被持久化到磁盘,并⽀持数据备份防⽌数据丢失。

  • 容错性

允许集群中的节点失败,某个节点宕机,Kafka 集群能够正常⼯作。

  • ⾼并发

⽀持数千个客户端同时读写

应⽤场景

  • 消息系统Messaging
  • Web站点活动追踪Website Activity Tracking
  • 数据监控Metrics
  • ⽇志聚合Log Aggregation
  • 流处理Stream Processiong
  • 事件源Event Sourcing
  • 提交⽇志Commit Log

Guess you like

Origin juejin.im/post/7075531795885719565