• 消息中间件简介


    Android消息推送怎么实现? - petercao - 博客园
    http://www.cnblogs.com/bluestorm/p/5752626.html

    MQ消息中间件技术 - 一名菜鸟架构师的心路历程 - 博客频道 - CSDN.NET
    http://blog.csdn.net/apanious/article/details/51014396

    我对消息中间件的理解 - - 博客频道 - CSDN.NET
    http://blog.csdn.net/luckyzhoustar/article/details/50411500

    专业术语定义: 

    消息:两台计算机之间传送的数据单位,例如字符串、文本等

     消息队列:消息的容器,用于在消息传递的过程中保存消息的容器,充当消息源和目标之间的中间桥梁。队列的只要目的就在于提供路由保证消息的传递。

     消息队列网络:是指能够相互之间发送消息的一组计算机。网络中不同的计算机在消息处理过程中扮演者不同的角色,有的是发送者,有的是接受者。

    对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)、Broker(中转角色),有这么几个主要的角色,那么消息中间件能为我们带来那些功能呢?

     1.Message Priority

     Producer把消息发送给Broker来存储,那么我们就可以再消息队列中对我们的消息来进行排序,实现不同的优先级。从而满足我们复杂的业务需求。

     2.Message Order

     消息排序,有的消息的处理是需要按照一定的顺序进行处理的,比如用户的创建订单、订单付款、订单完成。那么对于消费者也需要按照这个流程来消费,否则就没有意义了。

     3.Message Filter

     在消息对立中,也可以对我们的消息进行过滤,比如按照消息类型等条件来过滤

     4.Message Persistence

     消息的持久化,一般有以下几种方式

     (1)持久化到数据库,比如MySQL

     (2)持久哈到KV存储,比如Redis

     (3)文件形式持久化

     消息的持久化,防止了系统挂掉后,仍然能够从之前备份中恢复出来。

     5.Broker的Buffer满了怎么办?

     我们知道Broker是用来存储需要处理的消息,如果消息过多,导致Buffer满了怎么办?

     这时候就会采取一定的策略来丢弃已有的消息。

     6.事务的支持

     正如上面所谈到的订单的操作,因此消息中间件中也会提供对分布式事务的支持。

     7.定时消息

     在实际应用中,有时也会需要定时消费的功能,因此中间件中,也会对消息进行排序,然后实现定时发送或者消费消息的业务需求。

     8.消息重试

     考虑一下这个问题,如果消息消费失败后,怎么办,是等待处理这个消息呢?还是让消费者在此消费一次呢?通常情况下,采取后者的形式,因为大多数情况下,消费失败的原因在于该消息本身的原因,如果在此消费这个消息的话,还是会出现失败的情况,因此通常采取在此发送消息在此消费消息的方式。

     9.回溯消费

     什么是回溯消费呢?对于已经消费成功的消息,是不是在Broker中就丢弃该消息呢?显而易见是不可能的,因此需要中间件对该功能支持,支持已经消费的信息进行时间段内的存储,等待某一刻内该消息会被重新消费的可能。

    MQ适用场景介绍

    MQ消息队列是应运松偶合的概念而产生的,主要以队列和发布订阅为消息传输机制,以异步的方式将消息可靠的传输到消费端的一种基础产品。

    它被广泛的应用与跨平台、跨系统的分布式系统之间,为它们提供高效可靠的异步传输机制。

    • 消息通道(Message Channel)

           使用MQ将彼此协作的客户端和服务端连接起来,使他们可以交换消息。

    如客户端与服务端需要安全可靠的交互,可以将一个MQ的队列作为安全通道,是客户端与服务端能够安全高效的进行异步通讯。

    • 消息总线(Message Bus)

          对于由许多独立开发的服务组成的分布式系统,倘若要将它们组成一个完整的系统,这些服务必须能够可靠地交互,同时,为了系统的健壮性,

    每个服务之间又不能产生过分紧密的依赖关系,这样就可以通过消息总线将不同的服务连接起来,允许它们异步的传递数据。

    • 消息路由(Message Router)

           通过消息路由,可以将发送到MQ指定队列的消息根据规则路由到不同的队列。

    此外,JMS规范还支持通过selector条件,对消息进行过滤,可以用多个消费者消费同一个队列的消息,每个消费者只消费自己感兴趣的消息。

    • 发布/订阅(Publicsher/Subscriber)

          发布/订阅模式用于一对多的通讯,当消息发布者向一个主题(Topic)发送一条消息后,该主题的所有订阅者都会收到这条消息。

  • 相关阅读:
    maven
    ELK
    gitlab 升级
    平安工作流程
    平安云应用场景
    nginx基于uwsgi部署Django (单机搭建)
    ansible
    nginx理论
    GIT
    docker(三)
  • 原文地址:https://www.cnblogs.com/bluestorm/p/6633492.html
Copyright © 2020-2023  润新知