主要内容为OushuDB的进程架构。
OushuDB有不同的角色(Master节点,Standby节点、N个Segment节点),这幅图就展示了所有节点OushuDB的常驻进程。我们可以看到Master节点的一系列的进程,他们负责同时进行任务分解并且dispatcher。当进程进一步执行时,会动态的生成新的QD(Query Dispatcher)和QE(Query Executor)的进程,我们将在后面进行详细的介绍。
下面我们将讲解每个进程具体的功能,首先,我们来看前四个进程。这四个进程在Master节点和Segment节点都有,他们有相似的功能。
首先先看PostMaster进程,他监听用户请求的守护进程,为每个客户端fork连接出单独的postgres服务,当postgres进程出错时尝试修复;当Segment节点的postgres挂掉时候会认为节点已经down掉了。
Logger进程负责收集各个进程的输出并将其写入pg_log,这里包括成功log和出错的log。
Stats collector进程会统计收集数据的信息,会生成描述数据库、表等统计信息的.stat文件。
Writer进程是定期将共享内存的数据写到磁盘上的进程。
再看下面一对进程Master resource manager和Segment resource manager。Master resource manager负责管理、分配、回收资源,定期查询、接收、处理Segment的心跳信息,从而获取整个集群可用的节点;Segment resource manager是查询本节点的状态,包括查询临时文件是否可读写,发送Segment的心跳信息。
下面的进程是Master节点上独有的,首先我们来看DFS metadata cache,由于OushuDB是存储和计算分离的,数据存储在HDFS或magma上,DFS metadata cache读取并缓存block location信息,从而计算数据的存储,也就是存储数据的这些block是如何分布的,因此在生成查询计划时,可以确定去某些节点访问某些数据的速度,从而进一步保证本地读。
Checkpoint负责周期性做checkpoint或响应常规的checkpoint请求。
Sequence是产生序列,也我们通常说的自增长列。
下面两个进程是保证Master的节点和Standby节点元数据信息进行同步的。Wal send server进程负责把write ahead log发给Standby Master,而Sync agent负责和Master上wal send server通信的进程,处理Master 和standby 节点状态。




