Executor是在scheduler和worker之间的一个组件,主要作用是接收scheduler发过来的可执行task,然后根据自身类型决定task的运行环境。
阅读全文
Airflow是一套分布式的任务编排和调度系统,核心概念是DAG,通过DAG编排任务,并通过scheduler调度任务到不同的worker上执行。
占坑
Linux提供6种namespace隔离。
Raft作为两大分布式一致性协议之一(另一个就是大名鼎鼎的Paxos),本身是为了解决Paxos学习成本过高,工程实现过于困难的问题。在论文中也是遵循这个原则,因此阅读下来还是比较轻松的,而且也有丰富的图表可以帮助思考。
不过在实现上还是会有很多坑,再次感受到了分布式编程的困难之处,尤其是调试,也再次印证了printf是最好的调试工具~(事实上只能看日志来调试)
GFS模型的master,chunkserver。master保存文件的元数据,比如file目录结构,文件大小,文件包含的chunk以及chunk在什么位置。chunkserver上保存的是具体的文件数据。
《Docker-容器与容器云》中的一篇文章,觉得挺不错,所以从网上转载了一份过来。原文:快速熟悉开源项目
123
ch := make(chan TYPE, BUFFER_SIZE) // 创建一个信道go FUNC(ch) // 用协程执行FUNC,并传递一个信道for y := range ch // 用range循环等待
Go没有类,方法跟函数的区别就是多了一个接收器Receiver
指针接收器,接收到的变量是指针形式的,意味着可以修改原变量。pointer receivers比value receivers更加常见。
123456789101112131415161718192021
// :=是在函数内部声明变量并赋值,在函数外部不能用// 变量用var,常量用const,常量不能用:=k := 3const K int = 3var k = 3// 返回值可以命名,可以多个func split(sum int) (x, y int) { x = sum * 4 / 9 y = sum - x return}// 没有初始值的变量会被赋零值/* 基本数据类型bool stringint int8 .... int64uint uint8 ...... uint64byte // uint8的别名 rune // int32的别名float32 float64complex64 complex128*/