工程上的一些想法

由于过往的各种条件限制,如数据库性能不够、PaaS 平台功能不足、对特定领域的问题理解不充分,线上的服务一定会有很多妥协解决方案。这些问题不会让服务彻底不可用,但一定会困扰团队,容易让人担忧系统的可靠性。特别是提供 toB 服务而言可靠性与准确性是一样重要的。

Read more

两个历史时期

看的书不多,在了解到的中国历史有两段我觉得称得上典型的时期,一个乱世,一个在某些人看来「有点乱」。

第一个是北宋末年的汴京之围

《汴京之围》:

在北宋的朝廷内,随着勤王军队的到来,那些求和的大臣也在加紧行动。如果金军最终被勤王军击溃,就意味着他们主持的求和工作是错误的,这些大臣很可能被愤怒的群众撕成碎片。只有让金军尽早离开,才能证明他们的求和是正确的,不需要承担责任。因此,北宋君臣也越来越配合金军的赔款移交工作。

Read more

使用「Cheap Ruler」进行快速测地线逼近

提示

AQI 如何计算的

具体计算策略本质上是根据某一个变量(如二氧化氮)的观测值,找到对应的污染物区间及对应的 IAQI 区间, 做一次线性插值,得到对应的变量的 IAQI。 所有的 IAQI 取最大值就是 AQI。

Read more

Go 里聚合数据批量处理

好奇想试下能否实现聚合一些数据然后再处理,情况是:

  1. 有多个生产者在生产数据;
  2. 消费者尽量批量处理,比如一个批次是 10;
  3. 有个最小处理时间间隔, 比如生产者有 20ms 没有添加任务了,需要把积累的数据(如有 6 个)推到 out chan 中; 如果没有积累的数据就继续空转;

基本实现:

Read more

Go 在只读高并发场景下的优化

距离决定用 FastAPI 重写 Flask 应用已经过去了一年了, 年中的时候在 FastAPI 上尝试了很多性能优化方案,但机器的负载水平已经快到头了, 只能承认这条路走不通,需要换一个快得多语言来做。 决定用 Go 再重写,又经历了若干次的优化,目前已经稳定运行。 线上峰值 QPS 接近 10K,应用内统计延迟在 2ms 之内,依赖服务统计延迟在 13ms 左右。 记录下若干有意思的事情。

Read more