documentation/content/docs/architecture/index.md

41 lines
1.2 KiB
Markdown

---
title: 'Architecture'
weight: 4
summary: What is Piped architectured?
---
## What is Piped's architecture?
Piped has 3 components:
- A frontend in VueJS
- A backed in Java which uses NewPipeExtractor
- A proxy in Golang
links: https://github.com/TeamPiped/Piped\, https://github.com/TeamPiped/Piped-Backend and, https://github.com/FireMasterK/http3-ytproxy
## Frontend
- Uses videojs
- Uses a router for a single page application.
## Backend
- Uses Java 11
- Uses the native HTTP client introduced in Java 9
- Uses netty-reactor to acheive maximum performance and a low footprint.
- Supports OpenJ9
- Each running instance should configure their own proxy, thus allowing multi-gigabit content delivery.
- Uses ~70-130 MB of ram. (on OpenJ9)
# Proxy
- Uses Golang
- Has HTTP/2 support. (HTTP/3 is unstable in the current library)
- Low memory footprint and high throughput.
- Can be used to replace the proxy in various other frontends.
# Server-Side Caching
Caching is done at a Reverse-Proxy/CDN level to reduce the load to the backend. This also makes it more scalable.
# LBRY
LBRY streams are automatically added to stream content via LBRY if the same video is available there.