# LogService **Repository Path**: Ivanmax/LogService ## Basic Information - **Project Name**: LogService - **Description**: 日志服务系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-22 - **Last Updated**: 2023-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 统一日志服务 ## 描述 旨在提供统一的数据收集、清洗、存储服务,以减少重复功能的开发。业务端通过数据代理服务暂存数据,然后对数据压缩并发送给数据收集服务 数据收集服务经过校验后,把数据发送给Kafka缓冲层。数据清洗服务从Kafka缓冲层拉区数据并自定义清洗规则,然后把数据存入Kafka解耦层 最后Mysql服务端或者其他应用需要数据从Kafka解耦层拉取数据 ## 技术实现 把整套日志服务拆分多个组成部分:代理服务、收集服务、清洗服务、数据写入服务 使用了Swoole + Swoft 启动TCP 服务器和进程池,对数据进行接收和存储 使用Redis的队列作为基本异步队列,通过BRPOPLPUSH保证消息的可靠性,同时设置批量发送,对数据进行压缩 使用了Kafka作为数据缓存和队列,Kafka中的消费是基于拉模式的,可让让多个服务拉取数据 为数据清洗定义了一套规则,修复错误数据、转换数据的类型、通过雪花算法增加唯一ID等 使用水平分库的方法,为数据制定了入库方案 # 架构图 ## 基础架构 - ![基础架构](./images/日志服务架构图_1.png) ## 可扩展架构 - ![可扩展架构](./images/日志服务架构图_2.png) # 组件 | 组件名称 | 说明 | | --- | --- | | [benchmark](https://github.com/Ivanqi/benchmark) | TCP压测和数据伪造工具 | | [SnowflakeIdWorker](https://github.com/Ivanqi/SnowflakeIdWorker) | 基于雪花算法的唯一ID算法工具 | | [LogSdk](https://github.com/Ivanqi/LogSdk) | 客户端SDK | | [KafkaScriptCommand](https://github.com/Ivanqi/KafkaScriptCommand) | kafka脚本命令工具 | | [IAgent](https://github.com/Ivanqi/IAgent) | 服务代理 | | [ICollector](https://github.com/Ivanqi/ICollector) | 数据统一收集服务 | | [ICleaner](https://github.com/Ivanqi/ICleaner) | 数据清洗服务 | | [IMysqlloader](https://github.com/Ivanqi/IMysqlloader) | mysql入库服务 | # 功能说明 ## IAgent ![IAgent](./images/IAgent_1.png) ## ICollector ![ICollector](./images/ICollector_1.png) ## ICleaner ![ICleaner](./images/ICleaner_1.png) ## IMysqlloader ![IMysqlloader](./images/IMysqlloader_1.png)