Git Product home page Git Product logo

snowflake's Introduction

SNOWFLAKE

Build Status

设计理念

  1. 分布式uuid发生器,twitter snowflake的go语言版本
  2. 序列发生器

uuid格式为:

+-------------------------------------------------------------------------------------------------+
| UNUSED(1BIT) |         TIMESTAMP(41BIT)           |  MACHINE-ID(10BIT)  |   SERIAL-NO(12BIT)    |
+-------------------------------------------------------------------------------------------------+

安装

默认情况下uuid发生器依赖的snowflake-uuid键值对必须预先在etcd中创建,snowflake启动的时候会读取,例如:

   curl http://172.17.42.1:2379/v2/keys/seqs/snowflake-uuid -XPUT -d value="0"          

这个snowflake-uuid会用于MACHINE-ID的自动生成,如果完全由用户自定义machine_id,可以通过环境变量指定,如:

   export MACHINE_ID=123

如果要使用序列发生器Next(),必须预先创建一个key,例如:

   curl http://172.17.42.1:2379/v2/keys/seqs/userid -XPUT -d value="0"          

其他部分参考Dockerfile

使用

snowflake 参考测试用例和snowflake.proto

环境变量

ETCD_HOST: eg: http://172.17.42.1:2379
MACHINE_ID: eg: 123

snowflake's People

Contributors

en avatar johnnyluo586 avatar tenywen avatar xtaci 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

snowflake's Issues

create images error

docker build -t snowflake .
Sending build context to Docker daemon 405.5 kB
Step 1 : FROM golang:1.5
---> c3d2a6307f4e
Step 2 : MAINTAINER xtaci [email protected]
---> Using cache
---> 714da1482b86
Step 3 : ENV GOBIN /go/bin
---> Using cache
---> c384540bc104
Step 4 : COPY . /go
---> Using cache
---> 44ee67a0397d
Step 5 : WORKDIR /go
---> Using cache
---> 771c0ede8348
Step 6 : ENV GOPATH /go:/go/.godeps
---> Using cache
---> 3ca6193b9d2c
Step 7 : RUN go install snowflake
---> Running in a66f056e84de
src/etcdclient/client.go:4:2: cannot find package "github.com/coreos/etcd/client" in any of:
/usr/local/go/src/github.com/coreos/etcd/client (from $GOROOT)
/go/src/github.com/coreos/etcd/client (from $GOPATH)
/go/.godeps/src/github.com/coreos/etcd/client
src/proto/snowflake.pb.go:16:8: cannot find package "github.com/golang/protobuf/proto" in any of:
/usr/local/go/src/github.com/golang/protobuf/proto (from $GOROOT)
/go/src/github.com/golang/protobuf/proto (from $GOPATH)
/go/.godeps/src/github.com/golang/protobuf/proto
src/etcdclient/client.go:5:2: cannot find package "github.com/gonet2/libs/nsq-logger" in any of:
/usr/local/go/src/github.com/gonet2/libs/nsq-logger (from $GOROOT)
/go/src/github.com/gonet2/libs/nsq-logger (from $GOPATH)
/go/.godeps/src/github.com/gonet2/libs/nsq-logger
src/snowflake/main.go:5:2: cannot find package "github.com/gonet2/libs/statsd-pprof" in any of:
/usr/local/go/src/github.com/gonet2/libs/statsd-pprof (from $GOROOT)
/go/src/github.com/gonet2/libs/statsd-pprof (from $GOPATH)
/go/.godeps/src/github.com/gonet2/libs/statsd-pprof
src/snowflake/service.go:9:2: cannot find package "golang.org/x/net/context" in any of:
/usr/local/go/src/golang.org/x/net/context (from $GOROOT)
/go/src/golang.org/x/net/context (from $GOPATH)
/go/.godeps/src/golang.org/x/net/context
src/snowflake/main.go:6:2: cannot find package "google.golang.org/grpc" in any of:
/usr/local/go/src/google.golang.org/grpc (from $GOROOT)
/go/src/google.golang.org/grpc (from $GOPATH)
/go/.godeps/src/google.golang.org/grpc
The command '/bin/sh -c go install snowflake' returned a non-zero code: 1

dockerfile是否需要添加安装依赖包的步骤?

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.