什么是消息中间件
消息中间件是一种软件系统,用于在应用程序或系统之间发送和接收消息。它提供了一种独立于应用程序和网络的方法来交换信息,使应用程序能够更加灵活和可扩展。
消息中间件通常包含一个消息服务器,用于管理消息的发送和接收,以及一组应用程序接口,用于让应用程序连接到服务器并发送和接收消息。消息中间件还提供了一组服务,用于管理消息的路由、存储和发送。
消息中间件有助于应用程序之间的解耦,使得它们能够独立开发和部署。这对于分布式系统来说是非常重要的,因为它们通常由许多不同的组件组成,这些组件之间必须能够相互协作。消息中间件可以帮助组件之间进行良好的通信,使得系统能够更加稳定和可靠。例如,在一个 e-commerce 网站中,当一个用户购买了一件商品,订单系统可以将订单信息发送到消息中间件,而不是直接发送到库存管理系统。这样,库存管理系统就可以在接收到订单信息后自行决定如何处理,而不会受到订单系统的直接影响。
开源消息中间件 RocketMQ 和 Pulsar
Apache RocketMQ是由阿里巴巴开源的可支撑万亿级数据洪峰的分布式消息和流计算平台,于2016年捐赠给Apache Software Foundation,2017年9月25日成为Apache 顶级项目。由于其高稳定性、低延时、高吞吐量等特点,被大规模应用于金融、互联网、物流公司的核心交易支付、实时位置追踪、大数据分析等场景,同时也被电力、交通、汽车、零售等十几个行业的数万家企业广泛使用,是企业数字化转型的核心基础性软件。
Pulsar 由 Yahoo!在 2013 年创建,并于 2016 年捐赠给 Apache 基金会。Pulsar 现在是 Apache 软件基金会的顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性,被看作是云原生时代实时消息流传输、计算和存储最佳解决方案。
ADMQ和开源产品对比
新增Web管理控制台
相比开源的Pulsar/RocketMQ,ADMQ提供了管理控制台,能够帮助用户更好地管理和控制ADMQ集群,提高系统的运行效率。
1. 简单易用
管理控制台的界面简洁易懂,操作简单易学,使用起来非常方便。
2. 功能强大
管理控制台提供了丰富的功能,包括自动部署、队列管理、订阅组管理、监控统计等功能。
3. 可视化界面
管理控制台提供了多种可视化界面,能够帮助用户快速查看和分析系统运行情况。
4. 消息跟踪
管理控制台提供了消息跟踪功能,能够帮助用户追踪消息的流转情况,找出消息的问题所在。
5. 安全可靠
管理控制台采用了安全的认证机制,保证了数据安全。
企业级特性增强
ADMQ基于Pulsar进行了优化和提升,增强了管理监控、国密、查询等功能,添加了对接Hive、IBM MQ等连接器的支持。提高了它的性能和能力,使ADMQ成为一个更强大、更有效的工具,用于实时管理和处理大量数据。
1. 国密支持
国密SSL指的是采用国密算法(SM1/2/3/4等),符合国密标准(GM/T0024-2014和GB/T38636-2020)的安全传输协议。Pulsar 是基于 netty 进行网络通信,支持 tls 传输。我们在 netty 基础上进行改造,使得客户端可以通过商密进行加密通信。在服务端和客户端配置国密证书/keystore后,就可以进行国密SSL通信。
2. 文件传输
支持大文件的传输,包括4G以上的文件。支持断点续传功能,这意味着如果在传输过程中网络出现中断,可以在网络恢复后继续传输。发送和下载异步进行,多线程并行处理,可以同时传输多个文件,并且能够更快地完成传输。一份文件可传输到多个服务器节点,这有助于提高传输的安全性和可靠性。
3. Hive连接器
支持在数据存储hdfs后像hive中添加数据表和数据存储信息,hdfs中数据用于离线分析,hive中数据用于presto/trino等中间件使用。
4. IBM MQ连接器
实现IBM MQ和Pulsar之间的数据自动同步功能,帮助用户在两个不同的消息中间件之间进行数据交换,并保证数据的一致性。
5. 优先级主题
基于Pulsar分区Topic实现优先级功能,分区内优先级相同。
ADMQ的产品定位
金蝶 Apusic 分布式消息队列(Apusic Distributed Message Queue,简称ADMQ)是一款金融级分布式消息中间件, 具有多租户、跨集群数据复制、强一致性、高可靠、 高并发等特性。 ADMQ 支持原生 Java 、 C++、 Python、GO 多种 API, 支持以 Kafka、RocketMQ、RabbitMQ 客户端和 MQTT、JMS 等协议接入,从而简化不同业务系统的接入难度。
ADMQ采用了计算和存储分离的架构,客户端接入层是无状态的计算节点,底层是存储节点集群,计算节点和存储节点可以独立扩展。这种架构可以有效避免扩容限制,相对于其他消息中间件能更好的适配云原生环境。
ADMQ的产品优势
采用计算与存储分离的云原生架构,将消息的存储和服务分开,可实现存储层和服务层的独立扩展。扩容过程无需任何数据再平衡,不会将旧数据从现有存储节点复制到新存储节点,从而降低了网络带宽和I/O的消耗。
能够高效支持百万级消息生产和消费,海量消息堆积且消息堆积容量不设上限。单集群 QPS 超过10万,同时在时耗方面有保护机制来保证低延迟,满足业务性能需求。
3. 无限制的主题存储
主题被分割成分片,以分布式方式存储,因此主题的容量不受单一节点容量的限制。
由于服务层是无状态节点,所以某一个节点宕机对整体的生产和消费没有任何影响,集群会根据负载将主题重新分配给可用的节点。
一条消息在被确认之前会被持久化到N个存储节点,数据在多个节点上都可以被访问,并且可以在N-1个节点故障中存活。通过添加新的存储节点来替换失败的节点,不影响整个集群的可用性。
队列模型主要是采用无序或者共享的方式来消费消息,而流模型要求消息的消费严格排序或独占消息消费。
ADMQ 提供了统一的消息模型和API,做到了队列模型和流模型的统一。在主题级别只需保存一份数据,可被多次消费,为用户提供了更多灵活性,方便用户程序以最匹配模式来使用消息系统。
内置轻量级计算引擎,让开发人员可以使用Java或Python实现函数(处理逻辑),为用户提供了一个部署简单、运维方便的 FaaS(Function as a service)平台。此功能使用户可以享受无服务器计算(serverless)的好处,类似于AWS的Lambda计算。
提供统一的可视化界面,管理租户、命名空间、主题的创建和销毁,并分配用户相应的使用权限,保证用户的数据安全。
支持在命名空间层开启消息轨迹记录功能,开启后会自动记录消息的接收、存储、消费和消费确认状态,在管控台可查询消息轨迹。
在消息传输过程中支持国密SSL加密传输。
ADMQ替换开源的优势
ADMQ团队对Pulsar源代码有着透彻的了解,并已实现对开源产品的完全控制,消除了潜在瓶颈的风险,并满足合规要求。这确保了ADMQ可以根据特定的需求进行定制和优化,同时保持底层平台的稳定性和可靠性。
ADMQ在Pulsar的基础上进行二次开发,在功能上完全覆盖并超越了原生Pulsar。同时,ADMQ实现了与国产软硬件、云平台的兼容适配,国产化生态应用潜力大。ADMQ 是华为云联运产品,也是支持大型企业 PaaS 平台 “金蝶云.苍穹”的兼容互认证产品。
和开源Pulsar相比,ADMQ具有以下优势:
功能增强
ADMQ基于Pulsar进行了优化和提升,增加了诸如改进的集群管理、增强的消息查询以及对国密的支持等功能。这些增强使ADMQ成为一个更全面,功能丰富的消息中间件平台,并在各种环境和应用场景中提供强大且安全的消息解决方案。
完善的运维体系
ADMQ可无缝接入金蝶天燕监控运维系统(AMP),帮助您快速发现并解决系统问题,提高运维效率。
连接AMP为ADMQ提供实时监控和警报功能,允许您在潜在问题成为主要问题之前主动检测和解决。这可以帮助您维护ADMQ平台的稳定性和性能,确保为用户提供可靠和流畅的体验。
安全性
ADMQ支持国密SSL,符合国密标准(GM/T0024-2014和GB/T38636-2020),建立自主可控的网络安全环境。
合规性
ADMQ实现了对开源产品的自主可控,满足合规性要求。
ADMQ替换开源的成本
ADMQ兼容Pulsar v2.5.x以上和RocketMQ v4.x的客户端,用户的应用无需改动可无缝切换到ADMQ。
因此,ADMQ是对开源社区版 Pulsar、RocketMQ的完美替换。
(全文完)
推荐阅读