simplicity is prerequisite for reliability

之前把博客从 Alibaba Cloud 迁移到 Google Cloud 之后,页面访问速度下降了一两倍,虽然我并不太在意页面访问速度,但还是能感觉到明显的延迟,毕竟虚拟机的物理位置从香港跑到了美西,RTT 翻倍是逃不掉的。延迟增大之后我访问后台的等待时间也变长了,这一点我还是比较在意的,但是也懒得把博客迁移回去了,将就将就也还好。

Read More...

这大约是一年之前的故事了。那时我图样图森破,由于各种各样的原因,用 Vert.x 框架写了一个充斥着反模式的消息队列。那时的我刚来到阿里云,唯一擅长的架构就是无状态的系统,数据全扔数据库里,数据库前面挡一层缓存,应用服务器完全对等水平扩缩容那种。Vert.x 也是我第一次用,完全异步的开发模式把我折腾坏了,即使用了 RxJava 成功规避了回调地狱,但也深深感受到用异步框架开发复杂业务基本是痴心妄想。

Read More...

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

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

Read More...

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

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

Read More...

在上一篇博客「重返 Linux 世界」中,我说 Linux Mint 17.2 的登陆界面比之前的要好看不少。作为佐证,我贴了一张 Linux Mint 登陆界面的截图。

在日常使用中,我们的截图操作都是在登陆系统之后进行的,比如捕获一个窗口,捕获指定区域,或者捕获整个网页。要给登陆界面截图,那是在登陆之前就要做的操作,这可难倒我了。

Read More...

入职以来一直用自己的 MacBook Pro 来为公司工作,最近却整出了个强制安装杀毒软件的事情,我觉得是时候对自己的电脑好一点了。上帝的归上帝,凯撒的归凯撒,自己的净土必须自己来守护,以后就用 Linux 来为公司工作。

You can you use Linux, no can no bb。从某种意义上来说,公司还蛮宽容的,给不愿意安装杀毒软件的开发狗们留了一条生路,虽然这条路对于大多数开发狗并不好走。毕竟不是所有的开发狗都像我一样在大学期间把 Linux 当做日常系统来使用的(捂脸逃

Read More...

最近开始使用 Tmux 之后,感觉还是在服务器上才能发挥出 Tmux 的价值。可惜的是公司的服务器上没有安装 Tmux,跳板机上我也只有普通用户权限,没法安装软件,于是我琢磨着从源码编译一个。

Tmux 唯一的依赖是 libevent,所以我需要先把它编译出来。之前我编译软件之后都是直接使用 root 权限,如今没有了 root 权限,安装软件都成了让我拙计的事情。

Read More...

最近有一天在半睡半醒间折腾应用的部署脚本,折腾好了天也亮了。期间顺便折腾了一下 Tmux 和 Luit,弄了一套勉强可用的 Tmux 配置出来。

Tmux 一般都是安装在服务器使用才能发挥最大效用,本地使用的话,似乎只能当作一个终端复用的工具,对效率没有太明显的提升。

Read More...

这两天有几个同事在部署新应用的时候遇到了阻碍,师兄让我去帮忙看看。

一开始我以为是新应用的工程结构不符合集团的部署规范。一番折腾无果之后我给重新搭建了一套,然后把代码迁移过去。然而并没有什么用处。

因为一开始想错了方向,我们折腾了一天才确认是内存不足,只好联系管理开发环境的同事分配更大内存的机器,然后应用终于部署起来了。

Read More...