Giter VIP home page Giter VIP logo

zeppelin's Introduction

Zeppelin: A Scalable, High-Performance Distributed Key-Value Platform

Build Status

Zeppelin is developed and maintained by Qihoo PikaLab and DBA Team, inspired by Pika and Ceph. It's a Distributed Key-Value Platform which aims to provide excellent performance, reliability, and scalability. And based on Zeppelin, we could easily build other services like Table Store, S3 or Redis.

Feature

  • Excellent Performance
  • Horizontal Scalability:a reliable key-value storage service that can scale to many thousands of devices by leveraging the intelligence present in individual storage node.
  • Support upper Protocol

Build Zeppelin

Zeppelin is based on some other basic libraries, such as slash, pink, floyd and rocksdb, so you need to download them first as bellow:

git submodule init

git submodule update

make

Usage

After build and setup, you need to access the service through Zeppeln Client, See more here

Performance

Wiki

Wiki

DataServer Design

MetaServer Design

Latest Release

1.2.7

zeppelin's People

Contributors

baotiao avatar catkang avatar flabby avatar jacketwoo avatar kernelmaker avatar leviathan1995 avatar pingyym avatar scottzzq avatar wenduo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zeppelin's Issues

Set meaningful number of CPU's in data server

The data_thread_num is hardcoded in config file, and I think we could make this value is related to number of CPU's on the machine. For example, set data_thread_num to std::hardwared_concurrency()*0.75

Support Hash Tag

Zeppelin calculate key location by hash tag if exist.

Support list and delete operation depends on hash tag.

about eng grammar

a Distributed Key-Value Platform which {aim} to {providing} excellent performance
-> aims, provide

Support Batch Operation

Support multi-operation executed together.

Only write or delete operation supported in batch.

Operations in same batch keep atomic.

More elegant partition db drop

Partition db drop is dangerous and it may happened sometimes as below:

  1. Table drop, then all partition dbs under it should be drop;
  2. Partition migration, the old node should drop this partition db;
  3. Clear command required by manager

We need a more elegant drop mechanism to enable us to restore the dropped db, and then a simple way to delete it forever.

This is similar to recycle bin

create table error

创建3个meta在tpd1机器上端口9221,9222,9223
3个node在tpd2机器上,端口13221,13222,13223

执行zk-manager,查看meta,node都正确,但是创建table异常
命令如下:
Zeppelin(tpd1:9221)>> listnode
tpd2:13221 up
tpd2:13222 up
tpd2:13223 up
Zeppelin(tpd1:9221)>> listmeta
Leader:
--- tpd1:9221, status: Up
Followers:
--- tpd1:9222, status: Up
--- tpd1:9223, status: Up
Epoch: -1
Consistency status:

  Node           |    Role    | Term |      Leader      |      VoteFor      | LastLogTerm | LastLogIdx | CommitIndex | LastApplied |
       tpd1:9322    follower     31          tpd1:9321            tpd1:9321          31        13140         13139        13139
       tpd1:9323    follower     31          tpd1:9321            tpd1:9321          31        13140         13139        13139
       tpd1:9321      leader     31          tpd1:9321            tpd1:9321          31        13140         13140        13140

OK
Zeppelin(tpd1:9221)>> createtable test1 hostlist.txt 2
Checkup distribution result
Node Num: 3
Partition Num: 6
3 replicas in 1 node: 0
2 replicas in 1 node: 0
3 replicas in 1 host: 6
2 replicas in 1 host: 0
3 replicas in 1 cabinet: 6
2 replicas in 1 cabinet: 0

6 partitions node num: 3
+++++++++++++++++++++++++++++++++++++
Continue? (Y/N/dump)
dump
Table name: test1
Partition id: 0 master: 10.31.2.242 :13222 slave0: 10.31.2.242 :13221 slave1: 10.31.2.242 :13223
Partition id: 1 master: 10.31.2.242 :13223 slave0: 10.31.2.242 :13221 slave1: 10.31.2.242 :13222
Partition id: 2 master: 10.31.2.242 :13221 slave0: 10.31.2.242 :13222 slave1: 10.31.2.242 :13223
Partition id: 3 master: 10.31.2.242 :13222 slave0: 10.31.2.242 :13221 slave1: 10.31.2.242 :13223
Partition id: 4 master: 10.31.2.242 :13223 slave0: 10.31.2.242 :13221 slave1: 10.31.2.242 :13222
Partition id: 5 master: 10.31.2.242 :13221 slave0: 10.31.2.242 :13222 slave1: 10.31.2.242 :13223
Continue? (Y/N/dump)
Y
Corruption: Node 10.31.2.242 :13221 is down

optimize the partition distribute algorithm

In current version, the partition distribute algorithm has some problems, such as we can't not allot every node the same number of partition, we can only promise that the 3 copies not be put in same node, but we can't not promise that any two copy will not be put in same machine, since there is many nodes in a machine.

we need improve the partition distribute algorithm, the most elaborate dirstribute algorithm I have seen is ceph's crush algorithm. Maybe we can copy this algorithm and implement it in zeppelin

zp_node中配置项meta_addr问题

配置样例:

Server related

meta_addr : xx.xx.xx.xx/9221,xx.xx.xx.xx/10331

代码:zp_data_server.cc 265 auto pos = addr.find(":");

问题:
1.和meta保持一致的话,应该是按照/分隔吧?
2.这个东西你们大规模应用了吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.