Go语言设计摘要 背景写Go第三年了,但是Go相关的官方文档并没有看过,这篇文章主要是参考了Go FAQ,对其中有意思的部分进行记录。 设计运行时(Runtime)Runtime是Go的核心,主要实现了三个方面: 垃圾收集 并发 内存管理(堆栈管理) Runtime有点类似于C中的libc。不过Runtime并没有像JVM的虚拟机,它是根据不同的体系结构和操作系统来编译可执行目标。 泛型(generic typ 2024-03-07 #Go
使用GitHub Actions与ArgoCD搭建CICD流水线平台 背景之前断断续续接触过CICD这些概念,但是使用的不多,并且相关概念比较模糊,这里通过GitHub Actions和Argo CD打造一个CICD平台,来熟悉相关概念和流程。 CI(Continuous Integration) 持续集成平时完成一个需求的时候,一般会做一些测试,比如单元测试,e2e测试等等,完成这些测试之后再去提交代码到不同的分支。之后等待其他人来review代码在合并。 从静 2024-03-04 #devops
kubernetes编程笔记 控制循环(Controller) 通常使用事件驱动模式(watch使用),来读取资源状态。 改变集群状态或者集群外部系统状态。 通过API Server组件来更新第一部中修改的状态,资源状态存放在etcd中。 2024-02-22 #kubernetes
协程实现原理-前置知识 背景协程在1958年被Melvin Conway提出,想要为 COBOL 高级编程语言去实现一个 one-pass 的编译器。比当时进程, 线程的概念还要早一步诞生。不过当时并没有流行起来,因为不符合当时(一直持续到 1990 年代)以C语言为代表的命令式编程语言自顶向下设计思想。但是随着互联网发展,服务器对于高并发要求越来越高,出现C10K,C100K,C10M等问题。协程也就重新回归视野。 进 2024-02-22 #Go
从零实现一个operator工具篇-kubebuilder 背景demo已经开发完成了,在这个过程中使用了kubebuilder作为开发工具,之前也提到了几种工具的对比,但是kubebuilder并没有详细的介绍,这篇文章来介绍一下kubebuilder的架构设计。 架构设计kubebuilder依赖于controller-tools和controller-runtime,所以在了解kubebuilder架构之前先简单了解下这两个工具。 controlle 2024-02-16 #kubernetes
node_exporter源码解析 背景最近想要实现一个关于OS exporter,发现和node exporter类似,所以打算学习一下node exporter源码。这里以centos8作为操作系统。所以相关代码都是Linux相关。 CPU指标获取在具体了解代码之前,在linux中如果想要查看CPU相关指标都有那些工具?耳熟能详的都有以下工具: top 各种stat vmstat iostat pidstat mpstat 2024-02-15 #Observability
Borg论文导读 背景 解决运维操作管理问题 提高服务可靠性 降低服务器成本 设计目标 运维操作自动化 监控系统->自动愈合系统 应用场景系统设计 broglet 评分计算 调度实现 异构架构 尽量让执行过相同任务的机器去执行一样的任务 软件包/镜像拉取速度 任务混合部署 对比K8S思考 Borg如何保证业务能够自动恢复到预期状态? 2024-02-15 #distributed system