消息驱动之背景概述(十九)

背景历史

在EJB2.0的时候,J2EE就引入了java message bean组件,即java消息组件,来处理企业组件之间的通讯。Spring Cloud里面提供的消息驱动就来源于这里,并且使用这些消息驱动模块来完成微服务之间的通讯。

消息中间件

消息驱动之背景概述(十九)_第1张图片

当我们的消息生产者产生了消息之后,就把消息推送到RabbitMQ或Kafka这样的消息中间件上,消息消费者实现了对消息中间件的监听,当侦听到了消息的时候,就去获取对应的消息,完成整个消息的推送接收流程。

如果是简单的单条消息传递,那直接从消息生产者到消息消费者就OK了,但是消息一旦多起来,并且生产者和消费者都错综复杂,就更不利于管理了。使用消息中间件就可以集中化管理这些复杂的消息。消息生产者可以看作是现实生活中的寄信人,RabbitMQ或Kafka这样的消息中间件相当于是一个邮局,最后的收信人类似消息消费者。我们只需要把自己需要寄送的信件放到邮筒里,就可以完成信件的寄送,收信人也只需要从邮箱取信件,至于中间邮局是怎么完成信件的接收、运输和分发,我们都不关心。

Spring Cloud就完成了上述的工作,它使用Stream来帮助我们完成各个服务之间的消息推送接收,同时集成了RabbitMQ和Kafka这样的消息中间件API,可以十分便捷地完成消息推送接收开发。

其实这也是Spring Cloud整个核心的体现,简化开发流程,能让我们将大部分的精力集中到业务的开发上。

RabbitMQ简介

1.RabbitMQ的特点

RabbitMQ是最广泛部署的开放源码消息代理。

RabbitMQ在小型创业公司和大型企业中有超过3.5万的生产部署。

RabbitMQ是轻量级的,并且可以很容易地部署在网站和云中。

RabbitMQ支持多个消息传递协议。

RabbitMQ可以部署在分布式和级联配置中,以满足高规模、高可用性需求。

RabbitMQ在许多操作系统和云环境中运行,并为大多数流行语言提供了广泛的开发工具。

2.AMQP协议

AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有 RabbitMQ等。

下图就是一个AMQP协议的模型:

消息驱动之背景概述(十九)_第2张图片

消息生产者与RabbitMQ服务器建立了一个channel通道,通过这个channel通道向交换器传输消息,交换器接收了消息之后决定把消息交给哪一个消息队列,同样,消息消费者和RabbitMQ之间也建立了一个channel通道,消息消费者通过这个通道来监听消息队列的消息。

Kafka简介

Kafka是Apache的一个分布式流媒体平台。

首先看看下面列出的流媒体特性:

 

  • 发布和订阅记录流,类似于消息队列或企业消息传递系统。
  • 以一种容错的持久方式存储记录流。
  • 在发生的过程中处理记录流

Kafka通常用于两大类应用:

 

  • 构建实时的流数据管道,可靠地在系统或应用程序之间获取数据
  • 构建能够转换或响应数据流的实时流媒体应用程序

Kafka的几个特性:

 

  • Kafka是在一个或多个服务器上运行的,可以跨越多个数据中心。
  • Kafka的集群存储了被称为Topic类别的记录流。
  • 每条记录由一个键、一个值和一个时间戳组成。

Kafka的四个核心API:

 

  • 生产者API允许应用程序将记录流发布到一个或多个Kafka的Topic。
  • 使用者API允许应用程序订阅一个或多个Topic,并处理生成给它们的记录流。
  • Streams API允许应用程序充当流处理器,从一个或多个Topic中获取输入流,并生成一个输出流到一个或多个输出Topic,有效地将输入流转换为输出流。
  • 连接器API允许构建和运行可重用的生产者或消费者,将Kafka的Topic与现有的应用程序连接起

最后,大家有什么不懂的或者其他需要交流的内容,也可以进入我的QQ讨论群一起讨论:654331206

Spring Cloud系列:

Spring Cloud介绍与环境搭建(一)

Spring Boot的简单使用(二)

Spring Cloud服务管理框架Eureka简单示例(三)

Spring Cloud服务管理框架Eureka项目集群(四)

Spring Cloud之Eureka客户端健康检测(五)

Netflix之第一个Ribbon程序(六)

Ribbon负载均衡器详细介绍(七)

Spring Cloud中使用Ribbon(八)

具有负载均衡功能的RestTemplate底层原理(九)

OpenFeign之第一个Feign程序(十)

OpenFeign之feign使用简介(十一)

Spring Cloud中使用Feign(十二)

Netflix之第一个Hystrix程序(十三)

Netflix之Hystrix详细分析(十四)

Spring Cloud中使用Hystrix(十五)

Netflix之第一个Zuul程序(十六)

Spring Cloud集群中使用Zuul(十七)

Netflix之Zuul的进阶应用(十八)

消息驱动之背景概述(十九)

消息中间件之RabbitMQ入门讲解(二十)

消息中间件之Kafka入门讲解(二十一)

Spring Cloud整合RabbitMQ或Kafka消息驱动(二十二)

你可能感兴趣的:(Spring,Cloud,Spring,Cloud,消息中间件)