Sitemap

A list of all the posts and pages found on the site. For you robots out there is an XML version available for digesting as well.

Pages

Splash Page

Bacon ipsum dolor sit amet salami ham hock ham, hamburger corned beef short ribs kielbasa biltong t-bone drumstick tri-tip tail sirloin pork chop.

Posts

MySQL架构详解

7 分钟阅读

了解 MySQL 的架构是使用 MySQL的重要前提。

Kubernetes 网络模型

4 分钟阅读

集群网络系统是 Kubernetes 的核心部分,但是想要准确了解它的工作原理可是个不小的挑战。

NFS协议详解

4 分钟阅读

概述 Sun Microsystems 公司于1984年推出了一个在整个计算机工业中被广泛接受的远程文件存取机制,它被称为 Sun 的网络文件系统(Network File System),或者简称为 NFS。该机制允许在一台计算机上运行一个服务器,使对其上的某些或所有文件都可以进行远程存取,还允许其他计算机上...

Rocksdb简介

1 分钟阅读

起源 RocksDB项目是起源于Facebook,是一款作为各种存储介质上的服务器工作负载的存储引擎,最初专注于快速存储(尤其是闪存存储)。它是一个 C++ 库,用于存储任意大小的字节流的键和值。它支持点查找和范围扫描,并提供不同类型的 ACID 保证。 在可定制性和自适应性之间取得平衡。RocksDB 具有高度...

Jekyll minimal Mistakes 搭建博客

少于 1 分钟阅读

jekyll 搭建博客可以很方便的发布在GitHub Pages上面,但是由于 GitHub 官方支持的主题插件比较少,我使用了一个非官方的主题插件——Jekyll Minimal Mistake。

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 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。