SimpleSequence.io is a microservice for generating sequence numbers built on an appropriately leveraged, massively scalable AWS infrastructure: API Gateway, Lambda functions, and DynamoDB. The lambda source code is freely available
Why?
If you’ve built a system of any complexity, you’ve neeeded sequences. Most databases have them. But sometimes you need a database independent way to generate an increasing series of numbers, with no collisions. There are many ways to do this: this is one. Inspired by https://timercheck.io/
Create a new sequence
curl -XGET 'https://api.prohakr.com/sequence/YOURSEQUENCENAME'
{
"firstNumber": 1,
"lastNumber": 1
}
That’s it. You don’t need an API token, to create an account, or log in. The first HTTP GET you issue will create the sequence. If you don’t want somebody else to use your sequence name, pick something unguessable like a GUID
Get next number in the sequence
curl -XGET 'https://api.prohakr.com/sequence/YOURSEQUENCENAME'
{
"firstNumber": 2,
"lastNumber": 2
}
curl -XGET 'https://api.prohakr.com/sequence/YOURSEQUENCENAME'
{
"firstNumber": 3,
"lastNumber": 3
}
curl -XGET 'https://api.prohakr.com/sequence/YOURSEQUENCENAME'
{
"firstNumber": 4,
"lastNumber": 4
}
Each HTTP GET will return the next number. Distinct HTTP GET requests will never return the same number.
Concurrency
If more than one process is issuing HTTP GET requests, you might see something like this in one of your processes
curl -XGET 'https://api.prohakr.com/sequence/YOURSEQUENCENAME'
{
"firstNumber": 5,
"lastNumber": 5
}
curl -XGET 'https://api.prohakr.com/sequence/YOURSEQUENCENAME'
{
"firstNumber": 17,
"lastNumber": 17
}
curl -XGET 'https://api.prohakr.com/sequence/YOURSEQUENCENAME'
{
"firstNumber": 209,
"lastNumber": 209
}
Set the sequence to a specific number
curl -XGET 'https://api.prohakr.com/sequence/YOURSEQUENCENAME/1000'
{
"firstNumber": 1000,
"lastNumber": 1000
}
curl -XGET 'https://api.prohakr.com/sequence/YOURSEQUENCENAME'
{
"firstNumber": 1001,
"lastNumber": 1001
}
curl -XGET 'https://api.prohakr.com/sequence/YOURSEQUENCENAME'
{
"firstNumber": 1002,
"lastNumber": 1002
}
Retrieve a block of IDs
curl -XGET 'https://api.prohakr.com/sequence/YOURSEQUENCENAME?take=5'
{
"firstNumber": 12,
"lastNumber": 16
}
curl -XGET 'https://api.prohakr.com/sequence/YOURSEQUENCENAME?take=3'
{
"firstNumber": 17,
"lastNumber": 19
}
Guarantees
Absolutely none. I’m running this for free, as a service. But anything could change: I reserve the right to fully manage the system, restrict it’s use, or change it’s terms of use. There could be flaws, the system can go down, or might go away.
On the other hand, perhaps SimpleSequence.io will take over the world – in which case I will change the terms and introduce a pricing model.
If you’d like more than absolutely no guarantee, contact me. Perhaps we could work something out.