消息中间件-介绍

消息中间件-介绍

  在分布式的环境下,咱们除了使用httprest、rpc、消息中间件也是一个去使两个系统之间进行通讯的方式,当咱们想提升程序响应速度的时候,一个就是 【使用多线程进行并行处理】,另外就是使用【异步的方法】,那就可使用(消息中间件)MQsql

【消息中间件】: 利用高效可靠的消息传递机制,进行多平台之间直接的交流的一种媒介(就是一个第三方的工具,可让一个或者多个系统收到某个系统发出的消息。)主要作【数据的接受和传递数据库

应用场景】:跨系统之间的信息传递、高并发的流量削峰(当请求峰值来临,把数据放在中间件去慢慢处理)、以及数据的异步处理(相似注册,发短信这些东西就能够异步进行)tomcat

经常使用的消息中间件】:服务器

  Active(太老了,支持不少功能,因此性能不怎么样,一些老一点的项目会使用)、Rabbit、kafka、rokcet多线程

【核心组成】:并发

  • 【协议】:设置一种系统直接的语言规则,简而言之就是你们都要遵照相同的规则,不然彼此不知道对方发过来的是什么意思。
  • 【持久化机制】:在中间件内部保留数据的手段
  • 【消息分发机制】:一种消费消费模式,好比主动推送数据、或者别人来拉取数据。
  • 【高可用】:中间件本身不能宕机(有不少方式:分片复制,镜像、主从 so on)
  • 【高可靠】:保障消息被消费。

协议:

协议是计算机之间通信时共同遵照的一组约定,对数据格式和计算机交换数据的一种规范。http、tcp/ip、 upd这些都是数据一种通信协议异步

  这里用【http协议】举个例子说明协议的三个要素:tcp

  • 语法】:传输信息的格式或者结构(请求报文和响应报文)
  • 语义】 :他则定义了数据格式,编码、信号、数据出现的顺序等(客户端主动发起的操做成为请求)
  • 时序】::通讯双方通讯的次序,他里面定义了速度匹配和排序等(一个请求,对应一个响应)

经常使用的消息中间件协议:OpenWire、AMQP、MQTT(物联网)、Kafka、OpenMessage。他们等因而一系列规范,而后各类中间件对他们进行实现,就想servelet的实现有tomcat、jetty等分布式

【HTTP】不适合做为中间件的协议缘由是:是由于http过重了,并且不高效(须要一次请求、一次响应)。高并发

AMQP】:【rabbit】和【active】使用他,他的出现最先是解决金融行业的可靠性的,因此【可靠性】是它的最大优点。 

MQTT】:主要用在物联网上,【速度很是快】(用c编写的)计算能力有限

【OpenMessage】:近两年由阿里、滴滴等共同发起的标准,【rocket】使用他,【结果简单、解析快、事务性】

Kafka】:是一个基于TCP的二进制协议,因此他的能传输大数量,【简单、解析快、传输数据量大】【没有事务】

持久化:

简而言之,就是把消息数据存储起来,不能让数据存储在内存中,随着服务器重启而没有数据了。持久化的媒介: 磁盘上、数据库。除了active其余的mq都不支持数据库持久化

消息分发:

当消息中间件获取到数据后,是它主动发给其余系统,仍是其余系统从它这里获取。还有是否须要消息从新发送(好比支付场景)。等等一系列消息分发机制。

高可用:

指的是当前的中间件自己,必须在使用的时间中,处于可使用的状态,这个通常使用服务器集群进行解决

master-slave->主从共享数据的部署方式】:相似于Mysql、Redis、Monogdb,每一个从属中都有数据,可是只能经过master节点获取。他的高可用体现到各个节点存储的数据是同样的,宕机后能够从别的地方获取相同的数据

Bloker-cluster->主从同步部署的方法】:分为多个副本,好比一个数据把他分开存储

master-slave& Bloker-cluster】:前面两种方式的结合体,分为多个主节点,每一个节点都有副本节点。【使用最多

高可靠:

指的是系统能够无障碍的持续运行,而且报错的概率比较低,以及保障消息被消费。

消息传输可靠】:经过协议保证系统直接的数据解析的正确性

消息存储可靠】:经过持久化保障消息存储的可靠性。