73 lines
2.2 KiB
Markdown
73 lines
2.2 KiB
Markdown
|
|
# SnowflakeService
|
|
|
|
A tool/microservice to centrally generate snowflake IDs.
|
|
|
|

|
|

|
|

|
|

|
|
## Acknowledgements
|
|
This utility uses:
|
|
- The format and name of [Twitter's Snowflake IDs](https://blog.twitter.com/engineering/en_us/a/2010/announcing-snowflake)
|
|
- [Javalin](https://github.com/javalin/javalin)
|
|
- [QOS.CH's Logback](https://github.com/qos-ch/logback)
|
|
- [Google's gson](https://github.com/google/gson)
|
|
- [hyperxpro's Brotli4j](https://github.com/hyperxpro/Brotli4j)
|
|
- [B00tLoad_'s ConfigurationUtilities](https://github.com/B00tLoad/Configurationutilities)
|
|
|
|
## Installation
|
|
|
|
### Docker (Recommended)
|
|
|
|
```bash
|
|
docker pull bootmediaalix/snowflakeservice
|
|
docker run -e %{set required .env, see below} -p 9567:9567 -v %{desired path on host}:/data/b00tload-tools/snowflake bootmediaalix/snowflakeservice
|
|
```
|
|
### Containerless
|
|
A containerless installation is possible, although not supported. For development convenience the application base directory is located in `~/.b00tload-tools/snowflake` instead of `/data/b00tload-tools/snowflake`.
|
|
If you want to work containerless you are on your own.
|
|
## Environment Variables
|
|
|
|
To run this project, you may add the following environment variables to your .env file
|
|
|
|
`EPOCH` - the starting time of the snowflake (defaults to 01.01.2024 12:00 AM)
|
|
|
|
`MACHINE_ID_BITS` - the amount of bits used for the machine ID
|
|
|
|
`SEQUENCE_BITS` - the amount of bits used for the sequence counter
|
|
|
|
`MACHINE_ID` - the ID of the generator
|
|
|
|
|
|
|
|
## API Reference
|
|
|
|
#### Get an ID
|
|
|
|
```http
|
|
GET /generate
|
|
```
|
|
|
|
Response example:
|
|
```json
|
|
{
|
|
"id": "50990430426234880"
|
|
}
|
|
```
|
|
|
|
## Maintainer
|
|
|
|
- [@B00tLoad_](https://www.github.com/B00tLoad)
|
|
|
|
|
|
## License
|
|
|
|
[GNU GPL v3](https://github.com/B00tLoad/SnowflakeService/blob/master/LICENSE)
|
|
|
|
|
|
## Support
|
|
|
|
For support, [open a ticket](https://github.com/B00tLoad/SnowflakeService/issues) or email me at alix (at) ja-lol-ey (dot) de.
|
|
|