On 10/12/2019 03:35, Tim Daneliuk wrote:
On 12/9/19 8:50 PM, Paul Rubin wrote:
Tim Daneliuk <i...@tundraware.com> writes:
- Imagine an environment in which there may be multiple instances of a given
   microservice written in Python.

Decide the maximum number of microservice instances, say 1000.  Chop up
the 10 digit range into 1000 pieces, so 0..999999, 1000000-1999999, etc.
Give one range to each microservice instance.  Then have the
microservices give out the numbers sequentially, but treating them as 10
digit numbers and encrypting each one under a 10 digit pseudorandom
permutation shared by all the instances.  Look up "format preserving
encryption" for how to do this.

Obvious variants of the above are obvious, and maybe you need some way
to hand around chunks of range if some instance gives out more than a
million numbers.



The problem here is that the services are ephemeral and the number of said
services is not fixed.

Hm. Normally I'd mash together the MAC address of the interface and the process ID of the service (or whatever individual identifier microservices have -- indeed, whatever microservices *are* :-), but ten digits is a bit few for that. So you want some variant of Paul's approach.

* I assume there are a number of machines providing these services. Give them unique numbers -- I'm guessing three digits should be enough for that, but you know your own setup better. How you assign those numbers is up to you; a config file in /etc, a Windows registry key, or some broadcast protocol that the machines use to dynamically configure themselves are all options that spring to mind.

* On each machine, something must spin up services when they are needed. That something will be in a position to assign a unique number (within an individual machine) to each service. So do that, using whatever digits you have left after the unique machine number.

* Mash these two numbers into a single ten digit identifier.

--
Rhodri James *-* Kynesim Ltd
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to