/vdl

A distributed log store based on raft

Primary LanguageGoApache License 2.0Apache-2.0

VDL

VDL(Vip Distributed Log)的是一款基于Raft一致性算法的高吞吐、低延时的分布式日志存储系统。

1.简介

VDL(Vip Distributed Log)的定位是:高吞吐、低延时的分布式日志存储,多副本、强一致性是其关键的特征。 这里的Log不是指syslog或者log4j产生的用于跟踪或者问题分析的应用程序日志。Log贯穿于互联网企业应用开发的方方面面,从DB的存储引擎、DB的复制、分布式一致性算法到消息系统。本质上都是Log的存储和分发。 从应用场景来看,VDL的应用包含下面三类:

  • 复制状态机(Replicated State Machine) - 这一类应用主要使用VDL作为事务日志。 比如用于存储MySQL的Binlog,形成统一的Binlog服务层,简化数据库的备份、恢复、实例重建、failover等高频流程。
  • 消息队列、消息发布订阅、流计算 - 这一类应用主要使用VDL来存储和传递消息。 我们可以基于VDL实现消息发布/订阅系统;同时也可以作为Storm/Spark的输入和输出,用于实时流计算的场景。
  • 数据复制 - 这一类应用主要使用VDL来进行数据的复制。这个数据复制可能发生在本地机房,也可能是跨机房。 我们可以基于VDL构建我们强一致的数据库技术方案。

外部应用通过Kafka协议来发送数据到VDL,VDL通过Raft协议来保证数据的强一致和高可靠。客户端通过Kafka协议来消费VDL中的数据。

2.主要功能

  1. 支持kafka协议生产和消费数据。
  2. 数据强一致,raft协议保证。
  3. 保证线性读一致性。
  4. 部署运维简单,不依赖于其他外部组件

3.文档

3.1 VDL架构设计

1.VDL架构设计

2.VDL性能测试

3.兼容kafka协议说明

4.VDL监控指标

3.2 VDL部署与运维

1.VDL的安装与部署

2.VDL的snapshot操作

3.VDL的Membership Change操作手册

4.VDL的Leader Transfer操作手册

5.VDL删除Log操作指南

6.VDL流控操作手册

4.开发与维护

VDL由唯品会基础架构部-数据与中间件组开发和维护。开发成员如下:

5.鸣谢

  • 感谢etcd,VDL的Raft协议实现使用了etcd的raft库。

  • 感谢jocko,VDL使用了jocko解析kafka协议。

6.License

VDL 开源协议遵循Apache 2.0 license.详见LICENSE文件。