腾讯云消息队列Ckafka和TDMQ选型问题

问题背景

目前随着技术架构不断演进,特别是微服务分布式技术兴起,很多大型网站逐步采用分布式的消息队列,用于面对流量高峰和异步处理,基于云上的消息队列逐步成为主流,接下来给大家一起介绍下腾讯云消息队列Ckafka及新推出的TDMQ相关产品特性、使用场景,以及系统对接,帮助大家更好做好技术选型。

详细介绍

腾讯云Ckafka

Ckafka作为开箱即用的云端消息队列服务,基于开源引擎打造,包含Connector常用插件,集成了安全、数据监控告警、云上服务一键打通等高级特性。使用CKafka兼容 Apache kafka 0.9、0.10、1.1.1版本接口,在性能、扩展性、业务安全保障、运维等方面具有超强优势,让您在享受低成本、超强功能的同时,免除繁琐运维工作。

Ckafka简介

Ckafka具有海量的数据解决方案,分布式、消息队列引擎,有效解耦生产者、消费者,抵挡突增的访问压力有效提升系统健壮性。相对基于开源kafka自建的消息队列具有如下特征:

1、数据更加可靠,及时在服务器坏盘50%的情况下,也不影响使用。

2、执行效率更高,准实时,从数据生产到消费,毫秒级可见。

3、更具灵活弹性特性,分布式架构,灵活、平行扩展,应对海量数据的挑战。

4、对开发友好,基于现有的开源 Apache Kafka 生态的代码,无需任何改造,即可迁移上云。

同时Ckafka在性能和高可用性方面更具有优势:

1、Ckafka在I/O线程拉取请求任务时不用加锁,提高性能。

2、Ckafka实现了多可用区部署,数据节点自动感知区域,故障节点自动检测,对用户无感知。

3、同时Ckafka采用安全加固技术,全方位多角度保护云上数据安全。

自建kafka的劣势

由于Kafka的搭建方式简单方便,且其性能高效稳定,很多企业用户选择自建Kafka集群。但这样看似完美的可行方案背后却有一个隐型风险:当业务的消息数据量到达一定程度后,自建的消息队列集群就会引发各种各样的问题。Kafka入门简单,进阶却有一定的门槛。解决问题的研发人员需要具备扎实的计算机功底(熟悉计算机网络、IO等)对Kafka的底层原理、各种配置参数项等具有深刻理解可以进行Kafka集群参数调优,快速处理突发故障、恢复集群抖动和动态进行集群扩缩容等企业一方面需要投入更多的人力、物力成本需要时刻监控集群的健康状况,及时排除问题以保障业务的稳定运行。

所以自建Kafka集群虽然简单,但需要承担日益加重的研发和运维成本。

Ckafka应用场景

消息队列 CKafka 广泛应用于大数据领域,如网页追踪行为分析、日志聚合、监控、流式数据处理、在线和离线分析等。

数据集成场景:

可以通过以下方式让数据集成变得简单:1、将消息队列 CKafka 中的消息导入到腾讯云平台的 COS、流计算等数据仓库。通过 SCF 触发器的方式连接云上其他产品。

网页追踪场景:

消息队列 CKafka 通过实时处理网站活动(PV、搜索、用户其他活动等),并根据类型发布到 Topic 中,这些信息流可以被用于实时监控或离线统计分析等。由于每个用户的 page view 中会生成许多活动信息,因此网站活动跟踪需要很高的吞吐量,消息队列 CKafka 可以完美满足高吞吐、离线处理等要求。

日志聚合场景:

消息队列 CKafka 的低延迟处理特性,易于支持多个数据源和分布式的数据处理(消费)。相比于中心化的日志聚合系统,消息队列 CKafka 可以在提供同样性能的条件下,实现更强的持久化保证以及更低的端到端延迟。消息队列 CKafka 的特性决定它非常适合作为“日志收集中心”;多台主机/应用可以将操作日志“批量”“异步”地发送到消息队列 CKafka 集群,而无需保存在本地或者 DB 中;消息队列 CKafka 可以批量提交消息/压缩消息,对于生产者而言,几乎感觉不到性能的开支。此时消费者可以使用 Hadoop 等其他系统化的存储和分析系统对拉取日志进行统计分析。

大数据场景:

在一些大数据相关的业务场景中,需要对大量并发数据进行处理和汇总,此时对集群的处理性能和扩展性都有很高的要求。消息队列 CKafka 在实现上的数据分发机制,磁盘存储空间的分配、消息格式的处理、服务器选择以及数据压缩等方面,也决定其适合处理海量的实时消息,并能汇总分布式应用的数据,方便系统运维。在具体的大数据场景中,消息队列 CKafka 能够很好地支持离线数据、流式数据的处理,并能够方便地进行数据聚合、分析等操作。

云函数触发器:

消息队列 CKafka 可以作为云函数触发器,在消息队列中接收到消息时将触发云函数的运行,并会将消息作为事件内容传递给云函数。例如,Ckafka 触发云函数时,云函数可以对消息进行结构变换、内容过滤等处理或者将消息投递到 Elasticsearch Service(ES)中。

腾讯云TDMQ

TDMQ是一款基于 Apache 顶级开源项目 Pulsar 自研的金融级分布式消息中间件。其计算与存储分离的架构设计,使得它具备极好的云原生和 Serverless 特性,用户按量使用,无需关心底层资源。它拥有原生 Java 、 C++、Python、GO 等多种 API,同时支持 kafka 协议以及 HTTP 协议方式接入,可为分布式应用系统提供异步解耦和削峰填谷的能力,具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。TDMQ 目前已应用在腾讯计费绝大部分场景,包括支付主路径、实时对账、实时监控、大数据实时分析等方面。 

TDMQ架构特点:

TDMQ采用存储于计算分离的架构。

具有如下特点:

1、服务(Broker)和存储(Bookie)分离,云原生无状态设计,可以任意按量使用和按需扩展;

2、流式处理和队列的结合,高性能、支持跨域复制;

3、支持百万级别Topic数量扩展;

TDMQ 架构

TDMQ产品特性:

1、具有强一致性,满足金融级场景。采用multi-raft算法,高效保证多副本之间的一致性。灵活的副本参数设置,满足不同的容灾需求。

2、高性能低延时,满足业务性能需求。采用Pipeline写、读写分离,多缓存、并行读取等性能优化机制。

3、满足百万级topic场景,采用多租户支持,各资源相互隔离、Topic数据增长不影响服务、管理提供消息追踪能力,消息生 命周期实时跟踪。

4、采用分片存储方式,平滑数据迁移。

TDMQ提供丰富的消息类型:

TDMQ提供了丰富的消息类型,涵盖普通消息、顺序消息(全局顺序 / 分区顺序)、分布式事务消息、定时消息等。

TDMQ支持多种协议:

TDMQ支持多种协议接入

TDMQ高可用性:

TDMQ支持跨城容灾。

TDMQ支持跨城容灾架构

Ckafka与TDMQ选项总结

Ckafka与TDMQ都是腾讯云主打的消息队列中间件,都具有高性能,高可靠,支持多种场景。但是他们的特性和使用场景还是有一定差异的。在大数据,流式计算场景中我们一般选择Ckafka,因为Ckafka在搞并发情况下的吞吐量、响应度都是非常高的。而TDMQ具有整体稳定性,同时支持多种协议,能够支持多种丰富消息类型,在一些Ckafka满足不了的,如延时消息等场景中能够很好的发挥作用。总之一句话,TDMQ能够完成Ckafka相关功能,但是TDMQ有些功能Ckafa不一定有。