Simplicity is prerequisite for reliability

前几天同事来找我看一个问题,说是一个 Python 进程完全堵住了。从日志来看确实是堵住了,卡在了一个奇怪的地方:尝试获取文件锁。比较悲催的是这段堵住的代码是我写的,简单地包装了一下领域相关的 Cgroups 操作和一些目录、权限的创建和回收。之前这份差事在我眼中属于「无聊的日常」。

工作并不总是充满挑战和乐趣,正因为大部分工作都是无聊的日常和琐碎的协作,有时候还有无奈的填坑和妥协的背锅,挑战和乐趣才显得难能可贵。

Read More...

前几天 Google Cloud 放出了一个号称 Always Free 的套餐,除了一个乞丐版的计算节点(1 Core 0.6G RAM 30G HDD),还有其他一系列的体验容量。资本主义的羊毛还是得好好薅一把,于是我果断注册了一发。

实测 us-west1-a 可用区的机器,到杭州电信的 RTT 大约在 300ms,作为博客机器还是勉强可以在 2s 左右打开网页的。其实现在我已经不像刚开始写博客那会那么关注博客的加载速度了,因为我相信人们并不会因为我的博客能秒开而访问它,人们访问它是因为它的内容有价值。

Read More...

我,一个 Java 的忠粉,前些日子也不得不开始用 Golang 写一些东西,原因其实很简单,语言也好信仰也好,都敌不过一个基本实现需求的能够为我节省大量代码的开源软件。

一年之前第一次值班,被各种问题弄得焦头烂额,当时就想着要是有个系统,能把生产系统中正在发生的各种问题以告警的方式给出来,同时附带解决方案该多好。当时也是初生牛犊不怕虎,值班日报里随即把基于日志采集实现业务监控、可视化的方案说了一通,复用阿里云的各种基础设施,也许只要数天就能搭建一套完备的日志采集、存储、分析、可视化、告警体系。

Read More...

17 年初的时候统计了一下我在 16 年读完的书,大约五十多本,平均下来一周至少一本,个人对这个结果还是比较满意的。

大约从去年四月开始,因为几个月后公司要搬家,我也为了上班方便,要搬到公司新址附近住下。清点个人物品的时候,发现了书架上满满两层的图书,当然是以计算机领域的图书为主,辅以畅销的比如「精进:如何成为一个很厉害的人」之类的成功学毒物。

Read More...

做分布式系统的人都知道大名鼎鼎的 CAP 定理,这个定理仿佛一个巨大的枷锁,套在了每一个分布式系统的开发者身上。前些日子我实现了一个 AP 的分布式系统,也就是说发生网络分区(P)的时候,系统会自动分裂成两部分各自独立工作,而不是像 ZooKeeper 或者 etcd 这种 CP 系统在网络分区之后少数派降级不工作。

为了验证系统在网络分区时的行为是否符合预期,我需要做个故障模拟,在本地搭建一个 Linux 集群,然后用 iptables 丢弃指定来源的包人工制造出网络分区的效果。

Read More...

前些日子我对 Grav Admin 的访问速度感到很不满意,经常打开 Dashboard 页面就给我来个 504 Gateway Timeout,不得不再刷新一次才能正常访问;甚至有一次我在编辑页面写了一大段文字之后,保存失败导致内容丢失,后来尝试再写也没法补全丢失的内容。这份不愉快让我萌生了寻找一个更厉害的博客引擎的念头。

但是基本上 Grav 已经是 2016 年最棒的开源 CMS 了,也就是说综合各个方面因素,没有什么比它更好的 CMS 可供选择。失望之余不免产生想要亲自动手造一个轮子,但是考虑到我已经废弃了原本就不怎么突出的前端能力,如今的我已经对实现一个靠谱的博客后台力不从心,这些冲动最终也只是想想而已。

Read More...

许久之前我分享了一个在 Hexo 博客中制作照片流的方法,至今这个照片流已经成为了我的博客中更新最频繁的页面,承载着我对那些曾经浪费我生命的美好事物的回忆,一开始是书籍和动漫、电影等影视作品,如今还多了个游戏,毕竟游戏继电影之后,也被归为艺术之列,号称「第九艺术」。

我对照片流这个功能是如此的喜爱,以至于我将博客从 Hexo 迁移到 Grav 之后,之前为 Hexo 开发的几个插件都被我放弃了,唯一一个被我移植到 Grav 上的,就是照片流。当然也有一部分原因是移植照片流的工作十分简单,以至于我只需要借助 Twig 模板的宏定义功能就能轻松搞定。

Read More...

要说 2016 年我在技术上的最大的收获,当属心态发生了转变。在此之前,我在技术上没有一个明确钻研方向,为了解决问题嘛,碰到什么问题就搞定什么问题,一时半会搞不定就绕过去,也能获得很好的结果。到头来却是,我成了一个「全栈」工程师,不知道我真实水平的人以为我能力很好,什么烫手山芋交给我都能得到超出预期的好结果。我自己却感觉到彷徨和困惑:几年之后,人们提起我的时候,想到的是一个干活很靠谱的全栈,还是一个别的什么?

Read More...

最近几周一直在魔改一个重要的生产系统,给这个系统加上了一个嵌入式的关系数据库,在内存中缓存一些结构化的数据,使得应用在和数据库之间发生网络隔离的时候也能做一些关键操作。既然是缓存就会涉及到缓存失效、同步、一致性等一系列问题,好在我可以充分利用业务特性来实现最终一致性,但是还是在数据同步上遇到了一个有趣的问题:如何将数据库中有记录被删除这件事情通知到应用,使得缓存中的相关记录也被删除?

Read More...

网易又双叒叕打造了一款厉害的游戏,我自然也不能免俗下载体验了一番这款名为「阴阳师」的「国民手游」,并首次在其中体验了网游氪金的快感。

前些日子我知道这个游戏,但是由于我一直没有玩网游的习惯和精力,也就一直没有想过要体验一番。后来认识的一些朋友开始在社交网络上各种晒姑获鸟,各种吸欧气,看得我心中长草。因为不知道「吸欧气」是什么鬼,我还专门学习了一个提高了姿势水平,还学到了「玄不救非,氪不改命」这句箴言。学习完之后就开始玩阴阳师了,毕竟也想看看自己到底是欧洲人还是非洲人。

Read More...