1、信息通信分布式高性能日志架构设计与研究张航,王红雷,程凯,张文彬,向芸(中国移动通信集团设计院有限公司湖北分公司,湖北武汉430 0 0 0)摘要:文章从分布式日志工具出发提出了一种高性能的设计架构,其中主要技术点包括:容器化部署、高性能落盘、基于消息队列的日志收发、InfluxDB时序数据库可视化展示、异常处理恢复等。基于以上关键技术实现的分布式日志可以广泛用于各种分布式集群中,并具备高可用的机制,从不同维度实现高性能可行的日志采集系统。文章对比了没有采用buff策略以及使用buff策略的性能实现,其中QPS指标为每一次访问请求所查询的次数,其中包含了日志大于MaxSize自动备份切割的过程
2、,发现QPS指标较原有指标提升倍以上,相比原有无优化操作的性能有明显提升。关键词:容器化;分布式系统;消息队列;日志工具;高性能落盘中图分类号:TP3Design and research of distributed high-performance log architectureZHANG Hang,WANG Honglei,CHENG Kai,ZHANG Wenbin,XIANG Yun(China Mobile Communication Group Design Institute Co.,LTD.Hubei Branch;Hubei Wuhan,430000)Abstract:T
3、his article proposes a high-performance design architecture based on distributed logging tools.The main technicalpoints include:container deployment,high-performance disk placement,message queue based log sending and receiving,vis-ualization of the InfluxDB temporal database,exception handling and r
4、ecovery,and so on.Distributed logs implemented basedon the above key technologies can be widely used in various distributed clusters,and have a highly available mechanism toachieve high-performance and feasible log collection systems from different dimensions.This article compares performance im-ple
5、mentations that do not use the buff policy with those that use the buff policy.The QPS indicator refers to the number of queriesper access request,and includes the process of automatically backing up and cutting logs that are larger than MaxSize.It is foundthat the QPS indicator improves by more tha
6、n 6 times compared to the original indicator,significantly improving performancecompared to the original operation without optimization.Keywords:Containerized;Histributed system;Message queue;Logging tool;High performance drop disk1引言随着二十一世纪计算机技术的发展,每天海量的数据正以前所未有的速度增长。人们常常利用集群以及分布式技术收稿日期:2 0 2 3-0 3
7、-0 9作者简介:张航(19 8 5-),男,湖北武汉人,本科,中级通信工程师,主要研究方向为4/5G无线网络优化、智能优化方法。ii+频平时存储在车载硬盘中,当急救指挥中心需要调视频时,可通过部署在政务云上的视频监控平台软件直接分发给指挥调度系统终端,并在大屏上进行展示。2.6联网医院建设改造内容联网医院设置急救中心,安排人员值班,安装由预告知大屏和预告知终端软件构成的预告知终端,接收预告平台发送的数据,展示数据,并打通院内急救系统,缩短病人入院救治时间。3应用效果与思考医疗健康领域做为5G典型应用场景,受到各方高度关注,特别是5G智慧急救研究参与方较多、部署实施较广,发展势头良好,应用效果
8、良好,通过应用5G智慧急救平台,平均出车时间可降低12%;院前急救和院内数据打通后,患者到院后的手术准备时间可平均节省30%以上。但是平台实际部署和应用推广中也存在部分问题,包括:车载医疗网关兼容性不足,不能适配全部车载医疗设备,导致部分生命体征数据实际无法上传;急救中心、医疗机构协同不足,未形成机制,医院预告知终端无人值守,远程会诊缺少专家支撑;急救车数量和急救医师数量及能力不匹配,急救体系能力无2023年第0 5期(总第2 45期)文献标识码:A文章编号:2 0 9 6-9 7 59(2 0 2 3)0 5-0 2 18-0 3来应对处理这些数据信息,从而使得系统稳定运行。但分布式系统同样
9、对系统以及服务日志数据有着不小的挑战,随着时间推移,由于分布式节点过多,导致系统日志数量相比以往+一法最大化服务社会。以上问题都影响着5G智慧急救平台发挥其效果,需要后续从组织管理、技术研究等多角度进行解决。4结语5G智慧急救体系的最终成熟,需要拉长产业链,跨界融合、协同推进:卫生行政部门积极进行政策引导,医疗机构积极配合,形成闭环的救治流程,加大急救医师培养,建立急救医师晋升通道,从机制体制层面支撑急救体系的完善;同时,传统通信设备厂商、医疗设备厂商、医疗软件厂商乃至人工智能厂商等都需要积极参与体系的建设,开放共享,从技术层面支撑急救体系的成熟。参考文献:1刘磊,盛伟.浅谈5G技术在院前急救
10、体系中的应用.中国新通信,2 0 2 2,0 2 4(0 0 1)-7 57 6.2罗自然,林洁尘,严静东.5G技术在急诊急救场景的探索和实践J.中国信息化,2 0 2 1(0 8):2 9-31.3朱宏,黄旺程,管新,等.基于5G网络的智慧急救研究与设计J.长江信息通信,2 0 2 2,2 39(11):2 0 2-2 0 4.218一+2.4分级日志消息队列Changjiang Information&Communications单节点应用日志收集更为复杂。目前大部分业务已将原有的单体应用改为微服务架构,单个系统可能又由多个微服务组成,系统复杂度提高。每一个程序都需要单独维护一套日志系统,
11、使得错误较难定位,也难于跟踪数据流向。通常IT运维人员需要修改某些配置文件重启服务时,需要远程登录到对应节点进行配置修改。其间经过多次跳板机以及日志处理造成维护上的复杂性,给开发人员带来了不便。随着日志数据变大,日志的落盘也会对日志系统造成性能上的瓶颈。而且随着服务的迭代,可扩展性以及系统伸缩,对于高可用的日志系统有较大的挑战。基于以上一些不足,本文基于ETCD的分布式高性能日志架构设计进行了研究,主要包括:(1)多协程List-Watch动态任务创建销毁;(2)消息队列中间件分级日志处理;(3)BuffioWrite落盘操作;(4)日志自动切割备份。2系统架构设计2.1分布式数据库ETCDE
12、TCD源于CoreOS团队2 0 13年的开源项目,它提供了一个分布式的key-value 存储的动态数据库。在ETCD中维护了一个“注册配置表”,通过Raft算法ETCD成为一个强一致性高可用的分布式数据库。它能达到每秒10 0 0 0 次的写入性能,单实例支持每秒2 k+的读操作,同时支持SSL证书,保证数据库的安全性。本文提出利用ETCD中List-Watch机制,动态监听集群中的日志配置。且存入ETCD中的格式主要为当前节点IP信息、日志topic信息、日志存放路径信息。当多个线程同时修改ETCD中的同一字段时,ETCD通过锁的机制实现多版本的并发控制。使得同时操作同一字结果具有唯一性
13、。在分布式系统中,ETCD利用Raft算法,通过选取领导者、跟随者、候选人三种状态,领导者在任期内获得大部分的投票,并将对应结果副本分发到每台机器上,使得对于高性能日志工具架构集群中相同操作具有分布式一致性。2.2多协程动态任务创建销毁在运维过程中,对于一台节点配置的动态修改往往需要多次跳板操作,若集群所有节点更新,便会需要在每一台节点上都进行,这样的操作给运维人员带来了很大不便。同时,对于微服务架构的现代分布式集群,配置更新服务部署日志收集难度会大大增加。常用的日志工具没有动态扩展的能力,如果需要新加入日志,须重新整套部署,本文基于现有的分布式集群,加入了动态任务创建与销毁的机制,从而大大减
14、少集群重复部署的操作。List-Watch1111如图1所示,当用户通过集群客户端,进行配置新增、修改、删除时,基本每一个节点都会监听自己的对应配置变化。以219张航等:分布式高性能日志架构设计与研究nodel为例,运维人员在集群中部署新业务时,分为两种情况:(1)单节点日志服务对于单节点日志服务时,运维人员连接ETCD,创建“索引节点日志”;配置日志“落盘策略”,将两条策略SET到ETCD集群中;按照对应日志等级选择不同的“落盘策略”;对分类管理的日志策略,配置日志生成的格式,默认以“日志生产的源地址”“日志等级”“日志类型”“日志时间”“日志内容”来创建日志格式;每台节点启动监听协程,根据
15、集群ETCD中配置变化,“匹配新的规则”;准备启动新的日志收集协程或删除原有日志收集协程;操作端更新日志收集服务结果;开始收集日志,并放入消息队列中间件中。(2)集群日志服务对于集群日志服务时,本文通过修改“共有配置”来实现服务的开闭;同单节点日志-步操作;集群日志后台,监听日志“共有配置”更新,进行开启或关闭操作;若开启状态,会实时地向InfluxDB数据库中发送实时数据;若关闭状态,会关闭对应收集日志协程,并同步日志状态。利用Go中Goroutine机制能够快速地开启协程,相比其他语言的并发操作来说,go在协程方面实现更加轻量级。同时,对于每次求改都会使用队列的方式,入队和出队的操作,实现
16、变化的优先级操作,并加入重试机制,以防止队列中的任务重复执行,减少日志反复监听,防止浪费机器性能。在日志传输过程中,日志是单向传输的,每一台机器上的日志都由一个协程进行传输。同时,日志并未直接落盘,而是通过分级操作输入到消息队列中间件中,等待消费者程序的消费操作。2.3日志分级收集模块对于普通日志,常见的业务运行所产生的日志只需存入当前节点。警告日志或更高级别的日志默认会通过LogAgent传输到消息队列中。LogAgent是当前集群中日志主要的生产者,它是一种轻量级的数据采集程序。主要包括两个组件log-collet、t a i l t a s k,并由用户配置策略实现特定的格式输出;logcol-lect主要用来监听ETCD集群中数据状态变化,并根据变化实现tailtask操作;而tailtask用于维护一个当前节点的配置hash表,如果新增配置,它会自动启动协程去读取对应的配置并发送到RabbitMQ集群中;如果删除配置,它会删除hash表中的数据,并关闭原有的收集程序,实现配置的灵活更新。List-Watch2List-Watch3T1个-图1多协程List-Watch动态创建