高性能终端实时日志收集系统
背景在移动端的日常运营中,经常会遇到用户反馈APP出现功能性问题的情况,以往需要通过一系列询问,诸如手机型号、操作系统版本、复现的场景等信息,这一繁琐的过程不仅费时,还容易产生信息不完整或错误的问题,在尝试复现问题时也可能遇到困难,这种“盲目”排查问题的方式导致了问题解决的周期较长,也增加了沟通和理解的成本
项目目标与特点项目目标开发一个能提高问题解决效率的日志收集系统,包括服务端、管理端和AndroidSDK
主要特点
较高的可靠性:日志写入缓冲区后会立即回写到磁盘并记录位置,即使APP出现Crash或被强制关闭也不会丢失数据(会影响一些性能,也可手动切换为轮询方式定时将数据回写到磁盘,但在回写之前出现Crash等情况会丢失数据)
实时日志上报:实时日志用于记录精简的日志数据,通过短轮询方式上传到后台,以便能查看到接近实时的日志,快速定位问题
离线日志回捞:较为详细的日志数据应记录到离线日志中,后台下发回捞任务后,ZLogAndroidSDK会把该任务日期区间的日志文件打包上传到后台,由后台解析完日志文件后,再去排查和定位问题
加密存储和传输:存储到本地文件、上报实时日志时数据 ...
多人实时扫码点餐项目
前言在去年11月份公司凉凉被动辞职后,我没有着急去找下一份工作,而是想花几个月时间学习来提升自己,计划中包括了Go、Kotlin、Jetpack等,并准备做一个扫码点餐项目巩固一下所学知识
功能设计2022/01/10经过一段时间的学习后,大体确定了这个项目该实现什么功能
接口文档设计确定好功能后,针对这些功能设计了一下接口和数据库接口文档-商户端接口文档-用户端接口文档-超管端
架构设计架构图
服务端根据提供的服务进行了划分,文件服务提供文件的存储和读取,推送服务维护所有Socket连接,其他API请求均由常规服务处理
一些技术点
ETCD配置共享、服务注册发现(监控所有服务上下线,动态配置Nginx,保证每个节点都是有效的)、分布式锁(下单时校验指定菜品库存等场景使用)
Kafka日志收集,后期可用ElasticSearch+Kibina做数据可视化和分析
Redis临时存储购物车中的商品信息,下单或加餐前的数据使用Redis进行存储
Nginx实现反向代理和负载均衡,特定匹配的将转发到指定服务器(比如推送绑定需要转到IM服务器,文件需要转到文件服务器)
开发 ...