Posts by Collection

algorithm

红黑树详解

概述 二叉树是常见且广泛使用的一种树,面临其可能退化成链表的潜藏缺点,在使用上难免让人担心其效率。为了让降低这种不平衡的可能性,具有自动平衡左右数量分布效果的自平衡二叉搜索树(AVL 树)被发明了出来。

ceph

Ceph Monitor和Paxos

Paxos算法 1. 角色和名词 proposers: 意为提案者,它可以提出一个提案,提案信息包括提案编号和提议的 value。

Ceph 集群 FAQ 总结

生产环境如何部署Ceph 1. 在kubernetes系统中使用CephCSI时,是Fuse好,还是KernelMod好? 由于容器在技术文件系统层面不存在隔离,而kubernetes中pod运行时kubelet组件 依赖各种fs相关的工具加载和检测文卷,因此Ceph产生系统异常时,会影响整个工作节点。 因此推荐...

Cephfs锁分析

锁的作用 MDS中的锁是为了保护log的正常写入。每次对目录树进行操作前,需要先将目标path中涉及的节点加锁,在内存中修改完目录树(修改方式类似于RCU,即生成一个新节点,push_back到 队列 中)后,将新的目录树信息(只是此条path,不是整个目录树)记录到MDS的journal对象中,journal对...

Ceph快照详解

Ceph的快照与其他系统的快照一样,是基于COW(copy-on-write)实现的。其实现由RADOS支持,基于OSD服务端——每次做完快照后再对卷进行写入时就会触发COW操作,即先拷贝出原数据对象的数据出来生成快照对象,然后对原数据对象进行写入。

Ceph简介

什么是分布式存储 与集中式存储相反,分布式存储通常采用存储单元集群的形式,并具有在集群节点之间进行数据同步和协调的机制。分布式存储最初是由Google提出的,其目的是通过廉价服务器解决大规模,高并发情况下的Web访问问题。

interview

Golanggmp调度详解

基于CSP并发模型开发了GMP调度器,其中 G (Goroutine) : 每个 Goroutine 对应一个 G 结构体,G 存储 Goroutine 的运行堆栈、状态以及任务函数。 M (Machine) : 对OS内核级线程的封装,数量对应真实的CPU数(真正干活的对象)。 P (Processor): 逻...

Golang 内存管理

Go语言的内存分配器采用了跟 tcmalloc 库相同的多级缓存分配模型,该模型将引入了线程缓存(Thread Cache)、中心缓存(Central Cache)和页堆(Page Heap)三个组件分级管理内存。

Golang内存管理之gc

Golang在GC的演进过程中也经历了很多次变革,Go V1.3之前的标记-清除(mark and sweep)算法,Go V1.3之前的标记-清扫(mark and sweep)的缺点

Golang面试题

汇总所有常见的Golang面试问题内容,包含部分源码

gccc如何处理static变量初始化

局部/全局变量 局部变量在C++中的使用要频繁的多,并且功能也强大的多,但是这些强大功能的背后无疑会引入问题的复杂性,不想让马儿吃草只想让马儿跑的事大家表乱想。这些初始化的实现就需要C++的库执行更多的动作来完成,虽然各种编译器都是像如今开展的“学雷锋”活动一样干了很多好事都没有留名,但是作为一个程序员,还是要对...

iptables 简介

iptables是运行在用户空间的应用软件,通过控制Linux内核netfilter模块,来管理网络数据包的处理和转发。通常iptables需要内核模块支持才能运行,此处相应的内核模块通常是Xtables。netfilter/iptables 组成Linux平台下的包过滤防火墙,可以代替昂贵的商业防火墙解决方案,...

kubernetes

Kubernetes Etcd详解

etcd 是一种开源的分布式统一键值存储,用于分布式系统或计算机集群的共享配置、服务发现和的调度协调。etcd 有助于促进更加安全的自动更新,协调向主机调度的工作,并帮助设置容器的覆盖网络。

Kubernetes 网络模型

在 Kubernetes 中,调度 (scheduling) 指的是确保 Pod 匹配到合适的节点, 以便 kubelet 能够运行它们。 调度的工作由调度器和控制器协调完成。

Kubernetes 调度器详解

在 Kubernetes 中,调度 (scheduling) 指的是确保 Pod 匹配到合适的节点, 以便 kubelet 能够运行它们。 调度的工作由调度器和控制器协调完成。

Kubernetes 存储详解

概述 由于容器默认情况下rootfs系统树没有一个与之对应的存储设备,因此可以认为容器中任何文件操作都是临时性的,这样的设计带来了两个问题,其一是如果容器因为某些原因被kubelet重启后,会丢失这些文件;其二是不同的容器之间无法共享文件。为了解决上述问题,Kubernetes 设计了卷(Volume) 这一抽象...

Kubernetes 简介

概述 Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。