聊聊分布式存储系统中的心跳机制以及主节点下发指令给从节点

心跳( heartbeat )是分布式系统中常用的技术。顾名思义,心跳就是以固定的频率向其他节点汇报当前节点状态的方式。收到心跳,一般可以认为发送心跳的这个节点在当前的网络中状态是良好的。

同时分布式存储系统中经常会采用master-slave架构(也即主从架构),从节点通常会使用心跳技术向主节点汇报自身的健康状况,或者其他请求,主节点处理接收到的心跳信息,并响应给从节点一些操作指令,从节点收到这些操作指令后,会进行相应的操作。今天这篇文章就来分析总结一下这个实现方案。

一、 概述

先总结一下如何基于心跳机制实现主节点向从节点下发指令。主要有如下几步:

① 因为设计到主从节点通信,所以肯定是需要网络连接的,这里一般用RPC框架。对应到heartbeat的场景就是定义一个heartbeat的RPC服务。

② 从节点进程启动的时候就开启一个heartbeat发送线程,定期发送心跳给主节点。请求heartbeat RPC时可以附带很多请求参数,比如从节点的负载信息、健康情况、或者其他自定义的业务请求。

③ heartbeat RPC服务端根据从节点侧发过来的请求参数进行相应的逻辑处理,在给从节点返回的心跳响应中夹带着需要从节点执行的操作。

④ heartbeat RPC的请求体和响应体因为需要序列化才能传输,可以使用Protocol Buffers序列化框架定义请求和响应消息实体。

下面我们就来按照这四步来分别看看HDFS和Alluxio是怎么实现的吧。

二、HDFS中关于下发指令的实现

2.1 heartbeat RPC服务

DatanodeProtocol接口中定义了一些DataNodeNameNode之间交互

本文链接:https://my.lmcjl.com/post/8449.html

展开阅读全文

4 评论

留下您的评论.