LogDevice Concepts and architecture
LogDevice 是 Facebook 最近开源的一个分布式服务,用来为日志提供持久存储。它应用的新技术叫做 non-deterministic decentralized record placement, 目标是提供高可用+一致+低 write-latencies 的集群。与普通日志服务不同,LogDevice 的源自单位是 records,也就是一条日志记录。LogDevice 原生支持 SSD 和 HDD。
每条日志都有递增的 LSN(序列号),用于排序。在脑裂的特殊情况下,LogDevice 选择可用性高于一致性。多 writers 可以并发地写日志到同一个地方。这些记录会被复制存储到多台机器去以保证数据不会丢失。就算单节点出故障或者磁盘不够了,整个集群还是可以提供写功能。这个流程 LogDevice 通过集群中运行 sequencer 用于给记录标上 LSN,然后存储到节点上。一批存储同一个记录的节点被称为复制集(copyset)。readers 可以根据随机或者权重挑选 …
read moreMicroservices in a Post-Kubernetes Era
本文探讨了在 Kubernetes 在变得成熟后微服务这个实践相应产生的变化。
- 服务的 Observability 还不够,服务还得去实现健康检查,对 Signals 作出回馈,能主动声明资源消耗多少。因为服务观测其实有点变成伪命题了,哪有人那么费心去查问题,有问题杀掉重新起个新的 Pod 出来多省事。这就要求应用能够跟自动化一些地提供自己的健康情况,让平台自己检测出这些不正常的地方然后重新搞个健康的出来。
- 应用成的断路器等逻辑慢慢式微,取而代之更流行的做法是用 Service Mesh。每个微服务都给起一个 sidecar container 用于 proxy,这种设计可以简化应用层。
- 微服务得能被设计地面向 recovery:能很容易地杀掉,重启,然后一切恢复正常。
How auth works in EKS with IAM Users
本文介绍了 AWS EKS 是怎么做初始化的授权验证。AWS 提供了 IAM 用于权限验证,Kubernetes 初始化时需要 admin service account 才能进行管理。事实上,EKS 初始化时就使用了你本地的 ~/.aws
配置,并会使用创建 EKS 的 IAM User 或者 IAM Role 作为 admin service account。这个 user 是不会出现在 aws cli / kubectl 的数据中的。如果有需要添加额外的 user,那你需要使用这个用户继续添加 ConfigMap,通过 mapRole
, mapUser
添加管理用户。
整套授权是通过一个叫做 aws-iam-authenticator
的 …
Netflix 点击按钮的背后
本文介绍了 Netflix 作为视频网站背后所涉及的客户端,服务端,网络等等相关的技术。
- 一个看起来很简单的网站,在用户量级上去后就会变的非常有挑战。
- Netflix 工程博客记录了很多他们的技术架构文章。
- Netflix 使用混合云:AWS + Open Connect
- Netflix 的三大核心组件:客户端,服务端,CDN
- Netflix 跟 EC2 发布在同一年,所以那时候还得自搭数据中心。自建 DC 的问题主要就是效率特低。
- 2008 年出过一次大事故,比起维护一个数据中心,工程师们觉得还是维护产品更重要更简单,所以全线切去 AWS。历经八九年经营,现在使用着上千台 EC2 实例。
- Netflix 需要比 AWS 更稳定,通过在 North Virginia,Oregon,Dublin 三地搭服务,可以做到某地出问题了就切流量去别的。作为客户端 …
Makefile Basics
这段代码是 isaacs 的一段 gist,可以学到 make 的最基本知识,而关于更多的知识,可查看 gnu make man:http://www.gnu.org/software/make/manual/make.html
make -f <filename>
可以指定运行哪个 Makefile,默认使用./Makefile
- 语法如下,target 是必须的,依赖和命令是可选的
<target>: <prerequiresites>...
<commands>
@
加在命令前面不输出命令- 多条
<commands
之间不会互相共享环境变量
var-lost:
export foo=bar
echo "foo=[$$foo]" # 这里 $foo 不会被赋值上 …