added test doc.md
This commit is contained in:
@@ -7,20 +7,17 @@
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: abstract
|
||||
:END:
|
||||
This project focuses on creating a framework on running heavy tasks that
|
||||
a regular computer cannot run easily such as graphically demanding video
|
||||
games, rendering 3D animations , protein folding simulations. In this
|
||||
project the major focus will not be on the financial incentive part. A
|
||||
peer to peer network will be created to help run tasks decentrally,
|
||||
increasing bandwidth for running tasks. To ensure the tasks in the peer
|
||||
to peer network do not corrupt the server 0S (Operating System), they
|
||||
will be executed in a virtual environment in the server.
|
||||
This project focuses on creating a framework for running heavy computational tasks that a regular
|
||||
computer cannot handle easily. These tasks may include graphically demanding video games, rendering
|
||||
3D animations, and performing complex protein folding simulations. The major focus of this project
|
||||
is not on financial incentives but rather on building a robust and efficient peer-to-peer (P2P)
|
||||
network to decentralise task execution and increase the computational bandwidth available for
|
||||
such tasks.
|
||||
|
||||
The main aim of this project was to create a custom peer to peer
|
||||
network. The user acting as the client has total flexibility on how to
|
||||
batch the tasks and the user acting as the server has complete
|
||||
flexibility on tracking the container's usages and killing the
|
||||
containers at any point of time.
|
||||
The P2PRC framework serves as a foundation for decentralised rendering and computation,
|
||||
providing insights into how tasks can be distributed efficiently across a network of peers.
|
||||
Leveraging the P2PRC approach, this project extends its capabilities to handle a
|
||||
wider range of computationally intensive tasks.
|
||||
|
||||
** Motivation
|
||||
:PROPERTIES:
|
||||
@@ -144,7 +141,7 @@ USAGE:
|
||||
p2prc [global options] command [command options] [arguments...]
|
||||
|
||||
VERSION:
|
||||
<version no>
|
||||
2.0.0
|
||||
|
||||
COMMANDS:
|
||||
help, h Shows a list of commands or help for one command
|
||||
@@ -157,6 +154,7 @@ GLOBAL OPTIONS:
|
||||
--ViewImages value, --vi value View images available on the server IP address [$VIEW_IMAGES]
|
||||
--CreateVM value, --touch value Creates Docker container on the selected server [$CREATE_VM]
|
||||
--ContainerName value, --cn value Specifying the container run on the server side [$CONTAINER_NAME]
|
||||
--BaseImage value, --bi value Specifying the docker base image to template the dockerfile [$CONTAINER_NAME]
|
||||
--RemoveVM value, --rm value Stop and Remove Docker container (IP:port) accompanied by container ID via --ID or --id [$REMOVE_VM]
|
||||
--ID value, --id value Docker Container ID [$ID]
|
||||
--Ports value, -p value Number of ports to open for the Docker Container [$NUM_PORTS]
|
||||
@@ -172,10 +170,13 @@ GLOBAL OPTIONS:
|
||||
--Groups, --groups View all groups (default: false) [$GROUPS]
|
||||
--RemoveContainerGroup, --rmcgroup Remove specific container in the group (default: false) [$REMOVE_CONTAINER_GROUP]
|
||||
--RemoveGroup value, --rmgroup value Removes the entire group [$REMOVE_GROUP]
|
||||
--MAPPort value, --mp value Maps port for a specific port provided as the parameter [$MAPPORT]
|
||||
--DomainName value, --dn value While mapping ports allows to set a domain name to create a mapping in the proxy server [$DOMAINNAME]
|
||||
--Generate value, --gen value Generates a new copy of P2PRC which can be modified based on your needs [$GENERATE]
|
||||
--ModuleName value, --mod value New go project module name [$MODULENAME]
|
||||
--PullPlugin value, --pp value Pulls plugin from git repos [$PULLPLUGIN]
|
||||
--RemovePlugin value, --rp value Removes plugin [$REMOVEPLUGIN]
|
||||
--AddMetaData value, --amd value Adds metadata about the current node in the p2p network which is then propagated through the network [$ADDMETADATA]
|
||||
--help, -h show help (default: false)
|
||||
--version, -v print the version (default: false)
|
||||
#+end_example
|
||||
@@ -264,9 +265,6 @@ p2prc --ni
|
||||
p2prc --tc
|
||||
#+end_example
|
||||
|
||||
[[file:ClientImplementation.md#tracking-containers][read more on
|
||||
tracking containers]]
|
||||
|
||||
*** Running plugin
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: running-plugin
|
||||
@@ -323,16 +321,6 @@ p2prc --rmcgroup --group <group id> --id <container id>
|
||||
p2prc --rmgroup <group id>
|
||||
#+end_example
|
||||
|
||||
[[file:ClientImplementation.md#Grouping-Containers][read more on
|
||||
grouping containers]] ### Extending usecase of P2PRC (Requires a go
|
||||
compiler to run)
|
||||
|
||||
#+begin_example
|
||||
p2prc --gen <project name> --mod <go module name>
|
||||
#+end_example
|
||||
|
||||
[[file:GenerateImplementation.md][read more about the generate module]]
|
||||
|
||||
*** Pulling plugin from a remote repo
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: pulling-plugin-from-a-remote-repo
|
||||
@@ -357,53 +345,22 @@ p2prc --rp <plugin name>
|
||||
p2prc --amd "custom metadata"
|
||||
#+end_example
|
||||
|
||||
*** MapPort and link to domain name
|
||||
#+begin_example
|
||||
p2prc --mp <port no to map> --dn <domain name to link Mapped port against>
|
||||
#+end_example
|
||||
|
||||
--------------
|
||||
|
||||
* Using Plugins
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: using-plugins
|
||||
:END:
|
||||
This feature is still Under Development:
|
||||
[[file:PluginImplementation.md][Read more on the implementation]]
|
||||
|
||||
**** Dependencies
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: dependencies
|
||||
:END:
|
||||
- Ansible:
|
||||
- Debian/ubuntu: =sudo apt install ansible=
|
||||
- Others:
|
||||
[[https://ansible-tips-and-tricks.readthedocs.io/en/latest/ansible/install/][Installation
|
||||
link]]
|
||||
|
||||
**** Run Test Cases
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: run-test-cases
|
||||
:END:
|
||||
- Generate Test Case Ansible file
|
||||
- =make testcases=
|
||||
- Enter inside plugin directory and run tests.
|
||||
|
||||
#+begin_quote
|
||||
[!NOTE] That docker needs to installed and needs to run without sudo.
|
||||
Refer the section [[#install-docker][Install Docker]]. - =cd plugin= -
|
||||
=go test .=
|
||||
|
||||
#+end_quote
|
||||
|
||||
* P2P Module Implementation
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: p2p-module-implementation
|
||||
:END:
|
||||
The P2P module (i.e Peer to Peer Module) is responsible for storing the
|
||||
IP table and interacting with the IP table. In the following
|
||||
implementation of the P2P module ,the IP table stores information about
|
||||
servers available in the network. The other functionality the P2P module
|
||||
takes care of is doing the appropriate speed tests to the servers in the
|
||||
IP table. This is for informing the users about nodes which are close by
|
||||
and nodes which have quicker uploads and downloads speeds. The module is
|
||||
responsible to ensure that there are no duplicate server IPs in the IP
|
||||
table and to remove all server IPs which are not pingable.
|
||||
The P2P module is for managing server information within the network.
|
||||
It maintains and updates the IP table, ensuring accuracy by preventing duplicates and removing
|
||||
entries for unreachable servers. Furthermore, the module conducts speed tests on the listed servers
|
||||
to determine upload and download speeds. This valuable information enables users to identify nearby
|
||||
servers with optimal performance, enhancing their overall network experience.
|
||||
|
||||
#+caption: UML diagram of P2P module
|
||||
[[file:images/p2pmoduleArch.png]]
|
||||
|
||||
18
README.md
18
README.md
@@ -23,9 +23,9 @@
|
||||
<!-- The main aim of this project was to create a custom peer to peer network. The user acting as the
|
||||
client has total flexibility on how to batch the tasks and the user acting as the server has complete
|
||||
flexibility on tracking the container's usages and killing the containers at any point of time. -->
|
||||
<!-- The objective is to allow users to self host servers in easier
|
||||
and abstracted manner. The main aim of this project was to create a custom peer to peer network for distributed computing. The user acting as the client has total flexibility on how to batch the tasks to any of nodes in networks. These nodes can anywhere from personal
|
||||
computers behind NAT to custom hardware for running custom workload. The aim to provide
|
||||
<!-- The objective is to allow users to self host servers in easier
|
||||
and abstracted manner. The main aim of this project was to create a custom peer to peer network for distributed computing. The user acting as the client has total flexibility on how to batch the tasks to any of nodes in networks. These nodes can anywhere from personal
|
||||
computers behind NAT to custom hardware for running custom workload. The aim to provide
|
||||
access to Heterogeneous set of nodes as a singular global list and abstract away the networking details giving the user focus on designing a custom orchestrator based
|
||||
on the requirements of a user. -->
|
||||
|
||||
@@ -39,7 +39,7 @@ Empower users to easily host nodes, whether on personal computers behind NAT, cu
|
||||
Build a decentralised network tailored to user requirements, enabling distributed task execution without the need for in-depth networking knowledge.
|
||||
|
||||
### Heterogeneous Node Support
|
||||
Harness a diverse array of nodes—from personal computers to specialised hardware—seamlessly integrated into a global node list.
|
||||
Harness a diverse array of nodes from personal computers to specialised hardware—seamlessly integrated into a global node list.
|
||||
|
||||
### Abstracted Networking Layer
|
||||
Networking details are completely abstracted, enabling users to focus on developing bespoke task orchestration systems. No more manual configuration of IPs, ports, or connection logic.
|
||||
@@ -84,6 +84,7 @@ Users acting as clients retain full control over how tasks are batched and assig
|
||||
|
||||
<br>
|
||||
|
||||
<!--
|
||||
## Introduction
|
||||
This project aims to create a peer to peer (p2p) network, where a user can use the p2p network to act as a client (i.e sending tasks) or the server (i.e executing the tasks). A prototype application will be developed, which comes bundled with a p2p module and possible to execute docker containers or virtual environments across selected nodes.
|
||||
|
||||
@@ -91,11 +92,11 @@ This project aims to create a peer to peer (p2p) network, where a user can use t
|
||||
- Background review on peer to peer network, virtual environments, decentralized rendering tools and tools to batch any sort of tasks.
|
||||
- Creating p2p network
|
||||
- Server to create a containerised environment
|
||||
- The client node to run tasks on Server containerised node
|
||||
- The client node to run tasks on Server containerised node -->
|
||||
|
||||
[Read more on the introduction](Docs/Introduction.md)
|
||||
<!-- [Read more on the introduction](Docs/Introduction.md) -->
|
||||
|
||||
<br>
|
||||
<!-- <br> -->
|
||||
|
||||
## Extend your application with P2PRC
|
||||
```go
|
||||
@@ -187,7 +188,6 @@ The programming language used for this project was Golang. The reason Go lang wa
|
||||
|
||||
## Find out more
|
||||
As we are working on the open source project p2prc (i.e p2p network designed for computation).If you are interested in participating as a contributor
|
||||
or just providing feedback on new features to build or even just curious about new features added to the project. We have decided to create a discord group.
|
||||
[](https://discord.gg/b4nRGTjYqy)
|
||||
or just providing feedback on new features to build or even just curious about new features added to the project do file an Issue or send an email to me@akilan.io.
|
||||
|
||||
[](https://github.com/Gaurav-Gosain)
|
||||
|
||||
34
doc.md
Normal file
34
doc.md
Normal file
@@ -0,0 +1,34 @@
|
||||
<!-- Code generated by gomarkdoc. DO NOT EDIT -->
|
||||
|
||||
# p2p\-rendering\-computation
|
||||
|
||||
```go
|
||||
import "github.com/Akilan1999/p2p-rendering-computation"
|
||||
```
|
||||
|
||||
## Index
|
||||
|
||||
- [Variables](<#variables>)
|
||||
|
||||
|
||||
## Variables
|
||||
|
||||
<a name="List_servers"></a>
|
||||
|
||||
```go
|
||||
var List_servers, Ip_table bool
|
||||
```
|
||||
|
||||
<a name="OS"></a>Varaibles if mode is client
|
||||
|
||||
```go
|
||||
var OS, Pull_location, Run_script string
|
||||
```
|
||||
|
||||
<a name="VERSION"></a>VERSION specifies the version of the platform
|
||||
|
||||
```go
|
||||
var VERSION = "2.0.0"
|
||||
```
|
||||
|
||||
Generated by [gomarkdoc](<https://github.com/princjef/gomarkdoc>)
|
||||
Reference in New Issue
Block a user