【鱼皮的打工日记】20220629
今天也是比较理想的工作状态,早上边吃早饭边看 PostgreSQL 数据库优化相关的文章,十点前准时开工。
上午主要是做新需求 + 改 Bug,下午则是一边等待脚本的执行一边思考系统的优化。
昨天和前天主要是针对接口性能的优化,今天我则是在研究同类 BI 系统的架构设计,比如国外的 Apache Superset(之前 B 站演示过如何搭建)以及我们公司内部其他团队自研的系统。对比下来,其实现在我负责的 BI 系统已经有了很多其他系统没有的定制化功能了(毕竟是内部系统),之前在开发这些功能的时候,我也有借鉴其他知名的 BI 产品,比如微软的 Power BI,并且在他们的基础上做了一些改造,使得更贴合我们的业务。建议大家在开发系统时也要这么做,哪怕你有想法,也可以多参考同类产品的功能和方案。
在看其他系统的架构设计文档时,每看到一个知识点,我都会把它记录下来,并且思考能否在自己的系统中进行应用、如何更好的运用。举个例子,缓存预热,就是说可以在用户打开系统查看数据前就把数据查询出来并进行缓存,而不是等到用户访问才缓存,从而大幅提高用户首次打开系统的速度。但是你不能直接把这个功能盲目上线,而是要进一步思考:可以把所有数据都进行预热么?Redis 缓存的容量足够么?如果不够,应该对哪些数据进行缓存预热呢?等等问题。
于是接下来我就去查看 Redis 的总容量、近期的平均空间占用,并且结合当前系统的用户数、数据量去进行综合评估,再去做进一步的方案设计。最后不出所料,果然没办法把所有数据都提前缓存(不确定的查询太多了),因此我决定先从高频访问的看板下手,通过分布式配置中心动态指定预刷缓存的看板范围以及缓存过期时间,而不是直接写死代码。之后只需要改配置就能对更多看板进行缓存预刷了。
知识就分享到这里。其实最近我也比较迷茫了,工位都堆了好几本书了,一直没时间认真研究。有 Linux 的、有高并发的、有数据库的、有 Go 语言的,其实我都想学,但时间不允许,再加上工作中都一般都不会直接用到这些进阶的东西,所以我比较纠结接下来先学哪个,感觉编程真的是一辈子都学不完。。。
最后我还是决定先去看一些系统设计方面的学习资源吧,打算到极客时间上学点儿大佬的方案。今天晚上就先学它一个小时,争取 0 点 30 睡觉,提前跟大家说晚安啦~
