pass - the standard unix password manager
Pass 是一款尝试拥抱 Unix 哲学的密码管理软件,可在 linux/osx/ios/android 下使用。它使用 gpg 加密密码,它的好处是可以用命令行工具快速获取或者更新密码。
# OS X 上安装
brew install pass
# 初始化
pass init "Your Master Key"
# 新建密码
pass insert Email/example.org
# 生成密码
pass insert Email/example.org 15
# 显示密码
pass Email/example.org
# 复制密码
pass -c Email/example …
Google SRE Book 第 22 章 - Addressing Cascading Failures
本文描述了 Cascading Failures 是什么,为什么产生,产生时有什么现象,以及如何防止它产生。
- Cascading failure: 一个大系统中的小部分失效,最终导致了系统中其它很多地方级联失效。
- 过载(overload): 最常见的原因。
- 资源耗尽:会导致高延迟,错误率升高;而这一系列会导致系统处理能力降低,进而导致资源被耗的更多,直到最后冲垮系统。这些资源可以是 cpu, ram, thread, fd。有的时候很难看出什么资源耗尽,因为资源是在慢慢地全盘耗尽。值得注意的是,资源耗尽会导致健康请求失败,负载均衡也会掺合一脚把服务移除进而导致服务池子扛不住流量。
- 防止过载:首先心里要有数 - 做压测+线上预留多余的资源;然后第一原则是留着青山在宁愿拒绝服务也要保障服务或者 - 提供 degraded 数据给下游;让服务能发现自己过载了然后拒绝服务;Instrument higher-level 系统然后在系统处理能力变低的时候做 rate limit。此外,retry 要算好间隔,要符合server的retry budget …
Netflix 将故障恢复从 45min 降至 7min
本文介绍了 Netflix 的新老两套 failover 系统。故事还是从 2012 年的那场殃及全美的 AWS LB 故障说起,他们痛定思痛,决定做 Failover。思路当然还是异地容灾。他们扩展到 US 两个,EU 一个 AWS regions。
- 45 分钟的玩法
- 使用 Business Metric 检测系统有没有坏掉,同时比对一天,一周前数据有没有异常。
- 在另外一个数据中心迅速搞起来 instance,然后使用线性回归预测对应流量需要用到的资源,起相对应的 microservices。
- 使用 Zuul (一个 gateway)切换流量
- 修改 DNS 记录,切换服务到另一个数据中心(假使客户端没刷新 dns,那还用 Zuul 走流量 …
Git Ship - 一种基于 Git 的部署模型
本文介绍的代码合并技术尝试改善 Git Flow 分支太多的问题。在传统的 Git Flow 中我们需要维护 master/dev/release/hotfix 等各种分支,而在这种 git ship 模型中,我们只需要维护 master/release/feature 三种分支。基本方法是:
- 基于 master 创建 release/$major.$minor 分支
- 特性分支上做开发,发送 Pull Request 到 release/$major.$minor 分支,并触发构建推送到 staging
- 完成 release/$major.$minor 的开发后,合并到 master 分支 …
Dict 从 Python 3_7 开始正式变为有序
Linux 内核将使用 BPF 替换 iptables
这篇文章简要讲述了 iptables 的性能问题和一系列基于 bpf 的项目逐渐开始替代 iptables, 例如 facebook 使用基于 bpf/xdp 的负载均衡替换 lpvs, Netflix 使用基于 bpf 的 bcc 做性能分析,Google 开发 bpfd , cillium 基于 bpf 做 l3-l7 的 network/security/lb; 等等。 Iptables 在过去的十数年中获得很大的成功,它的功能可以简单地说成三个词:INPUT chain, OUTPUT chain, FORWARD chain, 分别管理进来的流量,出去的流量,以及转发。然而问题在于 packet 在经过 iptables 的时候是逐个 …
read moreDocker Alpine 简介
本文是 Docker Alpine 的 about 页面。Alpine Linux 是基于 musl libc 和 busybox 的轻量级的 Linux。它最大的特色就是整个 Linux 被包进了大约 5MB 的镜像中,整个构建只需要几分钟,而在这么小的空间里你可以轻易塞入大量可用的软件,例如 nginx,mysql,java 等等。
一般来说在使用上,可以参考 [这个页面]。
FROM gliderlabs/alpine
RUN apk add --no-cache python
WORKDIR /app
ONBUILD COPY . /app
另外一个做 cleanup 的做法是:
RUN apk add …