Blocking vs Non-Blocking I/O
The single most important concept for understanding modern server design. Once you get this, Tomcat, Netty, Node.js, and reactive programming all click.
The single most important concept for understanding modern server design. Once you get this, Tomcat, Netty, Node.js, and reactive programming all click.
The mental model every server-side concept builds on — who talks to whom, and how.
TCP gives you a reliable byte stream. HTTP, WebSocket, and gRPC are different conventions for what to put on top.
Web, TCP, WebSocket, gRPC — what each one is for, how they differ, and a decision flow for picking one.
The lowest-level thing your server code touches when the network shows up — and why everything above it makes more sense once you get this.
How Spring, Spring MVC, Spring WebFlux, and Spring Boot compose on top of Tomcat and Netty — and how Spring Boot is used far beyond just web servers.
How one server program handles thousands of clients at once — and why threads are both the solution and the problem.
The same idea — serve HTTP — implemented two completely different ways. Servlets and thread-per-request vs event loops and non-blocking channels.