Update architecture documentation.

This commit is contained in:
Kavin 2023-08-04 20:22:02 +01:00
parent 23a6bd7464
commit cfce6c09f3
No known key found for this signature in database
GPG key ID: 6E4598CA5C92C41F

View file

@ -9,30 +9,30 @@ summary: How is Piped architectured?
Piped has 3 components: Piped has 3 components:
- [A frontend in VueJS](https://github.com/TeamPiped/Piped) - [A frontend in VueJS](https://github.com/TeamPiped/Piped)
- [A backend in Java which uses NewPipeExtractor](https://github.com/TeamPiped/Piped-Backend) - [A backend in Java](https://github.com/TeamPiped/Piped-Backend) which uses [NewPipeExtractor](https://github.com/TeamNewPipe/NewPipeExtractor)
- [A proxy in Golang](https://github.com/FireMasterK/http3-ytproxy) - [A proxy in Rust](https://github.com/FireMasterK/piped-proxy)
## Frontend ## Frontend
- Uses videojs - Uses shaka-player for streaming.
- Uses a router for a single page application. - Uses a router for a single page application.
## Backend ## Backend
- Uses Java 11 - Uses Java 17
- Uses the native HTTP client introduced in Java 9 - Uses a JNI wrapper around [Reqwest](https://github.com/seanmonstar/reqwest), a Rust HTTP client.
- Uses netty-reactor to achieve maximum performance and a low footprint. - Uses ActiveJ to achieve maximum performance. Which is [really fast](https://web-frameworks-benchmark.netlify.app/result)
- Supports OpenJ9 - Supports OpenJ9
- Each running instance should configure their own proxy, thus allowing multi-gigabit content delivery. - Each running instance should configure their own proxy, thus allowing multi-gigabit content delivery.
- Uses ~70-130 MB of ram. (on OpenJ9) - Uses ~70-130 MB of ram. (on OpenJ9)
# Proxy # Proxy
- Uses Golang - Uses Rust.
- Has HTTP/2 support. (HTTP/3 is unstable in the current library) - Has HTTP/2 support.
- Uses [actix-web](https://github.com/actix/actix-web) and [reqwest](https://github.com/seanmonstar/reqwest) for maximum performance.
- Low memory footprint and high throughput. - Low memory footprint and high throughput.
- Can be used to replace the proxy in various other frontends.
# Server-Side Caching # Server-Side Caching
@ -40,4 +40,4 @@ Caching is done at a Reverse-Proxy/CDN level to reduce the load to the backend.
# LBRY # LBRY
LBRY streams are automatically added to stream content via LBRY if the same video is available there. LBRY streams are automatically used to stream content via LBRY if the same video is available there.