https://github.com/stephandollberg/yotta
HTTP File Server Serving Yottabytes
https://github.com/stephandollberg/yotta
cloudcloudcloud cyberscale webscale
Last synced: about 1 year ago
JSON representation
HTTP File Server Serving Yottabytes
- Host: GitHub
- URL: https://github.com/stephandollberg/yotta
- Owner: StephanDollberg
- License: mit
- Created: 2016-09-26T21:37:45.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-04-26T12:43:12.000Z (about 6 years ago)
- Last Synced: 2025-01-26T07:41:16.424Z (over 1 year ago)
- Topics: cloudcloudcloud, cyberscale, webscale
- Language: C
- Homepage:
- Size: 74.2 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Yotta
Yotta is basic http file server. It serves my personal blog [dollberg.xyz](https://dollberg.xyz).
It's main purpose is though to build an epoll based event loop with all kinds of gimmicks. In addition, it's a performant file server that doesn't need 50 lines of config.
Current HTTP Features:
- If-Modified-Since
- (Essential) Range Support
Event loop:
- Edge triggered `epoll` loop
- Connections loadbalanced via `REUSEPORT` to worker processes
- Timers via `timerfd`
- Files are served directly via `sendfile`
- Zero down time upgrades (same principle as nginx)
### Building
CMake is being use as a build system.
```
mkdir build
cd build
cmake ../src
make
```
Will build you the `yotta` binary.
### Usage
Run the binary in the directory you want to serve, you shall pass the address and port to listen on:
yotta -h :: -p 10000
To listen on all interfaces and port `10000`.
See `upgrade_yotta.sh` and `yotta.unit` for usage of the pid file (`-i`) option, daemonizing (`-g`) option and how to upgrade.
### Tests
There are a couple of unit tests which can be run via `make test` in the build folder in addition to integration tests in `src/test`.