NOTE

在本地安装 Etcd 集群进行测试

在本地机器上安装一个简单的 etcd 集群,用于测试。 通过 goreman 部署集群 从 https://github.com/etcd-io/etcd/releases/v3.4.3 下载 etcd 二进制文件,放到 PATH 下面。 下载 https://github.com/etcd-io/etcd/blob/v3.4.3/Procfile 下载 Procfile 文件,这个文件...

bbolt 初体验[转载]

本文转载于 晒太阳的猫 《bbolt初体验》 什么是 bbolt bbolt 是对 Ben Johnson 的 bolt 项目的 fork ,目前被应用于 etcd 中作为底层存储。bbolt 是一个嵌入式的 KV 存储库,其作用类似于基于 C++ 的 LevelDB,但二者采用了不同的核心数据结构,前者使用 B+ Tree 且支持事务,后者使用 LSM 且不支持事务。 其实 bolt ...

使用 Context 设置 Http 请求超时

目录 客户端设置超时示例 抓包分析 tcp 断开过程 通过 ctx.Done() 感知客户端断开连接 客户端设置超时示例 使用Context限制 Http 请求的超时时间。客户端代码如下。这里设置的超时时间是1秒钟,过了一秒钟,如果服务端还没有返回请求,则客户端主动发送 fin 报文断开请求。 func main() { ctx, cancel := context.Wi...

awk 命令基础

目录 基本语法 指定分隔符 变量 示例 对某一列求和 基本语法 awk 命令的基本语法如下,其中 pattern 表示匹配模式,actions 表示要执行的操作。语法表示当某个文本行符合 pattern 指定的匹配规则时,执行 actions 所执行的操作。pattern 和 action 都是可选的,但是两者必须保证有一个。act...

WAL 概述

目录 概述 写入wal 恢复 校验 概述 WAL(Write Ahead Log)很久就听说过,但是一直不理解怎么实现的,搜索的时候翻到一个写数据库的damo程序,看了一下,总结下WAL的实现。参考的文章为Writing a Database: Learning By Doing,这个项目的代码地址为https://github.com/danchia/ddb. WA...

Golang TLS 编程

目录 基本概念 使用 cfssl 生成证书 Golang TLS编程 server端 client端 参考 基本概念 TLS编程涉及到一些概念,比如非对称加密、私钥、公钥、CA等,需要先理清这些概念,才能把流程打通,说句题外话,之前工作的时候这部分概念理清过,也实现了TLS编程,但是文档写在公司内网了,后来也忘记了,到现...

事件处理中的 DeletedFinalStateUnknown 是什么

我们在 K8s 中处理 delete 事件时,有可能传入的资源并不是我们所关注的资源,而是一个 DeletedFinalStateUnknown,以sig-storage-local-static-provisioner 项目为例,处理 pv 事件的方法如下,可以看到在处理 delete 事件时,如果类型断言不成功,需要看一下是不是cache.DeletedFinalStateUnknown...

Statefulset 滚动升级实现

Sts控制器概述大概描述了sts控制器的工作原理,这里重点关注下滚动升级的实现。 controllerrevision 概述 记录了某一时刻podSpec template的模板,其Data字段是不可修改的,Revision字段是可以修改的。其定义如下。daemonset以及statefulset会通过ControllerRevision来实现滚动升级。 type ControllerRe...

tcp 协议的连接与断开

目录 三次握手 四次挥手 tcp 流量控制 TCP问题好难,对于这种问题,一方面是应用场景少,实践的不够多,比如调试网络问题的机会;另一方面是工作的时候调试问题总是得过且过,没有深入研究,这个可能还有其他外界因素的干扰,也不允许深究下去。 工作中遇到的问题主要是一些异常的tcp状态,比如一些tcp错误码,如delayAckLost等,还有就是一些异常的网络连接,比如大量c...

容器网络基础及 CNI 概述

目录 基本概念 单机容器网络 CNI 网络配置格式 Execution Protocol (调用协议) Execution of Network Configurations Plugin Delegation Result Types CNI实现 参考: 基本概念 名词解释都放在...