Go 在只读高并发场景下的优化
距离决定用 FastAPI 重写 Flask 应用已经过去了一年了, 年中的时候在 FastAPI 上尝试了很多性能优化方案,但机器的负载水平已经快到头了, 只能承认这条路走不通,需要换一个快得多语言来做。 决定用 Go 再重写,又经历了若干次的优化,目前已经稳定运行。 线上峰值 QPS 接近 10K,应用内统计延迟在 2ms 之内,依赖服务统计延迟在 13ms 左右。 记录下若干有意思的事情。 ...
距离决定用 FastAPI 重写 Flask 应用已经过去了一年了, 年中的时候在 FastAPI 上尝试了很多性能优化方案,但机器的负载水平已经快到头了, 只能承认这条路走不通,需要换一个快得多语言来做。 决定用 Go 再重写,又经历了若干次的优化,目前已经稳定运行。 线上峰值 QPS 接近 10K,应用内统计延迟在 2ms 之内,依赖服务统计延迟在 13ms 左右。 记录下若干有意思的事情。 ...
2019 年的时候想学 Go 的动力来自看到了这个仓库 schachmat/wego 可以在命令行里看天气。 2021 年用了点业余时间终于搞出来了 caiyunapp/wego。 到 dashboard.caiyunapp.com 注册账号申请一个 Token, 然后按照提示配置下 ~/.wegorc 里的 API Token 和经纬度即可。 ...
H3 从开始浏览相关资料到生产环境使用有一年多时间了,发现了一些有意思的用法,在这里记录若干参考资料。
警告 ...
2020-01-23 草稿添加到博客,2023-03-12 恢复发布(Hugo 迁移过程遗漏)。 以此文纪念被偷走的三年时光。 有好几个礼拜,我们不得不一再重写同一封信,重抄同样的消息,同样的呼唤,这一来,一段时间过后,原本出自肺腑的话语竟变得空空洞洞了。但我们仍旧不由自主地抄了又抄,总想通过那些毫无生气的句子提供我们艰难生活的音讯。 ...
1 写于 2019-10-19,发表于 2019-12-28 2019 年 9 月末,我的电脑坏了,被迫临时使用 iPad 工作。在此记录一下想法。 硬件信息: iPad Pro 10.5 Smart Keyboard HHKB Professional BT 软件: Blink Working Copy iA Writer Drafts 系统: iOS 13.1 开发工作 由于开发工作不涉及本地环境,所以我只要全程 SSH,使用 tmux 和 vim 进行开发。iPadOS 上的终端工具我尝试过一些:Textastic, Code Editor (Coda), Blink 等。在这其中,我最喜欢的是 Blink 这个工具,足够简单,基本功能又够用: ...
在 Apple 官网上,有这么一份文档,指导了如何对调系统键盘的 Control 和 Caps。这么做的好处: 方便使用 Emacs,以及在所有支持使用 Emacs 风格快捷键的地方,比如 Safari 浏览器以及各种写作软件 Vim 中使用 Control 不依赖第三方 App 的情况下,舒服地切换 macOS 输入法,使用 Control + Space。就我的使用而言,比使用 Caps 要更稳定,自 Mojave 以来使用 Cpas 切换输入法时常出现不灵的现象
国内分钟级降水预报做得比较好的是彩云天气,但是 App 在 iPad 上尚不支持横屏与键盘快捷键。所以有时候想看是否降水要打开 App,体验是不怎么好的。好在彩云天气有大量的数据 API 提供给了开发者,并且仅仅用其中最简单的一些,就能得到和彩云天气自家 App 一样的降水预报功能(受限于设备无法实现降水事件的主动推送)。 ...
这阵子做的工作主要和性能优化有关,之前的一篇谈了如何获得采样数据,这里保存一些测试和采样的记录。
在 Python3.7 环境下,Uber 开源的 PyFlame 无法使用,而在容器环境中,py-spy 又有诡异的问题。考量各种「采样」工具后,发现只有内置的 cProfile 才是稳定、可靠的。 但是对于复杂的 Flask App,大量使用 cProfile 执行采样非常不方便。本文将给出一个在 Python3.7 的容器环境下经测试可以正常工作的例子。原理是在 app 初始化后,添加 werkzeug ProfilerMiddleware(也许可以翻译成采样中间件)。 ...