一致性哈希算法(Consistent Hashing)及Golang实现

在提供分布式集群服务的系统中,在索引对象的存储节点的方法中比较常用的方法即简单的hash集群,即使用存储对象的hash值来索引指定的存储节点。
但其中存在几个问题:

  1. 若其中一个节点crash了,再使用固定hash模数时,大部分的存储对象的存储节点都会发生变化,若作存储对象迁移的话数据量非常大。
  2. 物理节点个数少时,由于hash函数的计算特性会导致索引分布在某些情况下极度不均匀。

    Read More

Share

runC源码解读一

runC作为开放容器标准组织推出的开源容器项目,该工具可以及其轻量级的创建container,通过便捷的命令行工具并对其管理和操作。从整体架构来看,其对平台依赖较小,整个project都使用了Golang进行了开发。

Read More

Share

How to setup a private docker registry?

A registry is a storage and content delivery system, holding named Docker images, available in different tagged version.
Docker official service supports several types of registry:

  1. Docker Hub
  2. Docker Trusted Registry
  3. Docker Registry

Read More

Share

runC

最近一直想研究下libcontainer的源码,看下是其是如何提供Linux内核的关于Namespace和Cgroup的API封装的,无意看到在2015年6月份OCI发布的一个开发容器标准和一个开源项目RUNC,感觉有点意思,准备从其入手,了解一些想了解的东西。

Read More

Share

Network Namespace

周末学习了针对网络相关的Linux Namespace模块,搜罗了一些资料,搭建了小小的测试环境,查阅了一些源码实现,此处做了下小小的笔记。

Read More

Share

Container的内核技术基础:Namespace

容器的最重要的特性之一是资源的隔离性,Linux内核为Container的实现提供了比较重要的技术基础之一: Namespace技术。
Namespace这个词我们并不陌生,最常见的就是编程语言中的namespace概念,主要是命名空间或者package管理空间等。我的理解就是提供了一个新的环境或世界,该环境或世界提供了与其它环境或世界隔离,并拥有自我内部独立的运行规则。(漫威的漫画中经常有平行世界的概念,人物的发展分叉了,两个时空没有关系。。。扯远了)

Read More

Share