zoukankan      html  css  js  c++  java
  • 消息中间件简介

    中间件

    中间件自然是放在服务|模块之间的,用于处理服务之间的数据交互。

    常见的中间件:消息中间件(比如Kafka、RabbitMQ)、缓存中间件(比如Redis)。

    消息生产者、消息消费者

    比如服务A发消息给服务B,那服务A就是消息生产者(产生消息、发送消息),服务B就是消息消费者(接收消息)。

    消息的2种交互方式

    • peer to peer:即p2p,只有一个接收者。
    • 发布/订阅:可有多个接收者。

    消息中间件的作用

    • 模块之间的解耦:

    各系统|模块|服务通过消息中间件这个统一的接口来交换数据,无需耦合在一起

    • 模块的扩展性

    消息中间件是数据接口,各模块没有耦合在一起、可随意扩展。

    • 消息冗余

    计算机中的冗余有2个含义:一、多余的部分,二、数据备份、增强安全性。

    有的消息中间件可以持久化消息,避免消息处理前丢失的风险。

    • 并发压力

    使用消息队列来处理消息,并发时可堆积、处理大量消息,减少各模块压力。

    • 容错

    某模块故障时,消息中间件中的消息不会丢失,待该模块恢复后,继续处理即可。

    • 异步通信

    如果不需要立即处理消息,可以将消息暂存在消息中间件中,合适的时候再处理。

    常见的消息中间件

    ActiveMQ、KafKa、RocketMQ、RabbitMQ,最常用的是Kafka、RabbitMQ。

    MQ,即Message Queue 消息队列。


     

    ActiveMQ

    Apache开源的消息中间件,老牌消息中间件。

    性能一般,一般场景够用了,但高并发时往往应付不了,在中小企业中使用广泛。

    有2种集群模式:

    一种是主从模式,另一种是分布式的主从模式。

    slave  从属、奴隶


    Kafka

    最初由Linkedin公司开源,后来由Apache维护。

    由Scala和Java编写,消息处理方式是 发布|订阅 。

    kafka的特点:

    • 高吞吐量、高性能:单台Kafka服务器的消息读写速率可达 100万条/秒,但消息直接存储在内存中,很吃内存
    • 消息持久化:所有消息都会被持久化到磁盘(副本),单条消息发生故障时可从磁盘恢复。虽然支持持久化会拉低性能,但Kafka的性能依然剽悍。
    • 不支持事务,如果一个事务(多条消息)失败,并不会回滚,所以安全性低(数据一致性差)。

    Kafka适合收集、处理大量数据、但对数据一致性要求不高的场景,在大数据开发中用得多。

    常用场景:

    • 收集各服务的日志
    • 记录用户的访问踪迹,比如用户访问的网页、点击的条目、搜索的关键词,发送给订阅者来分析、挖掘用户爱好、购买力
    • 记录分布式系统各模块实时产生的数据,监控系统运行状况,方便报警、统计报告

    集群模式:

    replicate  复制


    RocketMQ

    最初由阿里开源,后来由Apache维护,纯java编写。

    吸取了Kafka的思路,并修正了Kafka的不足(不支持事务、可靠性不高)。

    高吞吐量、高可用、可靠性高、支持事务,适合大规模分布式系统。

    但技术要求高(维护成本高)、要收费。

    集群模式:


    RabbitMQ

    使用Erlang语言编写,基于AMQP协议。

    追求安全、可靠性、稳定性、数据一致性,常在企业系统中使用。

    性能、吞吐量略差(性能、吞吐量比Kafka、RocketMQ差,但比ActiveMQ高很多)。

    AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。

    基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。

     

  • 相关阅读:
    usb_submit_urb
    xilinx uboot网卡驱动分析
    kernel: swapper: page allocation failure. order:1, mode:0x20
    Linux格式化硬盘 常用命令小记
    spring3:对JDBC的支持 之 JDBC模板类
    spring3: AOP 之代理机制
    spring3: AOP 之切面实例化模型 ——跟我学spring3
    spring3: AOP 之 通知顺序
    spring3: AOP 之 通知参数
    spring3: 切面及通知实例 Aspectj的aop
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12325632.html
Copyright © 2011-2022 走看看