深入了解消息队列Kafka版

简介: 阿里云消息产品系列简介;阿里云消息产品选型;消息队列Kafka版的定位;阿里云消息队列Kafka版的核心优化

深入了解消息队列Kafka版

——岁月

阿里云高级产品运营专家


一、阿里云消息产品系列简介

消息队列是构建分布式互联网应用架构的基础设施,主要解决分布式计算场景中的异步解耦、削峰填谷等问题。阿里云消息队列服务的产品家族可以有效地覆盖互联网、大数据、移动互联网、物联网等众多领域的业务场景。

消息队列RocketMQ脱胎于阿里内部的核心电商交易系统,经历了历次双十一的流量洪峰。伴随着企业IT架构从SOA到微服务、到云原生时代的技术演进,RocketMQ已经成为国内最被广泛采用的业务消息中间件。同时,阿里云还提供聚焦大数据生态链的数据通道产品Kafka,百分百兼容Kafka开源生态;以及适用于物联网和移动互联网场景的消息队列MQTT、消息服务MNS和业务消息中间件RabbitMQ等。

阿里云消息队列服务在事件驱动领域也有着比较深入的探索。据Gartner报告显示,2022年预计将有50%的商业组织参与到EDA生态建设中。事件驱动架构(EDA)能够实现复杂系统内的解耦,更好地实现跨组织、第三方外部调用等多种应用的深层解耦,大大提升了连接的能力,通过低代码的方式让企业能够更好地关注数据使用本身,可以说是消息驱动架构的一种再升级。

EventBridge是阿里云提供的一款无服务器事件总线产品,它提供了统一标准化的事件接入,集成了阿里云主流八十多款云产品的事件源,内置了多种事件目标,通过低代码的开发模式简单配置即可实现事件的编排和处理,因此能够有效解决日常遇到的事件获取难、事件无标准等问题,帮助业务更好地实现EDA架构。

最重要的是,阿里云消息队列产品并不是孤立的、托管式的服务。阿里云云原生团队着力打造统一消息队列的技术底座,为不同的消息队列产品提供了一致的底层能力,包括低延迟、高吞吐、海量堆积等。

二、阿里云消息产品选型

不同行业的企业业务情况各不相同,有行业属性的区分、有业务形态的差异、有在线业务的需求、有近实时离线数据分析的需求、有IoT场景等,如何进行消息队列的选型就成为一个难点,在此仅作简单介绍。

①当我们的新业务没有历史技术包袱的情况下,特别是需要使用消息队列做业务消息、服务解耦的时候,推荐使用RocketMQ,它经历了阿里双十一的流量洪峰的验证,有很强的技术保障能力。

②对于特定行业的企业客户,特别是一些传统企业,由于技术能力和业务决定导致单体架构比较多,在过去的技术选型中已经使用了WebMQ等的情况,在业务没有明显变动的情况下考虑最小改动的原则,建议使用云上的RabbitMQ服务。

③Kafka更多是应用于大数据、日志收集、数据集成等场景,云上的Kafka解决了开源用户长期以来的痛点,提供了更高SLA的保证,拥有更强的弹性能力。

④如果主要业务集中在海量设备端的连接,且消息的收发是较低频的场景时,可以使用消息队列MQTT,它与整个阿里云的消息产品体系有着很好的连接。

三、消息队列Kafka版的定位

Kafka是目前最热门的消息队列产品之一,它拥有大数据领域上下游最全面的生态支持,广泛应用于实时或离线的数据分析场景。阿里云Kafka针对ApacheKafka提供全托管服务,兼容了开源生态,解决了一些经常遇到的痛点,是大数据生态中不可或缺的组件之一。同时,阿里云Kafka对开源底层做了优化,企业只需要专注于业务开发,无需运维,更便捷、稳定和可靠。

四、应用场景

Kafka作为企业数据通道领域的消息中间件,是公认的业界标准,也可以作为业务消息中间件来使用。Kafka天然具备可靠顺序、一对多发布订阅等特性,决定了它数据中枢的地位。下面将以几个行业实践为例来看看这些具体的场景。

对于大型在线游戏的运营来说,经常需要对玩家的行为进行数据实时分析来确定是否命中了作弊等高风险行为,同时存在PCU等数据实时更新查询需求。这类场景的难点在于:①海量玩家的行为埋点数据日志量非常大,对于高性能可靠传输的要求比较高;②既要做实时分析,又要做离线的批处理,原始埋点数据需要做一对多分发。

使用阿里云Kafka可以保障海量日志采集传输过程中的数据可靠性,同时利用Kafka做分发能够实现链路解耦。此外,它还具有优秀的数据生态,可以原生地支持丰富的数据上下游,简单配置即可实现系统的串联而无需进行代码开发。

在数据驱动商业的时代,存在大量的近实时数据报表分析的需求,业务的指标项非常多且动态增长趋势明显,总指标可能有数十万甚至上百万。为了保障计算,需要Kafka的分区实现动态扩展。同时,指标的实时性较强,要求提供至少分钟级别的延迟。

阿里云消息队列Kafka对内核进行优化,分区数支持理论上无限扩展,并且它的实时性很高,在下游消费能力能够保障的情况下,可以达到99.9%以上的消息在毫秒级别。

信息流服务是目前较为热门的应用形态,过去用户都是通过主动检索的方式获取信息,而当前更多业务要基于用户兴趣去做主动推荐,阿里云Kafka天然适配这种个性化推荐场景。以寻找相似商品和猜你喜欢这类应用为例,根据用户历史行为、标签、社交等自然属性以及社交属性计算用户可能感兴趣的物品列表做个性化Top-N推荐。

在这种情况下,各种数据来源汇总的场景需要进行单独的适配,工作量比较大;自建运维的成本高,开源自建机制研究也不够深入,学习成本很高,导致经常会丢数据、数据延迟。此时如果使用阿里云消息队列Kafka,数据丢失的情况可以得到解决,整体的数据时效性可以得到保障,并且无需运维Kafka及其依赖,实现托管。

五、阿里云消息队列Kafka版的核心优化

很多时候企业使用开源的Kafka并不能够解决业务场景,需要投入大量的运维来保障业务的稳定性,性价比很低。阿里云Kafka深度优化开源版的内核,从而大大解决了开源版本中可靠性、可用性的问题。

优化ISR算法。ISR算法的优化主要解决了可靠性与可用性的问题。在同等磁盘的条件下,阿里云Kafka的磁盘使用率降低三分之二,并且扩容时没有集群风暴,不会降低系统的可用性。

双引擎支持。阿里云Kafka在架构层面提供双引擎支持,在同一个实例中可以用两种引擎支持,无需担心开源版本迭代问题。

海量分区。海量分区主要应对大客户遇到的分区达到上限的问题,即客户用到的分区规模超过了开源的承受能力。使用阿里云Kafka可以不用像开源做法一样去做集群的切分。

秒级分区扩容。阿里云Kafka可以进行平滑扩容,通过分级存储实现无限扩容,用户以非常低的成本享受长时间存储消息的服务,无需自己再做二次开发。

此外,还有更多的优化能够降低企业的运维成本、二次开发的成本,提升整个系统的可用性,让用户能够更加专注在业务的开发中。

六、阿里云消息队列Kafka版的优势

在实际的运维以及选型中,客户选择云上托管服务的主要原因是运维问题。运维主要涉及到两个需求,一是产品不够稳定,二是需要解决开源的弹性问题。开源产品不太容易支持超大规模的业务,会遇到稳定性问题、宕机问题、磁盘写满问题等。阿里云Kafka提供的特性解决了上述问题,可以说从治理能力提升、稳定性增强以及内核优化这三方面,阿里云Kafka是相对完美的产品方案。

就治理能力来讲,阿里云Kafka相较于开源版本有较强的特性升级,一键自助升级能够有效地解决开源版本中手动操作容易出错的问题。同时,更丰富的堆积告警能力能够帮助你快速定位问题。

就稳定性保证来说,从磁盘维护、线程池隔离、巡检系统以及同城容灾等多方面的特性升级,阿里云Kafka让开源版本中的宕机几乎不可能发生。

就内核优化而言,阿里云Kafka具备秒级弹性伸缩能力,专业版提供高可靠云存储节省大量的存储空间,更好地平衡可用性、可靠性和成本问题。


在兼容开源生态的同时,阿里云Kafka天然具备云上生态的集成能力。阿里云Kafka在开源数据生态兼容基础上,提供全托管、免运维的Connector服务,简单配置即可接通第三方产品,同时还具备大数据分析计算、轻量化ETL数据转储、Serverless轻量计算等行业解决方案。

相关文章
|
6月前
|
消息中间件 存储 缓存
消息队列之 MetaQ 和 Kafka 哪个更香!
本篇文章首先介绍了MetaQ消息队列,然后介绍了作者对MetaQ和Kafka这两个消息队列的理解。
|
7月前
|
消息中间件 存储 传感器
Kafka消息队列原理及应用详解
【5月更文挑战第6天】Apache Kafka是高性能的分布式消息队列,常用于实时数据管道和流应用。它提供高性能、持久化、分布式和可伸缩的消息处理,支持解耦、异步通信和流量控制。Kafka的核心概念包括Broker、Topic、Partition、Producer、Consumer和Consumer Group。其特点是高吞吐、低延迟、数据持久化、分布式架构和容错性。常见应用包括实时数据流处理、日志收集、消息传递和系统间数据交换。
|
7月前
|
消息中间件 存储 负载均衡
消息队列学习之kafka
【4月更文挑战第2天】消息队列学习之kafka,一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台。
68 2
|
7月前
|
消息中间件 存储 Kafka
Kafka - 消息队列的两种模式
Kafka - 消息队列的两种模式
218 0
|
7月前
|
消息中间件 存储 Kafka
分布式实时消息队列Kafka(一)Kafka的介绍
分布式实时消息队列Kafka(一)Kafka的介绍
93 0
|
消息中间件 存储 缓存
消息队列之 MetaQ 和 Kafka 哪个更香!(4)
消息队列之 MetaQ 和 Kafka 哪个更香!
100 0
消息队列之 MetaQ 和 Kafka 哪个更香!(4)
|
消息中间件 存储 负载均衡
消息队列之 MetaQ 和 Kafka 哪个更香!(2)
消息队列之 MetaQ 和 Kafka 哪个更香!
109 0
消息队列之 MetaQ 和 Kafka 哪个更香!(2)
|
消息中间件 存储 Kafka
消息队列之 MetaQ 和 Kafka 哪个更香!(3)
消息队列之 MetaQ 和 Kafka 哪个更香!
90 0
消息队列之 MetaQ 和 Kafka 哪个更香!(3)
|
消息中间件 存储 中间件
消息队列之 MetaQ 和 Kafka 哪个更香!(1)
消息队列之 MetaQ 和 Kafka 哪个更香!
115 0
|
消息中间件 存储 网络协议
常见的消息队列Kafka
常见的消息介绍Kafka篇
91 0