Airflow源码分析(1)-executor部分

Executor简介

Executor是在scheduler和worker之间的一个组件,主要作用是接收scheduler发过来的可执行task,然后根据自身类型决定task的运行环境。

阅读全文

Airflow源码分析(0)-介绍

Airflow是一套分布式的任务编排和调度系统,核心概念是DAG,通过DAG编排任务,并通过scheduler调度任务到不同的worker上执行。

阅读全文

高可用配置中心etcd

占坑

阅读全文

Docker中的namespace和cgroup

1. namespace资源隔离

Linux提供6种namespace隔离。

阅读全文

CS6.824(3)-Raft

Raft作为两大分布式一致性协议之一(另一个就是大名鼎鼎的Paxos),本身是为了解决Paxos学习成本过高,工程实现过于困难的问题。在论文中也是遵循这个原则,因此阅读下来还是比较轻松的,而且也有丰富的图表可以帮助思考。

不过在实现上还是会有很多坑,再次感受到了分布式编程的困难之处,尤其是调试,也再次印证了printf是最好的调试工具~(事实上只能看日志来调试)

阅读全文

CS6.824(2)-GFS

GFS的架构

GFS模型的master,chunkserver。master保存文件的元数据,比如file目录结构,文件大小,文件包含的chunk以及chunk在什么位置。chunkserver上保存的是具体的文件数据。

阅读全文

快速熟悉开源项目

《Docker-容器与容器云》中的一篇文章,觉得挺不错,所以从网上转载了一份过来。原文:快速熟悉开源项目

阅读全文

Go tour(3)-Concurrency

并发

  • gorotine 协程
  • channel 信道
1
2
3
ch := make(chan TYPE, BUFFER_SIZE) // 创建一个信道
go FUNC(ch) // 用协程执行FUNC,并传递一个信道
for y := range ch // 用range循环等待

阅读全文

Go tour(2)-Methods and Interfaces

方法

Go没有类,方法跟函数的区别就是多了一个接收器Receiver

指针接收器,接收到的变量是指针形式的,意味着可以修改原变量。pointer receivers比value receivers更加常见。

阅读全文

Go tour(1)-Basics

基础语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// :=是在函数内部声明变量并赋值,在函数外部不能用
// 变量用var,常量用const,常量不能用:=
k := 3
const K int = 3
var k = 3
// 返回值可以命名,可以多个
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
// 没有初始值的变量会被赋零值
/* 基本数据类型
bool string
int int8 .... int64
uint uint8 ...... uint64
byte // uint8的别名
rune // int32的别名
float32 float64
complex64 complex128
*/

阅读全文