From 13842daf1c1033fa5d0aa1801f57346a2c85710f Mon Sep 17 00:00:00 2001 From: marcsello Date: Thu, 14 May 2020 20:47:52 +0200 Subject: [PATCH] Updated docs --- README.rst | 77 +++++++++++++++++++++++++++++++++++++++++++++++-- docs/config.rst | 19 ++++++++++++ docs/index.rst | 2 ++ 3 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 docs/config.rst diff --git a/README.rst b/README.rst index 31ce0f0..55ce536 100644 --- a/README.rst +++ b/README.rst @@ -2,6 +2,79 @@ P2P Consumer Scheduler ====================== -Repository for the consumer's scheduler +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:///sync + +Body:: + + { + "uuid" : "str: LOCAL_UUID" + } + + +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:///ip + +Body:: + + { + "uuid" : "str: LOCAL_UUID", + "ip": "str: provided by param" + } -Functionality: updates the database of the available consumers periodically diff --git a/docs/config.rst b/docs/config.rst new file mode 100644 index 0000000..be44f99 --- /dev/null +++ b/docs/config.rst @@ -0,0 +1,19 @@ +============= +Configuration +============= + +This software component can be configured via environmental variables, which are very useful in a containerized environment. + ++--------------------+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Variable | Default | Description | ++====================+==========================+=====================================================================================================================================================================+ +| `LOCAL_UUID` | **N/A** | The UUID of the consumer system. Must be the same as the API's | ++--------------------+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `RUN_INTERVAL` | 10 | Interval between synchronizations, and local ip checks. | ++--------------------+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `CUSTOMER_TIMEOUT` | 30 | Default timeout to be set for a consumer. If the timeout expires, the consumer will be considered invalid, and no further attempts will be made to contact with it. | ++--------------------+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `REDIS_URL` | redis://localhost:6379/0 | URL of the Redis database shared with the consumer api | ++--------------------+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `INITIAL_SERVERS` | **N/A** | A comma separated list of the initially known consumers (Can be empty, but must be specified) | ++--------------------+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst index 10efaa5..56ecc01 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -11,9 +11,11 @@ Welcome to Consumer Scheduler's documentation! :caption: Contents: readme + config source/modules + Indices and tables ==================