Metalog 源码解读

Metalog 框架包含了定义Metalog子系统的类集。

基本组织结构

namespace Hypertable {

  namespace MetaLog {

    clsss XXX{

    }

  }

}

以下说明,都基于上述组织结构

MetaLog.h

Metalog文件具体内容:

每个日志文件保存服务器的执行完整状态和状态转换。

class Header ---编解码Metalog 文件头部

Encode a 16-bit integer in little-endian order

MetaLogDefinition.h

class Definition ---抽象基类,

派生类为特定的服务器定义有效MetaLog 实体

class Entity ---MetaLog 实体的单例基类

MetaLog entity 是被持久化到MetaLog文件中的。使用MetaLog API的方法可以对Entity对象进行读,写。

A meta log is a server state log and is currently used by both the RangeServer and the Master servers.

class Reader && class Writer ---Meta log 读写辅助类

class EntityHeader ---编解码序列化实体头(序列化在MetaLog文件中的实体状态)

entity 有多版本,读取时获取最新版本的返回

MetaLog 主要分为两类 ---Master && RangeServer

class DefinitionMaster

class DefinitionRangeServer

Metalog包含了一组数字命名的目录文件,每个文件包含一个服务器运行从开始到结束的状态和状态转换。 

两种类型metalog文件保存分别为mml,rsml

保存在hdfs上的路径类似如下

/hypertable/servers/master/log/mml/0

/hypertable/servers/rs1/log/rsml/0 (rs1: 相应的rangeserver)

保存在本地的备份路径为:

hypetable安装路径下

/run/log_backup/mml/master_38050/0  (Master 机器上)

/run/log_backup/rsml/rs1/0(Rangeserver 机器上)

class MetaLogEntityRange --- MetaLog entity for range state persisted in RSML

读写metalog

namespace Hypertable {

  /**

   * Abstract base class for a filesystem.  All commands have synchronous and

   * asynchronous versions.  Commands that operate on the same file descriptor

   * are serialized by the underlying filesy

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shinobi_Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值