All Projects → lichess-org → lila-http

lichess-org / lila-http

Licence: AGPL-3.0 License
Handle some lichess.org/tournament load with Rust, while learning Rust

Programming Languages

rust
11053 projects
shell
77523 projects

Labels

Projects that are alternatives of or similar to lila-http

bot-o-tron
Try out lichess' bot interface
Stars: ✭ 36 (+140%)
Mutual labels:  lichess
chessground
Chessground React Wrapper
Stars: ✭ 15 (+0%)
Mutual labels:  lichess
liground
A free, open-source and modern Chess Variant Analysis GUI for the 21st century
Stars: ✭ 41 (+173.33%)
Mutual labels:  lichess
should-i-play-f6
Chess project to analyze the statistical effect of playing f3 (as white) or f6 (as black) on the outcome of the game.
Stars: ✭ 15 (+0%)
Mutual labels:  lichess
lila-gif
Webservice to render Gifs of chess positions and games, and stream them frame by frame
Stars: ✭ 63 (+320%)
Mutual labels:  lichess
chessops
Chess and chess variant rules and operations in TypeScript
Stars: ✭ 66 (+340%)
Mutual labels:  lichess
lc0-docker
lc0docker: run lc0 chess client and lichess bot under Docker and Kubernetes
Stars: ✭ 26 (+73.33%)
Mutual labels:  lichess
lila-tablebase
Tablebase server
Stars: ✭ 51 (+240%)
Mutual labels:  lichess
stockfish.js
The strong open source chess engine Stockfish compiled to JavaScript and WebAssembly using Emscripten
Stars: ✭ 140 (+833.33%)
Mutual labels:  lichess
lila-ws
Lichess' websocket server
Stars: ✭ 99 (+560%)
Mutual labels:  lichess
chess-openings
An aggregated data set of chess opening names
Stars: ✭ 223 (+1386.67%)
Mutual labels:  lichess
lila-openingexplorer
Opening explorer for lichess.org that can handle all the variants and billions of unique positions
Stars: ✭ 89 (+493.33%)
Mutual labels:  lichess
pgn-tactics-generator
Generate chess puzzles / tactics from a pgn file
Stars: ✭ 83 (+453.33%)
Mutual labels:  lichess
liPGN
This program uses the lichess REST API to retrieve all the games of a user and transform them into a big PGN file that you can then import into your favourite game analysis tool (ie. scid)
Stars: ✭ 14 (-6.67%)
Mutual labels:  lichess
Lila
♞ lichess.org: the forever free, adless and open source chess server ♞
Stars: ✭ 10,315 (+68666.67%)
Mutual labels:  lichess

lila-http

Take some of the HTTP load away from lila. WIP!

Arena tournaments

Clients connected to a tournament page request new data about the tournament every 4s or so, with XHR HTTP requests.

Each player requests information about a different leaderboard page: the one they're in.

When a tournament has 17k connected clients, like it happened during they Agadmator Arena, then lila has to serve about 5k tournament update requests per second.

It's too much. Even tho most of the data is cached by lila, these requests are authenticated and have a cost. lila usually serves at most 2k requests per second, and is not designed to suddenly serve 5k/s more.

So, the plan is to have a new service handle these tournament update requests. It gets info about ongoing tournaments from lila, and propagates it to the clients.

lila-ws, and now lila-http

Much like lila-ws moved the websocket traffic away from lila, lila-http handles some of the heavy HTTP traffic.

It may be expanded to other areas than just the arena tournaments in the future.

Optional service

One goal of lila-http is to be optional. Lichess should work just fine without it. It means that lila and lila-http can handle the same requests in the same way.

This simplifies dev environments, which won't need to install lila-http, and makes production more resilient to lila-http restarts or outages.

This goal is a nice-to-have, not a must-have, and might be dropped in the future if it proves to be too inconvenient.

Why Rust

It could have been done in scala, like lila-ws. But I saw this as an opportunity to learn rust, which I know is a fantastic language.

Why not [language]

I value strong static typing very highly, and both scala and rust have it. Haskell would be an other option. Go, not so much.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].