Coder Social home page Coder Social logo

davidmr001 / idcreator Goto Github PK

View Code? Open in Web Editor NEW

This project forked from crosg/idcreator

0.0 1.0 0.0 667 KB

这是一个id生成器,主要为互联网的各种业务生成id(也就是数据库主键)。该id生成器生成的id主要被用来做数据路由之用。和Albianj2配合,可以快速而简单的搭建完整的分布式业务系统!

License: BSD 3-Clause "New" or "Revised" License

C 97.69% Makefile 0.93% C++ 1.39%

idcreator's Introduction

idCreator

idCreator是我们设计并且开发一个分布式的id生成器。它主要为业务系统提供唯一、索引友好、 可排序的id。它解决了互联网行业中,使用int自增id或者是string类型的自定义id而导致的 无法方便的分库分表或者是id排序不友好问题。提到id生成器,twitter的snowflake算法 不得不被提起,但是snowflake的算法因为使用了二进制的移位做法,导致其生成的算法过 度的对于机器友好,对于人类并不是那么的友好,也就是说snowflake生成的id对于人类来 说并不能“望文生义”。

我们目前的idCreator主要提供3种规则的id:

  1. 如果你喜欢snowflake算法,你一样可以选择我们的idCreator,它也有算法支持;
  2. 如果你需要做数据路由,也就是分库分表操作,我们的idCreator就是生成这种带有 路由信息性质的id的,你更应该选择它;
  3. 如果你仅仅自是想做排序id,那么我们的idCreator为你提供了每秒递增的id;
    再不久的将来,目前已经加入了我们的计划。我们将再提供一种id:
  4. 按照时间和自定义步长严格递增的id,主要用来作为状态值等使用。也可以用来做强类型 的数据路由。

idCreator安装方法

  1. 下载并且安装libev
  2. 下载当前idCreator源码
  3. 进入idcreator目录,执行make即可
  4. make执行完成后,在idcreator目录下,有idCreator可执行文件
  5. 进入config文件夹,根据你实际的情况配置id生成器信息
  6. 执行./idCreator config/idcreator.config 即可运行

#idCreator 限制

  1. 目前每台机器一秒大概可以生成10k的id
  2. 目前id生成器的机器总数被限定在10台,mid从0--9
  3. 目前id生成器被设计成明确生成类型的最大值为100,也就是为100种数据生成id
  4. 分库的位被设计成空余了2位,也就是说最多支持一个业务被拆分成100个数据库,从0-99
  5. 目前,id生成器只支持linux运行

#idCreator客户端

  1. C,本身idCreator就是c写的,所以它有c的客户端没有什么意外
  2. java,但是目前该客户端需要和albianj一起被使用
  3. http,屏蔽各种语言,idCreator支持通过http访问,其内置有web服务器, expl:http://10.97.19.58:8988/?type=1 可以使用这样的路径访问id生成器,你会得到一串 json的响应:{error:0, errorMessage:success, result:4159860000002400},其中result就是你需要的id值

#idCreator 文档列表和qq群:
[idCreator的设计思路文档] (http://www.94geek.com/2015/idcreator.html "idCreator设计思路文档")
qq群:528658887

关于我们:

我们是阅文集团的技术团队,阅文集团于2015年成立,统一管理和运营原本属于盛大文学 和腾讯文学旗下的起点中文网、创世中文网、小说阅读网、潇湘书院、红袖添香、云起书 院、榕树下、QQ阅读、中智博文、华文天下等网文品牌。

idcreator's People

Contributors

chinareading avatar xvhfeng avatar

Watchers

 avatar

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.