zoukankan      html  css  js  c++  java
  • 消息中间件对比

    一、JMS
    1:先了解什么是JMS:JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,翻译为Java消息服务。

    2:JMS消息通常有两种类型:
    A: 点对点(Point-to-Point)。在点对点的消息系统中,消息分发给一个单独的使用者。点对点消息往往与队列(javax.jms.Queue)相关联。
    B:发布/订阅(Publish/Subscribe)。发布/订阅消息系统支持一个事件驱动模型,消息生产者和消费者都参与消息的传递。生产者发布事件,而使用者订阅感兴趣的事件,并使用事件。该类型消息一般与特定的主题(javax.jms.Topic)关联。

    二、开源消息中间件(ActiveMQ,Kafka)
    1、ActiveMQ
    A:完全支持JMS规范,号称最受欢迎,最为强大的消息中间件,尽管某些方面实际并不强大。。。
    B:支持多种语言客户端:Java, C, C++, C#, Ruby, Perl, Python, PHP
    C:支持消息集群,虚拟目的地,通配符,组合目的地等高级特性。
    D:支持Spring
    E:支持协议可插拔: in-VM, TCP, SSL, NIO, UDP, multicast, JGroups and JXTA transports
    F:支持使用JDBC进行快速持久化(使用mysql实际也不快,支持约500次写入/每秒)
    G:支持CXF,Axis,Ajax
    H:消费者消费消息通过服务端推送方式进行,offeset由服务端维持
    2、Kafka
    A:它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。
    B:支持多种语言客户端:Java,Python,C,C++,.net,Ruby,Perl,PHP,Clojure,Go,Node.js等等
    C:支持服务端和消费者集群;offset由消费者维护,可以通过控制offset控制对以前消息的消费;消息存储在磁盘,顺序读写,可以设置过期时间
    D:支持分区,可以设置复制因子进行容灾,kafka自身主从复制机制可确保高可用
    E:用户可自行实现分区路由规则,确保同类消息只落在某一个分区。
    F:通过消费者集群设置可实现队列模式和发布-订阅模式,这种设计也便于灵活扩展和容灾
    G:传统消息中间件在多消费者模型中无法很好的保证消费的顺序性,但kafka可以通过分区保证
    H:kafka具有高吞吐,高可用,低延时的特性,7200r/s的磁盘可写100M/s
    I:适用场景:页面浏览实时数据采集,实时监控,日志收集等
    J:Offset可存储在zk或者kafka,如果网络异常有出现重复消费的可能性,需要开发者自行保证幂等性
    K:kafka可以通过ACK确保不丢消息,但可能会带来消息的重复发送问题
    L:kafka通过批量消息处理,零拷贝,端到端批量压缩等技术来提升效率
    M:有较为健全的监控机制,可通过KafkaOffsetMonitor或者KafkaWebConsole监控。也可以通过JMX自定义进行自动监控。

  • 相关阅读:
    vue中handsontable 使用
    vue项目在APP禁止页面缩放
    SuperAgent使用文档
    echart 图表自定义样式
    vue router-link子级返回父级页面
    浏览器的多线程
    gzip压缩
    清除浮动的方法
    vue-router的hash和history模式的区别
    Docker镜像+nginx 部署 vue 项目
  • 原文地址:https://www.cnblogs.com/yuanermen/p/5047302.html
Copyright © 2011-2022 走看看