一、关键技术
1. 索引标识技术:
在异步分布式日志系统中,每一次交易都会在日志系统中生成一个唯一的索引标识。这个索引标识是由交易特性组成的,如交易日期、网点、流水号等,它是确定交易活动的重要标识,也是日志完整性和连续性的重要保证。这个标识贯穿交易始终,并且通过记录这个标识与日志服务器及日志文件位置的映射关系,方便快捷地定位日志文件的具体位置,查询日志文件的相关内容。
2. 异步日志模型:
在传统的同步日志模型中,交易流程与日志流程是同步进行的,日志服务调用没有成功返回前,交易不能往下执行。这在处理大量日志信息时,会相当耗时。而异步日志模型将调用者(交易流程)和被调用者(日志流程)分开,交易进行过程中创建一个日志消息,交易流程发布这个消息到日志队列,一旦消息到达,交易流程会继续进行,而日志流程自动监听日志队列消息,并进行后续的日志处理。
3. 分布式服务架构:
为了增加与分布式交易系统的耦合性,提高日志系统的处理效率,日志系统采用分布式服务架构。这种架构使得分布在网络上的多个节点服务器上的日志文件如同位于同一位置,便于动态扩展和维护。所有节点服务器做统一的映射管理,每个服务器节点对应不同的日志消息队列,既能统一管理,又能区分不同。
二、系统设计实现方案
1. 系统总体架构:
基于索引节点的异步分布式日志系统主要对无序的日志记录进行归集整理,并将同一交易的日志信息通过统一的索引节点串联起来,供系统运维人员查询使用。系统主要分为索引服务器、节点服务器和查询客户端。索引服务器主要负责交易全局唯一索引信息的生成和统一管理、节点服务器注册。节点服务器主要负责登记、管理本节点上的日志信息,包括日志文件生成、日志文件路径登记、本次日志内容大小及在日志文件中的偏移量等信息。客户端主要负责日志查询——通过将用户输入的查询要素(交易日期、交易网点、交易流水号)转换为索引节点号,根据索引节点号查询日志所在节点及路径,然后根据路径上对应文件位置、本次日志内容在日志文件中的偏移量等信息汇总该交易全部日志内容。
2. 系统实现过程:
对于日志系统接收到的每笔新联机交易,索引服务器都会根据交易特性,如交易网点、日期、流水号等信息生成该笔交易对应的唯一索引号,并会随机选择一服务节点作为该笔交易的日志文件所在地。为保证交易日志的完整性和连续性,系统中每个节点服务器均对应不同的消息队列,在交易流程结束前,该笔交易的所有日志消息均会发送到该消息队列。节点服务器的日志生成模块负责实时监控消息队列,并按交易的唯一索引号新建一临时缓存文件,并将收到的同一索引号的所有日志信息输出到该临时缓存文件中。每个临时缓存文件写完后,节点服务器会取出临时缓存文件内容,合并到以该笔交易为单位的日志文件中,并将该交易的索引号、日志文件路径、日志内容大小及在文件中的偏移量等信息登记到日志信息表中,同时删除临时缓存文件。
三、多线程交易日志生成
多线程交易是联机交易的一种特殊形式,它将交易内容拆分成多个可并行的独立事务,每个事务新起一个独立子线程处理,处理完成后将结果汇总到主线程返回。这种交易方式可以大大提升交易处理的效率,但同时也对日志系统提出了更高的要求。在这种情况下,日志系统需要能够支持并行处理多个日志消息,同时保证日志的完整性和一致性。
四、日志文件的生成与管理
在索引节点的异步分布式日志系统中,日志文件的生成和管理是系统的重要组成部分。日志文件的生成主要由节点服务器完成,它需要监控消息队列,根据交易的唯一索引号新建临时缓存文件,并将收到的日志信息输出到这个临时缓存文件中。每个临时缓存文件写完后,节点服务器会取出临时缓存文件内容,合并到以该笔交易为单位的日志文件中,并登记相关信息到日志信息表中,最后删除临时缓存文件。通过这种方式,系统可以确保日志文件的内容是完整和连续的,同时也方便运维人员进行查询和分析。
五、异步分布式日志系统的应用场景
这种基于索引节点的异步分布式日志系统特别适用于需要处理大量日志数据、需要进行实时监控和分析的场景,如银行业、金融交易、电子商务、网络服务等行业。这种系统可以帮助企业快速定位和查询交易运行日志,降低信息系统的运维门槛,提高系统的运维质量。