亚信安慧AntDB数据库采集技术创新:ACC从Java到Go的转型之路

传统的指标采集方法通常使用一些命令行工具,如top、free等来获取系统的性能数据。然而,这种方法存在一些缺点。首先,这些命令行工具输出的数据格式通常是文本形式,需要进行解析和处理才能得到有用的信息,这增加了开发者的工作量。其次,由于这些工具是外部进程,性能开销较大,采集数据的频率受到限制,无法实时获取数据。

采用现代化的语言来实现指标采集则具有更高的效率和可靠性。Java作为一个广泛应用的开发语言,也被用于采集系统性能数据。然而,Java程序对环境有依赖,需要安装和配置JDK环境,这增加了部署的复杂性。此外,Java项目通常比较庞大且依赖较多,占用较多的项目资源和存储空间。另外,由于Java项目的性能开销较大,对主机的负担也较重,可能会影响AntDB数据库的稳定性和性能。

相比之下,使用Go语言实现的数据采集具有以下优势。首先,Go程序不需要额外的依赖和环境配置,可以直接编译为二进制文件,简化了部署的复杂性。其次,Go语言的项目通常比较小巧,静态链接可以减少对外部库的依赖,减少了项目的资源占用和存储空间需求。另外,Go语言的运行时开销较低,性能较高,对主机的负担较小,不会明显影响AntDB数据库的稳定性和性能。通过使用Go语言实现的数据采集,可以提供高效、轻量级和可靠的解决方案,既满足了性能需求,又减少了对系统资源的消耗。

部署方式

部署Agent方式如图所示,每个集群针对每台主机部署一个独属于自己的Agent采集程序。

图片

图1:Agent部署方式

1:由于Go语言的特性,编译器将所有依赖的库和运行时组件静态链接到可执行文件中,这意味着在不同的操作系统上运行Go程序时不需要安装额外的运行时环境,不再依赖于JVM,减少了额外的资源消耗。

2:基于项目结构的优化,Go项目打包的可执行文件占用的存储空间更少,进一步减少了资源消耗。

Go项目的磁盘占用:

图片

图2:Go项目磁盘占用

Java项目的磁盘占用:

图片

图3:Java项目磁盘占用

性能开销

传统的指标采集方法是使用一些命令行工具如top、free等来获取系统的性能数据,此种方式为外部程序,需要主机安装对应命令行程序,并且主机响应较慢。Go语言直接使用内置库进行数据获取,直接与系统进行硬件交互,极大的提升了响应速度。

以下为获取内存的总内存、已用内存、空闲内存、内存利用率指标的两种方式以及花费的总时间。其中使用Go语言内存库进行指标数据采集花费时间为:363微秒,而使用命令行采集花费时间为:28毫秒。两者的时间花费差距相差77倍。

图片

图4:Go语言内置库实现

图片

图5:命令行方式采集

图片

图6:性能开销比较

实现细节

1.内置库实现

内置库包含的指标中,直接通过系统方法调用获取数据进行存储即可。此处以CPU核数、使用率、空闲率举例。

图片

图7:内置库实现采集

2.内置库无法直接获取的指标

针对某些无法直接通过三方库获取的指标数据,需要内部采用高效率的方式实现。例如,获取CPU_LOAD指标,则为代码实现读取文件 /proc/loadavg ,并转为64位float获取。

图片

图8:特定值具体实现

3.速率指标

某些速率指标,采用命令行方式获取,命令行内部已完成速率计算。例如磁盘读写速率,网卡上传、下载速率等,已经由iostat、sar等命令完成,直接使用即可。

此处使用磁盘读写速率举例,iostat -xd 命令中,第六、七、十一、十二列分别记录了磁盘读速率、写速率、读延迟、写延迟的信息,无需二次计算获取。

图片

图9:速率值命令实现

结论

综上所述,将AntDB控制中心数据采集项目从Java改写为Go实现带来了许多优势,包括减少了额外的资源消耗、提高了响应速度、降低了存储空间占用等。通过合理利用Go语言的特性和内置库,我们可以实现更高效、更灵活的数据采集,为系统监控和分析提供更可靠和准确的指标数据。这将对提升系统性能、优化资源利用和预测未来需求等方面产生积极的影响。

关于亚信安慧AntDB数据库

AntDB数据库始于2008年,在运营商的核心系统上,服务国内24个省市自治区的数亿用户,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行超十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值