- 快捷搜索
- 全站搜索
日志文件是定位生产问题的重要依据,其可读性和检索便利性一定程度上决定着生产问题的解决速度。针对目前银行业面对的异构交易系统数量众多、系统日志数据量大、获取和分析日志信息困难、日志层次结构不清晰、各系统日志间无统一标准且缺乏串联等缺点,本文提出基于索引节点的异步分布式日志系统。通过系统结构化、索引化,实现对交易运行日志的快速定位与查询,从而降低信息系统的运维门槛,提高系统的运维质量。
一、三个关键技术
1.统一的索引标识
指应用服务器上的每一次交易都会在日志系统中生成唯一索引标识。该索引标识由交易特性组成,如交易日期、网点、流水号等,是确定交易活动的重要标识,也是日志完整性和连续性的重要保证。该标识贯穿交易始终,并通过记录该标识与日志服务器及日志文件位置的映射关系,达到方便快捷定位日志文件的具体位置,查询日志文件的相关内容。
2.异步消息模式
传统的同步日志模型中,交易流程与日志流程是同步进行的,日志服务调用没有成功返回前,交易不能往下执行。显然,当一个应用有大量日志信息,每一条日志信息都必须在下一个日志被处理前完成记录,其过程将相当耗时。一个通用的异步日志服务要把调用者(交易流程)和被调用者(日志流程)分开,调用者不再关心谁是被调用者,即交易进行过程中创建一个日志消息,交易流程发布这个消息到日志队列,一旦消息到达,交易流程会继续进行,而日志流程自动监听日志队列消息,并进行后续的日志处理。
3.分布式服务架构
为了增加与分布式交易系统的耦合性,提高日志系统的处理效率,日志系统采用分布式服务架构。分布式日志系统使得分布在网络上的多个节点服务器上的日志文件如同位于同一位置,以便于动态扩展和维护。所有节点服务器做统一的映射管理,每个服务器节点对应不同的日志消息队列,做到既能统一管理,又能区分不同。
二、日志系统设计实现方案
1.日志系统总体结构
基于索引节点的异步分布式日志系统主要对无序的日志记录进行归集整理,并将同一交易的日志信息通过统一的索引节点串联起来,供系统运维人员查询使用。系统主要分为索引服务器、节点服务器和查询客户端。索引服务器主要负责交易全局唯一索引信息的生成和统一管理、节点服务器注册。节点服务器主要负责登记、管理本节点上的日志信息,包括日志文件生成、日志文件路径登记、本次日志内容大小及在日志文件中的偏移量等信息。客户端主要负责日志查询——通过将用户输入的查询要素(交易日期、交易网点、交易流水号)转换为索引节点号,根据索引节点号查询日志所在节点及路径,然后根据路径上对应的文件位置、本次日志内容在日志文件中的偏移量等信息汇总该交易全部日志内容。
2.日志生成
(1)联机交易日志生成
对于日志系统接收到的每笔新联机交易,索引服务器都会根据交易特性,如交易网点、日期、流水号等信息生成该笔交易对应的唯一索引号,并会随机选择一服务节点作为该笔交易的日志文件所在地。为保证交易日志的完整性及连续性,系统中每个节点服务器均对应不同的消息队列,在交易流程结束前,该笔交易的所有日志消息均会发送到该消息队列。节点服务器的日志生成模块负责实时监控消息队列,并按交易的唯一索引号新建一临时缓存文件,并将收到的同一索引号的所有日志信息输出到该临时缓存文件中。每个临时缓存文件写完后,节点服务器会取出临时缓存文件内容,合并到以该笔交易为单位的日志文件中,并将该交易的索引号、日志文件路径、日志内容大小及在文件中的偏移量等信息登记到日志信息表中,同时删除临时缓存文件。联机交易的日志文件生成时序图如图1所示。

(2)多线程交易日志生成
多线程交易是联机交易的一种特殊形式,它把交易内容拆分成多个可并行的独立事务,每个事务新起一个独立子线程处理,处理完成后将结果汇总到主线程返回。对于每个子线程来说,日志记录是顺序的;而对于整个交易来说,子线程并发很容易造成子线程日志的互串。
为了避免上述问题,需要对多线程部分进行单独处理:对每个单独的子线程生成独立的唯一索引号,并登记各个子线程索引号与主线程索引号的对应关系,将子线程日志信息分别记录到各自的日志文件中,通过主线程交易日志索引即可把所有的子线程交易日志串联起来。改造后清晰的多线程交易日志流程如图2所示。

3.日志查询
运维人员登录日志查询客户端,输入交易要素,系统将输入的要素转成唯一索引,查询交易文件所在的节点服务器。如果是多线程交易,多线程日志节点上会出现子线程信息,每个子线程有单独的日志信息。根据节点服务器上登记的日志文件路径、内容大小及偏移量等信息,汇总节点服务器上相关日志信息,统一展示到日志查询客户端。
三、结束语
随着对基于索引节点的异步分布式日志系统的进一步开发,系统的性能、扩展性、可用性等方面将进一步完善。未来,如果能够定义一种统一的业务数据字典,通过日志系统对日志内容的标准解析,完全可以将日志系统演变成另一种意义上的数据源,为今后的大数据分析提供基础的数据支撑,关于这方面的研究我们会在后续的工作中继续探索。
(文章来源:《金融电子化》杂志)
ITIL是一套方法论,能为IT服务提供良好的指导思想,将工作中习惯的以技术为
农业银行高度重视信息化建设,近些年特别强化了安全生产工作,加强了IT运维