巅峰战队|PowerJob日志饱受好评的秘诀:小但实用的分布式日志系统( 三 )
3.3 存储与排序引入 H2 之后 , powerjob-server 处理在线日志的流程如下:
- 接收来自 worker 的日志数据 , 直接写入内嵌数据库 H2 中
- 在线调用时 , 通过 SQL 查询语句的 order by log_time 功能 , 完成日志的排序和输出
四、一些其他的优化以上介绍了 PowerJob 分布式日志组件的核心原理和实现 , 当然 , 在实际使用中 , 还引入了许多优化 , 限于篇幅 , 这里简单提一下 , 有兴趣的同学可以自己去看源码~
- 高频率在线访问降压:如果每次用户查看日志 , 都需要从数据库中查询并输出 , 这个效率和速度都会非常慢 。 毕竟当数据量达到一定程度时 , 光是磁盘 I/O 就得花去不少时间 。 因此 , powerjob-server 会为每次查询生成缓存文件 , 一定时间范围内的日志查询 , 会通过文件缓存直接返回 , 而不是每次都走 DB 查询方案 。
- 日志分页:成百上千万条数据的背后 , 生成的文件大小也以及远远高于正常网络带宽所能轻松承载的范围了 。 因此 , 为了在前端控制台快速显示在线日志 , 需要引入分页功能 , 一次显示部分日志数据 。 这也是一项较为复杂的文件操作 。
- 远程存储:所有日志都存在 server 本地显然不符合高可用的设计目标 , 毕竟换一台 server 就意味着所有的日志数据都丢了 , 因此 PowerJob 引入了 mongoDB 作为日志的持久化存储介质 。 mongodb 支持用户直接使用其底层的分布式文件系统 GridFS , 经过我仔细的考量 , 认为这是一个可接受且较为强大的扩展依赖 , 因此选择引入 。
那么我们下期再见喽~
推荐阅读
- 大河客户端|布局战队,导师各有妙招,《2020中国好声音》收视率蝉联第一
- 周到|“好声音”蝉联省级卫视综艺节目收视第一,首迎抢位战导师布局战队各有妙招
- 综艺|靠师兄“上位”,出道即巅峰,她光环加身却依旧是糊咖
- 王者荣耀|王者重开机制揭秘:钻石段位以上必看,五战士,四辅助可重开,巅峰赛不能
- 杜兰特|83投60中!比巅峰杜兰特还强,季后赛最强球星出现了
- 青年|射手梯度排名更新,又一无解T0诞生,张大仙我愿称他为射手巅峰
- 通天战队|A股最励志闻泰科技!给华为小米打工到半导体巨头,半年赚17亿
- 标致|困境中的最后一搏,标致全新3008来了,网友:重回巅峰有望了!
- |《街舞3》火舞台battle开启 钟汉良战队团魂之力势不可挡
- |《这!就是街舞》第三季火舞台热力喷发,队长领衔齐舞大秀燃炸战队之魂
