Scheduler
Scheduler selects the optimal parent peer for current peer to be downloaded and triggers the seed peer back-to-source download or Client back-to-source download at the appropriate time.
Features
- Based on the multi-feature intelligent scheduling system selects the optimal parent peer.
 - Build a scheduling directed acyclic graph for the P2P cluster.
 - Remove abnormal peer based on peer multi-feature evaluation results.
 - In the case of scheduling failure, notice peer back-to-source download.
 - Provide metadata storage to support file writing and seeding.
 
Scheduling
Scheduler maintains task, peer and host resources.
- Peer: a download task for Client
 - Host: host information for Client, host and peer have a 
1:Nrelationship - Task: a download task, task and peer have a 
1:Nrelationship 
The scheduling process is actually to build a directed acyclic graph according to the peer's load.

Peer State Machine
The Scheduler divides tasks into three types Tiny, Small and Normal.
- Tiny: file size is less than 128 bytes
 - Small: only one piece task
 - Normal: tasks with more than one piece
 
Different scheduling strategies are used for different types of download tasks, following state transition diagram during the peer scheduling process.
