服务网关产品(三)日志处理

日志是网关的重要组成部分,所产生的数据可用于信息留存,安全审计,数据分析等众多方向,由于调用频次高,作用时间长,信息量很大。因此,网关日志信息的采集与存储。

审计日志处理.png

  网关担任着转发的功能,是对外提供服务的唯一出口,调用性能将直接影响整个平台的体验,对于性能要求很高,为此,认证与鉴权信息我们使用xxl-job配置了定时任务,定时刷新认证信息与直接写入redis内存数据库中,再用reids的认证信息请求,若被拒绝则重新调用接口刷新redis中信息,提高网关性能。但日志数据量较大,不易写入内存数据库,但直接使用mysql等关系型数据库记录日志信息,会写崩数据库,因此首先我们采用异步处理日志数据的写入,同时使用kafka消息队列处理,再写入mysql中进行持久化,或者将kafka作为存储中间件,存在kafka中等待其他应用消费。其次,由kafka作为流处理中间件与sparkstreaming/flink等流处理中间件整合,可以将日志数据以流的形式传入中间件中进行流处理。为了网关专注于网关功能,将业务性操作独立出来,我们搭配了servic-service工程。service-service负责认证数据的写入redis,刷新认证秘钥数据,对外提供网关的供需接口,数据修改接口等功能。
  redis数据库稳定性相对较低,在各个项目的系统运行过程中redis的崩溃概率明显高于普通关系型数据库,因此在redis数据存储的数据,要进行持久化,且redis数量级达到一定程度后,性能下降严重(目前正在思考问题)。
  日志信息数据量较大,在我们初级的业务场景中,主要涉及到的日志数据的查询与简单统计,1.0版本我们使用的mysql数据库直接存储,2.0版本上我们引入了ElasticSearch作为数据的检索工具,3.0版本引入流处理中间件进行数据的实时处理。

我认为开源组件越来越多,越来越优秀

对网关每一行代码的慎重处理

是保持网关高性能的关键,也是我们进步的关键

你可能感兴趣的:(服务网关产品(三)日志处理)