深入了解消息队列Kafka版

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 阿里云消息产品系列简介;阿里云消息产品选型;消息队列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轻量计算等行业解决方案。

相关文章
|
运维 Java Nacos
nacos常见问题之配置账号密码
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
1460 6
|
9月前
|
消息中间件 人工智能 Kafka
AI 时代的数据通道:云消息队列 Kafka 的演进与实践
云消息队列 Kafka 版通过在架构创新、性能优化与生态融合等方面的突破性进展,为企业构建实时数据驱动的应用提供了坚实支撑,持续赋能客户业务创新。
797 75
|
11月前
|
消息中间件 存储 缓存
再次了解kafka
Kafka通过offset机制解决消息重复消费问题,支持手动提交偏移量及唯一ID去重。它保证分区内的消息顺序消费,结合集群、副本与重平衡实现高可用。高性能设计包括顺序读写、分区、页缓存、零拷贝等。数据清理依赖保留时间或大小策略,点对点和发布订阅模式则通过消费者组实现。
|
消息中间件 负载均衡 Kafka
Kafka消费组重新平衡流程
Kafka消费组重新平衡流程
|
IDE Java Maven
快速构建第一个Flink工程
本文简述通过maven和gradle快速构建的Flink工程。建议安装好Flink以后构建自己的Flink项目,安装与示例运行请查看:Flink快速入门--安装与示例运行. 在安装好Flink以后,只要快速构建Flink工程,并完成相关代码开发,就可以轻松入手Flink。
642 0
快速构建第一个Flink工程
|
安全 Java API
【三方服务集成】最新版 | 阿里云短信服务SMS使用教程(包含支持单双参数模板的工具类,拿来即用!)
阿里云短信服务提供API/SDK和控制台调用方式,支持验证码、通知、推广等短信类型。需先注册阿里云账号并实名认证,然后在短信服务控制台申请资质、签名和模板,并创建AccessKey。最后通过Maven引入依赖,使用工具类发送短信验证码。
8164 3
【三方服务集成】最新版 | 阿里云短信服务SMS使用教程(包含支持单双参数模板的工具类,拿来即用!)
|
存储 消息中间件 弹性计算
统一观测丨借助 Prometheus 监控 ClickHouse 数据库
统一观测丨借助 Prometheus 监控 ClickHouse 数据库
2181 114
统一观测丨借助 Prometheus 监控 ClickHouse 数据库
|
SQL 缓存 大数据
大数据技术之Clickhouse---入门篇---SQL操作、副本
大数据技术之Clickhouse---入门篇---SQL操作、副本
|
人工智能 分布式计算 数据处理
Big Data for AI实践:面向AI大模型开发和应用的大规模数据处理套件
文叙述的 Big Data for AI 最佳实践,基于阿里云人工智能平台PAI、MaxCompute自研分布式计算框架MaxFrame、Data-Juicer等产品和工具,实现了大模型数据采集、清洗、增强及合成大模型数据的全链路,解决企业级大模型开发应用场景的数据处理难题。
|
Java API 数据处理
Java 包(package)的作用详解
在 Java 中,包(package)用于组织和管理类与接口,具有多项关键作用:1)系统化组织代码,便于理解和维护;2)提供命名空间,避免类名冲突;3)支持访问控制,如 public、protected、默认和 private,增强封装性;4)提升代码可维护性,实现模块化开发;5)简化导入机制,使代码更简洁;6)促进模块化编程,提高代码重用率;7)管理第三方库,避免命名冲突;8)支持 API 设计,便于功能调用;9)配合自动化构建工具,优化项目管理;10)促进团队协作,明确模块归属。合理运用包能显著提升代码质量和开发效率。
1617 4