更新日志 | 简书小工具集 v1.3.0

说起来,距离简书小工具集的上一次更新,已经有三个多月了。

这段时间,我一直在思考,应该增加什么新功能,才能最大程度满足大家的需要。

但前几天我偶然查看服务器状态时,发现这个服务占用的内存有点不符合它的体量。

作为一个无状态、仅仅提供几个网页服务的应用,它的内存占用甚至超过了风语。

要知道,风语是一个涵盖网页服务、数据采集、数据分析、任务调度、服务监控的应用,而且由于开发时间不充裕,并没有针对资源用量做优化。

看来,要对这个服务进行一些优化了,但在阐述优化思路之前,还是先看看这个版本有什么变动吧。

哦对,点击链接访问“简书小工具集”:http://120.27.239.120:8602

画图库更改为 Pyecharts

在 v1.3.0 之前,简书小工具集中的图表使用的是一个叫做 Plotly 的库,这个库的资源文件地址在国内不太稳定,导致经常有用户反映看不到图表。

另外,这个库对客户端的内存占用量也比较大,等到越来越多的服务模块加入,有大量数据展示的需求时,这个库就不太够用了。

经过一番探索,我们选择了 Pyecharts 作为替代方案。

现在,用户资产查询工具的图表是这样的:

[图片上传失败...(image-196eec-1653061439984)]

也许你已经发现了,鼠标悬浮在图表上方可以查看对应类别的详细信息。

性能优化

其实每个版本或多或少都会有性能优化,但这个版本的优化是大家能明显感觉到的。

给大家看一眼提交记录(红色删除,绿色增加,单位是代码行数):

[图片上传失败...(image-308284-1653061439984)]

其实几乎每个模块我们都做了优化。

这次优化中,性能提升最大的是消零派辅助工具,100 条记录的情况下,数据获取时间从原先的近 10 秒提升到 4 秒。

这一模块最耗时的部分是数据获取,以前的流程大概是这样的:

  • 从每个选择的专题中获取一定量数据
  • 进行数据格式转化,使其便于处理
  • 对数据应用筛选条件(点赞量、评论量等)
  • 取前 n 条数据(n 为设置的结果数量)
  • 返回数据,进入展示阶段

现在的逻辑是这样的:

  • 从每个选择的专题中获取一定量数据,在获取数据的过程中
    • 进行筛选,如果满足所有条件,则将这条数据加入展示列表
    • 对展示列表长度进行判断,如果已达到结果数量,则停止数据获取
  • 返回数据,进入展示阶段

很明显,优化后的逻辑大大减少了网络请求的次数,同时也在一定程度上降低了这一模块的内存占用。

稳定性优化

同样的,每个版本都或多或少有稳定性优化,但这个版本的稳定性可以说得到了非常大的提升,因为我们使用了容器部署。

这也是我们所有项目中,第一个使用容器部署的服务。

如果你没做过开发(或者是前端),可能不知道什么是容器,简单来说,容器就是一个虚拟机,其中运行着完整的操作系统,当然,我们也可以在上面运行程序。

那为什么容器部署提升了稳定性呢?

首先,它大大降低了由于依赖环境导致的问题,本地和服务器上的环境可以完全一致。

其次,容器是可以集中管理的,可以设置在崩溃后自动重启,或者指定它能占用的资源上限,避免一个服务出现问题影响到其它服务。

最后,容器环境与外部是隔离的,即使我在容器内执行了 sudo rm -rf /*,容器外也是平安无事,只需重新创建一个容器,服务就会恢复。

面向开发者的变动

这些是简书小工具集背后的变动,用户感知不强。

  • 服务端口现在可以在配置文件中设置
  • 依赖管理工具由 Pipenv 更换为 Poetry
  • 使用 JRT 的面向对象封装重写部分逻辑
  • 将服务列表抽取为常量
  • 移除了 PandasPlotlyWordCloud 三个依赖

一些技术思路

为什么要选择 Pyecharts 作为替代品

Plotly 曾是我做数据分析时很常用的画图工具,当数据量达到几万时,绘制几张简单的图表后,VS Code 的内存占用就达到了 2.5GB 甚至更高。

当然,基于 Election 的软件本质上是网页,内存占用比较大是正常的,但当我写下这篇文章时,我的 VS Code 同时打开了创作文件夹和简书小工具集的项目文件夹,内存占用是这样的:

[图片上传失败...(image-b2ca07-1653061439984)]

使用过 VS Code 的小伙伴知道,VS Code 强大的功能很大程度上依赖于插件实现,而在简书小工具集的项目文件夹中,我启用了这些插件:

[图片上传失败...(image-48e7a9-1653061439984)]

所以,Plotly 真就一张图顶五个插件的内存占用。

为什么用 Poetry 替代 Pipenv

首先,Pipfile 过时了,pyproject.toml 是现在推荐的依赖管理文件。

其次,Pipenv 的依赖安装实在太慢了,每次添加依赖都要运行一次 lock 生成哈希值,而且不知道是不是我的配置问题,我执行 pipenv shell 后进入的终端环境不能通过上下键查看历史命令。

最后,Poetry 同时支持项目管理、依赖管理、打包发布,不需要我手动 build,一行命令就可以生成 .whl 文件并上传到 Pypi。虽然这个项目用不到,但只用一个工具解决三个痛点绝对值得。

我推荐大家去尝试一下 Poetry

为什么用这个项目作为容器部署的尝试

这个项目的访问量不算很大,一旦出现问题,可以立刻切换到原先的版本,毕竟我接触容器部署的时间不长,不敢保证第一次部署就能成功。

另外,这是一个无状态的服务,不需要挂载目录,依赖也比较简单,其实我干掉 PandasPlotly 这两个大头,有一部分考虑就是缩减镜像体积。

不过部署之后发现服务完全正常,内存占用也没有超出限制,我直接删掉了原先版本的目录,然后看了一会 podman stats,就放心做其它事去了。

至于为什么不用 Docker,首先,Podman 没有守护进程,资源占用也比 Docker 少一点、,再加上两者的镜像和大部分命令可以通用,并且有些 Linux 发行版已经默认安装了 Podman,我认为这是一种趋势。

关于这个系列

每当有服务发布新的功能版本时,我都会发一篇更新日志,讲讲新版本的变化,以及我的实现思路。

还是老样子,技术人去 GitHub Repo 开 Issue,非技术人发评论,其乐融融。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容