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 …
read more

gVisor - a sandboxed container runtime

查看原文

gVisor 是一个 sandboxed container runtime, 从实现上看,它劫持容器的系统调用,并将其运行在自己的沙盒里,而不真正运行在操作系统上。从使用上看,它的调用非常简单:docker run --runtime=runsc hello-world,只要你安装了 gVisor。它依然存在一些限制,例如说它只实现了大约200个syscall,尽管如此,大部分的应用程序还是可以使用的。从目的上看,这个工具想要让容器可以在不信任的机器上建立起沙盒环境运行。

read more

Docker save and load

查看原文

我们比较常见的 docker image 转移的做法是通过 docker pushdocker pull,但这需要我们配置一个 docker registry 存储构建好的镜像。这篇问答介绍了一个小技巧,我们可以用 docker save -o /path/to/image.archive you/image:version 将镜像导出;再用 docker load -i /path/to/image.archive 导入。这个方法还蛮有用的,特别是在防火墙堵住某些访问的时候。

read more

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 …
read more

如何选择 Python Visualization 工具

查看原文

本文列出了选择可视化工具的简单策略,涉及的工具包括 plotnine, altair, customize, pandas, seaborn, dash, bokeh.

  • 喜欢 ggplot2 语法:plotnine
  • 定制多一些的:matplotlib
  • 快速画图:pandas
  • 交互画图:seaborn
  • 其余场景在 plotly dash / bokeh 中选择
read more

Netflix 将故障恢复从 45min 降至 7min

查看原文

本文介绍了 Netflix 的新老两套 failover 系统。故事还是从 2012 年的那场殃及全美的 AWS LB 故障说起,他们痛定思痛,决定做 Failover。思路当然还是异地容灾。他们扩展到 US 两个,EU 一个 AWS regions。

  • 45 分钟的玩法
    • 使用 Business Metric 检测系统有没有坏掉,同时比对一天,一周前数据有没有异常。
    • 在另外一个数据中心迅速搞起来 instance,然后使用线性回归预测对应流量需要用到的资源,起相对应的 microservices。
    • 使用 Zuul (一个 gateway)切换流量
    • 修改 DNS 记录,切换服务到另一个数据中心(假使客户端没刷新 dns,那还用 Zuul 走流量 …
read more

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 分支 …
read more

Dict 从 Python 3_7 开始正式变为有序

查看原文

Python 社区的热话题:这个 Reddit 的帖子讨论了 Python 的这个变更。dict keys 变为有序,在先前的版本里面,文档都是告诫用户 dict 是无序的,即便有序也不要依赖;但从 Python 3.7 开始,Performing list(d) on a dictionary returns a list of all the keys used in the dictionary, in insertion order link, 这意味着,dict 在内部实现得维持插入时的顺序。

  • 这个评论 / link, 阐述了如何做到: 在 dict …
read more

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 more

Docker 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 …
read more

« Page 24 / 54 »