Kafka 分布式消息系统

原本打算给这篇文章起名叫“搭建Kafka消息队列集群”,然而,和RabbitMQ不一样,Kafka并无实现消息队列的协议(例如AMQP,Advanced Message Queuing Protocol,提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计),因此尽管在使用方式上像极了队列,但并不算是严格意义上的消息队列。最后,我仍是折中一下,将标题改成了“Kafka 分布式消息系统”。浏览器

1. Kafka介绍

Kafka最先是由LinkedIn使用Java和Scala语言开发的,并在2011年开源,2012年成为Apache软件基金会的顶级项目。2014年,Kafka的几个建立人,成立了一家新的公司,叫作Confluent,专门从事Kafka相关的工做。安全

Kafka项目的目标是提供一个 统一的、高吞吐、低延迟的,用来处理实时数据的系统平台。按照官方的定义,Kafka有下面三个主要做用:分布式

  1. 发布&订阅:和其余消息系统同样,发布订阅流式数据。
  2. 处理:编写流处理应用程序,对实时事件进行响应。
  3. 存储:在一个分布式、容错的集群中安全地存储流式数据。

1.1 消息系统

上面的三个做用,第一条就讲到,kafka是一个消息系统。那么什么是消息系统?它解决了什么样的问题? 咱们以时下流行的微服务为例,假设Web端有Web一、Web二、Web3三个面向终端(weixin公众号、手机App、浏览器)的Web服务(Http协议),内部有App一、App二、App3三个应用服务(远程过程调用,例如WCF、gRPC等),若是没有消息系统,采用直连的方式,它们之间的通讯方式多是这样的:微服务

相关文章
相关标签/搜索