返回

微信支付万亿日志在 Hermes 中的实践

见解分享

微信支付的业务规模正在不断壮大,单日入库总量已达到万亿级,单日入库存储量达 PB 级。而在春节等重大节假日,整个日入库规模会有进一步的增长。

为了应对如此庞大的日志数据,微信支付团队采用了 Hermes 日志系统。Hermes 集群的单集群日入库规模也已经达到万亿级,稳定性、高可用性和可扩展性都得到了充分验证。

本文将分享微信支付在 Hermes 中的实践,包括日志采集、传输、存储、查询和分析等方面的经验,希望能够对广大读者有所帮助。

日志采集

日志采集是日志系统的第一步,也是非常重要的一步。微信支付日志采集主要采用以下两种方式:

  • Agent 主动采集 :在服务端部署 Agent,由 Agent 统一采集日志并发送给 Hermes。这种方式的好处是能够收集到所有的日志,并且能够对日志进行一定的处理和过滤。
  • 被动接收 :在服务端直接通过网络发送日志给 Hermes。这种方式的好处是简单易用,不需要在服务端部署 Agent。

为了满足不同的需求,微信支付同时使用了这两种日志采集方式。

日志传输

日志采集完成后,需要将日志传输到 Hermes 集群。微信支付采用的是基于 Kafka 的日志传输机制。

Kafka 是一个分布式的消息队列系统,具有高吞吐量、低延迟和高可靠性的特点。微信支付将日志数据写入到 Kafka 中,然后由 Hermes 集群从 Kafka 中消费日志数据。

日志存储

日志存储是 Hermes 集群的核心功能之一。Hermes 集群采用的是分布式存储架构,能够将日志数据分布到多个节点上存储,从而保证数据的安全性、可靠性和可扩展性。

Hermes 集群支持多种存储介质,包括 HDFS、OSS 和本地磁盘。微信支付根据不同的业务需求,将日志数据存储在不同的存储介质上。

日志查询

日志查询是 Hermes 集群的另一项核心功能。Hermes 集群提供了一套强大的日志查询引擎,能够快速高效地查询海量的日志数据。

Hermes 的日志查询引擎支持多种查询语言,包括 SQL、HiveQL 和 PigLatin。微信支付根据不同的业务需求,使用不同的查询语言进行日志查询。

日志分析

日志分析是日志系统的重要组成部分。Hermes 集群提供了多种日志分析工具,能够帮助用户快速发现日志中的异常和问题。

Hermes 的日志分析工具包括日志统计、日志告警和日志挖掘等。微信支付根据不同的业务需求,使用不同的日志分析工具进行日志分析。

总结

微信支付在 Hermes 中的实践证明,Hermes 日志系统是一个稳定、高效、可扩展的日志系统,能够满足微信支付万亿级日志数据的需求。

随着微信支付业务的不断发展,日志数据量还会持续增长。Hermes 日志系统将不断优化和完善,以满足微信支付的业务需求。