44 lines
1.9 KiB
Markdown
44 lines
1.9 KiB
Markdown
|
# Assumptions
|
||
|
|
||
|
- Each service assumes at the outset that it's the only one in
|
||
|
existence.
|
||
|
- Each service periodicially probes for the existence of other services.
|
||
|
- If two services of the same type find one another, they'll link up and
|
||
|
synchronize.
|
||
|
- If three services of the same type exist, but A knows about B and B
|
||
|
knows about A and C, B and C will synch, and then A and B will synch
|
||
|
the content of B and C.
|
||
|
|
||
|
# Problems
|
||
|
|
||
|
- Service foo wants to search for services of the same type on other
|
||
|
nodes that may or may not exist.
|
||
|
- Service foo wants to use another piece of software running on the same
|
||
|
node to search for other instances.
|
||
|
- The datastore backing service foo isn't capable of synchronizing on
|
||
|
its own with others of its type.
|
||
|
- The datastore backing service foo cannot grow without bound.
|
||
|
- Service foo isn't designed to have a web front end, but needs one.
|
||
|
- Service foo needs a plug-in that exposes the service over HTTP.
|
||
|
- Each instance of service foo needs a unique identifier.
|
||
|
|
||
|
# Nonspecific solutions
|
||
|
|
||
|
- Designate a service on the node that maintains a catalogue of other
|
||
|
services running on the node and make them available on the local
|
||
|
network.
|
||
|
- Designate a service on the node that listens for announcements of
|
||
|
other services on neighboring nodes.
|
||
|
- Designate a service on the node that watches for new instances of the
|
||
|
same service to appear.
|
||
|
- The monitoring daemon checks to see if the service announcement has
|
||
|
already been picked up.
|
||
|
- The monitoring daemon contacts the service's administrative
|
||
|
interface and executes the necessary commands to inform it of a new
|
||
|
instance to contact.
|
||
|
- Service foo contacts the new instance and initiates synchronization.
|
||
|
|
||
|
I guess I'm talking about ejabberd and avahi here. Maybe with some glue
|
||
|
code and the odd exposed administrative interface.
|
||
|
|
||
|
[Category:Byzantium](Category:Byzantium "wikilink")
|