
CLS 日志主题采用分区架构,每个分区支持最大 500 QPS 写入和 5 MB/s 流量。开启分区自动分裂后,单个日志主题最多可扩展至 50 个分区,有效应对突发流量场景。本文详解分区机制的工作原理和配置策略。
在海量日志采集场景中,单点写入能力往往成为系统瓶颈。为了解决这个问题,CLS 采用了分布式分区架构。每个日志主题包含多个主题分区,数据按照一定规则分布到不同分区中进行并行处理。这种设计使得 CLS 能够横向扩展写入能力,满足每天亿级别日志数据的处理需求。
分区的数量直接决定了日志主题的写入上限。了解分区机制并合理配置,对于保障日志采集的稳定性和应对业务流量波动至关重要。
每个主题分区的写入能力有明确的上限:
这里的写请求和写流量并不能简单等同于日志条数和日志量。日志上传时会将多条日志打包为一个日志组并进行压缩,实际支持的日志条数和总量远大于上述限制。使用 LogListener 采集时会进行自动打包和压缩,用户无需关注具体的打包策略。
单个日志主题在创建时最多可以设置 10 个分区。随着业务增长,通过分区自动分裂功能,单个日志主题最多可拥有 50 个分区。按照每个分区 500 QPS 计算,50 个分区的总写入能力可达 25000 QPS,总写流量可达 250 MB/s。
这样的写入能力可以满足绝大多数企业的日志采集需求。即使是大型互联网企业在促销活动期间的突发流量,也能通过足够的分区数量来承载。
分区自动分裂是 CLS 提供的一项弹性扩容功能。当日志主题的写入流量增长到一定程度时,系统会自动将现有分区分裂为更多的分区,从而提升整体写入能力。这一过程对用户透明,无需手动干预。
自动分裂功能默认开启。在新建日志主题时,可以通过参数控制是否启用该功能以及设置最大分裂分区数。如果业务流量相对稳定且可预测,也可以选择关闭自动分裂,手动管理分区数量。
当某个分区的写入负载持续超过阈值时,系统会判断需要进行分裂操作。分裂过程中,原有的读写分区会转变为只读分区,同时生成新的读写分区来承接后续的写入流量。这种机制确保了分裂过程中的数据连续性和一致性。
需要注意的是,分区分裂是一个渐进的过程。系统不会一次性将所有分区都分裂到最大值,而是根据实际负载情况逐步调整。这样既能保证写入能力的弹性扩展,又避免了资源浪费。
用户可以通过 max_split_partitions 参数设置单个日志主题允许的最大分区数。这个参数的取值范围需要根据实际需求来确定。设置过小可能无法充分发挥自动分裂的优势,设置过大则可能导致资源利用率不高。一般建议根据业务的峰值流量预估来设定合理的上限。
对于已知会有周期性流量波动的业务,例如电商大促、游戏开服等活动场景,建议提前评估所需的分区数量。可以在活动开始前通过 API 或控制台适当增加初始分区数,确保有足够的写入余量应对流量洪峰。
虽然自动分裂功能可以在运行时动态扩展,但分裂操作本身需要一定的时间。对于短时间内急剧增长的流量,提前预留足够的分区是更为稳妥的做法。
在配置自动分裂的最大分区数时,需要综合考虑业务规模和发展预期。对于处于快速增长期的业务,可以将上限设置得相对宽松一些,给未来留出扩展空间。对于流量已经趋于稳定的成熟业务,可以根据实际用量设置更精确的上限。
定期检查日志主题的分区使用情况是良好的运维习惯。通过 CLS 控制台或 API 可以查看当前分区数量、各分区的写入负载等信息。如果发现某些分区长期处于高负载状态,说明可能需要增加分区数量;如果大部分分区的负载都很低,则说明分区数量可能有冗余。
当使用 Kafka 协议消费日志时,消费主题的分区个数会与日志主题的分区保持同步关系。如果在开启分区自动分裂之后才启用 Kafka 协议消费功能,消费主题只会同步历史分裂中产生的读写分区,不会同步只读分区。
如果在分区自动分裂发生之前就已经开启了 Kafka 协议消费功能,消费主题会实时同步日志主题的全量分区,包括只读和读写分区,始终保持分区个数一致。
分区个数的差异仅为底层同步机制的细节表现,不会对业务产生任何实际影响。日志数据的正常消费、数据完整性和消费顺序性都能得到保障。用户在正常使用中无需关心这些底层细节。
分区数量的增加意味着更高的写入能力,同时也可能带来更大的存储量。对于历史数据的存储成本优化,可以配合使用日志沉降功能。将标准存储中超过一定天数的旧数据自动迁移到低频存储,可以在不影响检索能力的前提下降低存储费用。
对于日志量特别大的场景,可以考虑使用数据加工功能将原始日志按级别或类型分发到不同的日志主题中。这样可以对不同重要程度的日志采用不同的分区策略和存储方案,实现更精细化的成本管理。
分区分裂后产生的只读分区不能被合并或删除,它们会保留用于历史数据的读取。新写入的数据会进入新生成的读写分区。如果需要减少分区数量,可以通过创建新的日志主题并重新配置来实现,但已有数据不会自动迁移。
最直接的判断依据是写入请求的拒绝率。如果出现写入失败或超时的情况,首先需要检查当前分区的负载状况。另外,也可以通过监控写入延迟的变化趋势来预判是否需要扩容。
想要体验 CLS 分区自动分裂带来的弹性写入能力,新用户开通即可领取 10U × 3 个月 免费资源包用于体验,首单特惠最低至 0.8 折起;新老用户购买资源包常规档位最低可享 6.3 折优惠。如需了解更多详情或领取优惠,可访问 腾讯云 CLS 产品页 及 特惠活动页。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。