All Projects → imxyb → goimpulse

imxyb / goimpulse

Licence: other
高可用,高性能的分布式发号服务

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to goimpulse

leafserver
🍃A high performance distributed unique ID generation system
Stars: ✭ 31 (+82.35%)
Mutual labels:  id, distributed
gid
Golang 分布式ID生成系统,高性能、高可用、易扩展的id生成服务
Stars: ✭ 55 (+223.53%)
Mutual labels:  id, distributed
verify-apple-id-token
Verify the Apple id token on the server side.
Stars: ✭ 49 (+188.24%)
Mutual labels:  id
GraviT
GraviT is a distributed ray tracing framework that enables applications to leverage hardware-optimized ray tracers within a single environment across many nodes for large-scale rendering tasks.
Stars: ✭ 18 (+5.88%)
Mutual labels:  distributed
p2p-project
A peer-to-peer networking framework to work across languages
Stars: ✭ 68 (+300%)
Mutual labels:  distributed
dist-framework
A prototype for distributed training/validation/evaluation/extraction with PyTorch.
Stars: ✭ 14 (-17.65%)
Mutual labels:  distributed
elfo
Your next actor system
Stars: ✭ 38 (+123.53%)
Mutual labels:  distributed
Distributed-ResNet-Tensorflow
A Distributed ResNet on multi-machines each with one GPU card.
Stars: ✭ 20 (+17.65%)
Mutual labels:  distributed
tips
TiKV based Pub/Sub server
Stars: ✭ 31 (+82.35%)
Mutual labels:  distributed
soundstorm
The Federated Social Audio Platform
Stars: ✭ 26 (+52.94%)
Mutual labels:  distributed
go-cita
A Go implementation of CITA. https://docs.nervos.org/cita
Stars: ✭ 25 (+47.06%)
Mutual labels:  distributed
pooljs
Browser computing unleashed!
Stars: ✭ 17 (+0%)
Mutual labels:  distributed
DocumentReader-iOS
iOS Framework for reading and validation of identification documents
Stars: ✭ 54 (+217.65%)
Mutual labels:  id
hashids.sql
PL/pgSQL implementation of hashids library
Stars: ✭ 40 (+135.29%)
Mutual labels:  id
zlimiter
A toolkit for rate limite,support memory and redis
Stars: ✭ 17 (+0%)
Mutual labels:  distributed
FedScale
FedScale is a scalable and extensible open-source federated learning (FL) platform.
Stars: ✭ 274 (+1511.76%)
Mutual labels:  distributed
simplx
C++ development framework for building reliable cache-friendly distributed and concurrent multicore software
Stars: ✭ 61 (+258.82%)
Mutual labels:  distributed
orbit-db-cli
CLI for orbit-db
Stars: ✭ 60 (+252.94%)
Mutual labels:  distributed
intelli-swift-core
Distributed, Column-oriented storage, Realtime analysis, High performance Database
Stars: ✭ 17 (+0%)
Mutual labels:  distributed
WeIdentity
基于区块链的符合W3C DID和Verifiable Credential规范的分布式身份解决方案
Stars: ✭ 1,063 (+6152.94%)
Mutual labels:  distributed

goimpulse:高可用,高性能的分布式发号服务

  • 通讯协议:http

  • 持久化:etcd,强一致性,保证id不重复,不丢失

  • 多节点部署,保证只有一个节点running,其余节点standby,running节点挂掉,毫秒级切换其中一个standby节点为running,保证可用性

  • node_manager保证内部HA对客户端透明

  • 区分不同业务

  • 可以提供http basicauth验证

  • 单调递增,方便索引存储和查找

  • 高性能并且可靠,node启动时候会放置[lastId,batch)个缓存区,当这个缓存区被消费只有batch/2长度时候,会自动扩容到[lastId,batch*2)范围,并把lastid+batch**2持久化到etcd,保证即使节点挂掉,id也不会被重复分发

  • 支持优雅重启

  • 支持不重启更新配置文件

基本架构

Alt text

安装

首先安装etcd,具体参考官网

下载源码或者git clone到你的工作目录

cd yourproject

启动node_manger

./bin node_manager

启动goimpulse(可以部署多个)

./bin goimpulse

使用

url地址:

GET http://node_managerhost/getid

参数

type: 业务标识,若传空则为default

返回json

example:

 {

    "code": 0,

    "id": 19,

    "msg": "success"

}

code为0表示成功,id则为结果

配置

配置放在./conf/config.json

etcd.host:etcd的host和端口,数组形式表示多个

app.host:表示goimpulse的host和端口

node_manager.host:表示node_manager的host和端口

type:业务标识,使用数组表示

auth.user:basicauth的用户名

auth.pass:basicauth的密码

auth.enable:是否开启验证

batch:缓存区大小

协议

GPL

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].