2020-04-08 21:56:33 +02:00
|
|
|
======================
|
|
|
|
P2P Consumer Scheduler
|
|
|
|
======================
|
|
|
|
|
2020-05-14 20:47:52 +02:00
|
|
|
The scheduler part of a consumer system for the P2P storage system.
|
|
|
|
|
|
|
|
Produced by GoldenPogácsa Inc.
|
|
|
|
|
|
|
|
Basics
|
|
|
|
------
|
|
|
|
This is a component of a fully working consumer system.
|
|
|
|
In order to setup a consumer you will need the consumer API as well and a Redis database.
|
|
|
|
|
|
|
|
This component faciliates the automatic synchronization between consumers.
|
|
|
|
As well as detecting IP changes of the host which is running on.
|
|
|
|
|
|
|
|
Part of a system
|
|
|
|
----------------
|
|
|
|
|
|
|
|
This component works as a complimentary part for the consumer API.
|
|
|
|
|
|
|
|
The information exchange between the API is solved by using a Common Redis database.
|
|
|
|
This database must be shared between the API and the Scheduler instance.
|
|
|
|
|
|
|
|
Also the UUID is shared between the two components. This is obvious since they are essentially both parts of the same system.
|
|
|
|
|
|
|
|
|
|
|
|
Communications
|
|
|
|
--------------
|
|
|
|
|
|
|
|
The communication between other consumers and producers are solved by their REST API endpoints.
|
|
|
|
|
|
|
|
The follwing events will cause communication by this object:
|
|
|
|
* A sychronization task
|
|
|
|
* An IP address change detected
|
|
|
|
|
|
|
|
Since the communication between consumers happens regularly the IP address change event does not cause an immediate synchronization
|
|
|
|
However communication originated by scheduler toward producers only happens when the IP address change is detected.
|
|
|
|
|
|
|
|
Synchronization
|
|
|
|
~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
This call originated by the scheduler and happens regularly (See. configuration).
|
|
|
|
|
|
|
|
A synchronization task causes the followings:
|
|
|
|
* Each consumer known by this consumer is checked for availability
|
|
|
|
* Each consumer this consumer communicated with updated the availability of this consumer.
|
|
|
|
* Each consumer which had no information of this consumer, now have.
|
|
|
|
|
|
|
|
Consumers learn about each other, and their IP addresses (and changes) during a synchronization.
|
|
|
|
|
|
|
|
Called URL::
|
|
|
|
|
|
|
|
http://<consumer ip>/sync
|
|
|
|
|
|
|
|
Body::
|
|
|
|
|
2020-05-14 22:26:14 +02:00
|
|
|
{
|
|
|
|
"uuid" : "str: LOCAL_UUID",
|
|
|
|
"ip" : "str: optional: IP override"
|
|
|
|
}
|
2020-05-14 20:47:52 +02:00
|
|
|
|
|
|
|
|
|
|
|
IP update
|
|
|
|
~~~~~~~~~
|
|
|
|
|
|
|
|
This communication is originated by the scheduler when an IP address change is detected.
|
|
|
|
|
|
|
|
This call is used to let producers immanently know about an IP change of their consumer, so that they can converge faster.
|
|
|
|
|
|
|
|
Called URL::
|
|
|
|
|
|
|
|
http://<producer ip>/ip
|
|
|
|
|
|
|
|
Body::
|
|
|
|
|
|
|
|
{
|
|
|
|
"uuid" : "str: LOCAL_UUID",
|
|
|
|
"ip": "str: provided by param"
|
|
|
|
}
|
2020-04-07 21:34:17 +02:00
|
|
|
|