{"id":21689563,"url":"https://github.com/imxyb/goimpulse","last_synced_at":"2025-04-12T09:35:00.227Z","repository":{"id":95502816,"uuid":"105993564","full_name":"imxyb/goimpulse","owner":"imxyb","description":"高可用，高性能的分布式发号服务","archived":false,"fork":false,"pushed_at":"2022-11-01T13:46:23.000Z","size":13270,"stargazers_count":17,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T04:33:51.701Z","etag":null,"topics":["distributed","go","id"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imxyb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-06T10:40:51.000Z","updated_at":"2024-07-29T17:18:38.000Z","dependencies_parsed_at":"2023-04-16T05:05:16.600Z","dependency_job_id":null,"html_url":"https://github.com/imxyb/goimpulse","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imxyb%2Fgoimpulse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imxyb%2Fgoimpulse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imxyb%2Fgoimpulse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imxyb%2Fgoimpulse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imxyb","download_url":"https://codeload.github.com/imxyb/goimpulse/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248546657,"owners_count":21122359,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["distributed","go","id"],"created_at":"2024-11-25T17:26:47.923Z","updated_at":"2025-04-12T09:35:00.215Z","avatar_url":"https://github.com/imxyb.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# goimpulse：高可用，高性能的分布式发号服务\n\n* 通讯协议：http\n\n* 持久化：etcd，强一致性，保证id不重复，不丢失\n\n* 多节点部署，保证只有一个节点running，其余节点standby，running节点挂掉，毫秒级切换其中一个standby节点为running，保证可用性\n\n* node_manager保证内部HA对客户端透明\n\n* 区分不同业务\n\n* 可以提供http basicauth验证\n\n* 单调递增，方便索引存储和查找\n\n* 高性能并且可靠，node启动时候会放置[lastId,batch)个缓存区，当这个缓存区被消费只有batch/2长度时候，会自动扩容到[lastId,batch*2)范围，并把lastid+batch**2持久化到etcd，保证即使节点挂掉，id也不会被重复分发\n\n* 支持优雅重启\n\n* 支持不重启更新配置文件\n\n## 基本架构\n\n![Alt text](http://static.qiziwang.net/8BCBBC07-8E6D-444C-B1C2-AA78CD300E53.png)\n\n## 安装\n\n首先安装etcd，具体参考官网\n\n下载源码或者git clone到你的工作目录\n\n`cd yourproject`\n\n启动node_manger\n\n```./bin node_manager```\n\n启动goimpulse（可以部署多个）\n\n`./bin goimpulse`\n\n## 使用\n\nurl地址：\n\n`GET http://node_managerhost/getid`\n\n参数 \n\ntype: 业务标识，若传空则为default\n\n返回json \n\nexample:\n\n```json\n {\n\n    \"code\": 0,\n\n    \"id\": 19,\n\n    \"msg\": \"success\"\n\n}\n```\n\ncode为0表示成功，id则为结果\n\n## 配置\n\n配置放在`./conf/config.json`中\n\n`etcd.host`：etcd的host和端口，数组形式表示多个\n\n`app.host`：表示goimpulse的host和端口\n\n`node_manager.host`：表示node_manager的host和端口\n\n`type`:业务标识,使用数组表示\n\n`auth.user`：basicauth的用户名\n\n`auth.pass`:basicauth的密码\n\n`auth.enable`：是否开启验证\n\n`batch`：缓存区大小\n\n## 协议\n\nGPL\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimxyb%2Fgoimpulse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimxyb%2Fgoimpulse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimxyb%2Fgoimpulse/lists"}