docs: new desgin

This commit is contained in:
bigeagle 2016-03-24 22:23:41 +08:00
parent 29d4b55bc6
commit 33611cee8e
No known key found for this signature in database
GPG Key ID: 9171A4571C27920A

View File

@ -1,14 +1,45 @@
tunasync
========
## Design
```
# Architecture
- Manager: Centural instance on status and job management
- Worker: Runs mirror jobs
+----------+ +---+ worker configs +---+ +----------+ +----------+
| Status | | |+-----------------> | w +--->| mirror +---->| mirror |
| Manager | | | | o | | config | | provider |
+----------+ | W | start/stop job | r | +----------+ +----+-----+
| E |+-----------------> | k | |
+----------+ | B | | e | +------------+ |
| Job | | | update status | r |<------+ mirror job |<----+
|Controller| | | <-----------------+| | +------------+
+----------+ +---+ +---+
# Job Run Process
+-----------+ +-----------+ +-------------+ +--------------+
| pre-job +--+->| job run +--->| post-job +-+-->| post-success |
+-----------+ ^ +-----------+ +-------------+ | +--------------+
| |
| +-----------------+ |
+------+ post-fail |<---------+
+-----------------+
```
## TODO
- [ ] use context manager to handle job contexts
- [x] Hooks need "before_exec", "after_exec"
- [x] implement `tunasynctl tail` and `tunasynctl log` or equivalent feature
- [x] status file
- [ ] mirror size
- [x] upstream
- [x] btrfs backend (create snapshot before syncing)
- [x] add mirror job online
- [x] use toml as configuration
- [ ] split to `tunasync-manager` and `tunasync-worker` instances
- use HTTP as communication protocol
- Web frontend for `tunasync-manager`
- [ ] start/stop/restart job
- [ ] enable/disable mirror
- [ ] view log
- [ ] config file structure
- [ ] support multi-file configuration (`/etc/tunasync.d/mirror-enabled/*.conf`)