Termtosvg - Terminal 录制软件

查看原文

Termtosvg 可以将 term 敲下来的命令录成 svg 格式。比起录成 GIF,svg 的好处是,特别小,挺长的一段操作可能录出来的 svg 文件才几百 KB 大小。因为 svg 是矢量文件,比起 GIF 按照 frame 录制 文件大小就是会小很多。

如果查看它的实现,可以看到底层使用了 pyte 捕获 tty 的标准输入和输出。程序本身作为父进程,敲的命令作为子进程。使用 select 等待可用的子进程的输入和输出并存下来。

read more

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 more

Microservices in a Post-Kubernetes Era

查看原文

本文探讨了在 Kubernetes 在变得成熟后微服务这个实践相应产生的变化。

  • 服务的 Observability 还不够,服务还得去实现健康检查,对 Signals 作出回馈,能主动声明资源消耗多少。因为服务观测其实有点变成伪命题了,哪有人那么费心去查问题,有问题杀掉重新起个新的 Pod 出来多省事。这就要求应用能够跟自动化一些地提供自己的健康情况,让平台自己检测出这些不正常的地方然后重新搞个健康的出来。
  • 应用成的断路器等逻辑慢慢式微,取而代之更流行的做法是用 Service Mesh。每个微服务都给起一个 sidecar container 用于 proxy,这种设计可以简化应用层。
  • 微服务得能被设计地面向 recovery:能很容易地杀掉,重启,然后一切恢复正常。
read more

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 的 …

read more

Netflix 点击按钮的背后

查看原文

本文介绍了 Netflix 作为视频网站背后所涉及的客户端,服务端,网络等等相关的技术。

  • 一个看起来很简单的网站,在用户量级上去后就会变的非常有挑战。
  • Netflix 工程博客记录了很多他们的技术架构文章。
  • Netflix 使用混合云:AWS + Open Connect
  • Netflix 的三大核心组件:客户端,服务端,CDN
  • Netflix 跟 EC2 发布在同一年,所以那时候还得自搭数据中心。自建 DC 的问题主要就是效率特低。
  • 2008 年出过一次大事故,比起维护一个数据中心,工程师们觉得还是维护产品更重要更简单,所以全线切去 AWS。历经八九年经营,现在使用着上千台 EC2 实例。
  • Netflix 需要比 AWS 更稳定,通过在 North Virginia,Oregon,Dublin 三地搭服务,可以做到某地出问题了就切流量去别的。作为客户端 …
read more

Documenting Architecture Decisions

查看原文

ADR 有点像 RFC,但是更多用于 Agile 项目。敏捷项目变动快,需要一种手段能够记录做过的项目技术决策,ADR 就是一种记录决策的小短文的模板。它的段落构成可以是:标题,上下文,决定,状态,以及后果。上下文记录当时的状态,决定记录要做的事情,状态标记这个决定做审定中还是已经执行完了,后果记录它做了以后会发生什么。其实不仅可以用于 Agile 项目,个人项目也都可以用 ADR 来记录。

read more

Perkeep - permanently keep your stuff for life

查看原文

Perkeep 是一款用于存储个人数据的程序,CS 架构,客户端可以是手机,浏览器,或者 FUSE 文件系统。它的目标是尝试打造终生存储。它的本质是个基于多云存储的 blobserver,在客户端提供了不限于 dir/file/filename 这种基于文件的存储格式。

read more

xonsh - python shell

查看原文

Xonsh 是一款 shell 工具,基于 Python 提供类似 bash + ipython 结合体验。一些基于 python 的语法改进

  • 支持环境变量,例如 $HOME, ${...}
  • 像 sh 一样运行命令:cd xyz, git status
  • $(ls -l) 把输出流转为 Python 字符串
  • !(ls nonexistent_directory) 把输出和错误转为一个 CommandPipeline(stdin, stdout, stderr, ...) 的对象
read more

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 不会被赋值上 …
read more

Tink - NPM Replacement

查看原文

本文介绍了 Tink - 下一代 npm 的一种可能的替代品。运行 tink 不会像 npm install 一样把依赖安装到 node_modules, 而是缓存依赖的 hash,当不满足时才会下载并加载。

它仍然可以跟 node_modules 并存,并优先使用 node_modules 而非缓存的依赖(为了更方便调试)

read more

« Page 7 / 54 »