vdl

module
v0.0.0-...-16dfdc2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 3, 2018 License: Apache-2.0

README

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文件。

Directories

Path Synopsis
cmd
vdl
consensus
raft
Package raft sends and receives messages in the Protocol Buffer format defined in the raftpb package.
Package raft sends and receives messages in the Protocol Buffer format defined in the raftpb package.
raft/raftpb
Package raftpb is a generated protocol buffer package.
Package raftpb is a generated protocol buffer package.
raftgroup/stats
Package stats defines a standard interface for etcd cluster statistics.
Package stats defines a standard interface for etcd cluster statistics.
rafthttp
Package rafthttp implements HTTP transportation layer for etcd/raft pkg.
Package rafthttp implements HTTP transportation layer for etcd/raft pkg.
rafthttp/transport
Package transport implements various HTTP transport utilities based on Go net package.
Package transport implements various HTTP transport utilities based on Go net package.
pkg
contention
Package contention provides facilities for detecting system contention.
Package contention provides facilities for detecting system contention.
glog
Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup.
Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup.
netutil
Package netutil implements network-related utility functions.
Package netutil implements network-related utility functions.
types
Package types declares various data types and implements type-checking functions.
Package types declares various data types and implements type-checking functions.
adminapi/apipb
Package apipb is a generated protocol buffer package.
Package apipb is a generated protocol buffer package.
tools
check_index
解析index file工具, 使用方式:./main -path=/Users/flike/Downloads/00000000000007f9.idx -start=1 -count=10 查看使用方式:./main --help
解析index file工具, 使用方式:./main -path=/Users/flike/Downloads/00000000000007f9.idx -start=1 -count=10 查看使用方式:./main --help
check_record
解析segment file工具, 使用方式:./main -path=/Users/flike/Downloads/00000000000007f9.log -start=1 -count=10 查看使用方式:./main --help
解析segment file工具, 使用方式:./main -path=/Users/flike/Downloads/00000000000007f9.log -start=1 -count=10 查看使用方式:./main --help

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL