Why most TCP servers are multi threaded and how to build one from scratch

Arpit Bhayani April 21, 2023
Video Thumbnail
Arpit Bhayani Logo

Arpit Bhayani

@asliengineering

About

I am a software engineer passionate about System Architecture, Language Internals, Distributed databases, and Advanced Algorithms. I am on a mission to bring out the best engineering stories from around the world. If you are doing something interesting and want me to dissect and talk about it, drop me an email at [email protected]. Before co-founding Profile.fyi, I was a Staff Engineer at Google leading the Dataproc India team in providing a managed big data ecosystem to GCP customers. I hold 10+ years of experience in building and scaling backend services across domains and companies like Unacademy, Amazon, Practo, and D. E. Shaw. I keep diving deep into engineering details and share my learnings by across my socials and videos on YouTube. To put my learning to practice, I keep building things on the side and a few of my good hobby projects include - DiceDB - a re-implementation of Redis in Go - Revine - a visual programming language for kids

Video Description

System Design for SDE-2 and above: https://arpitbhayani.me/masterclass System Design for Beginners: https://arpitbhayani.me/sys-design Redis Internals: https://arpitbhayani.me/redis Build Your Own Redis / DNS / BitTorrent / SQLite - with CodeCrafters. Sign up and get 40% off - https://app.codecrafters.io/join?via=arpitbbhayani In this video, I explained how to build a TCP server from scratch using raw sockets in a programming language like Go. I covered the basics of socket programming, system calls, handling multiple TCP connections, and processing HTTP requests. We created a simple server that listens to a port, accepts connections, reads requests, processes them, sends responses, and closes connections. However, the server we built could only handle one request at a time due to its single-threaded nature. # Recommended videos and playlists If you liked this video, you will find the following videos and playlists helpful System Design: https://www.youtube.com/watch?v=o7qLKfILuD8&list=PLsdq-3Z1EPT27BuTnJ_trF7BsaTpYLqst Designing Microservices: https://www.youtube.com/watch?v=JPj6mhVLQN0&list=PLsdq-3Z1EPT0ug8eizS71G6LZb6-4FAFt Database Engineering: https://www.youtube.com/watch?v=-htbah3eCYg&list=PLsdq-3Z1EPT2C-Da7Jscr7NptGcIZgQ2l&pp=gAQBiAQB Concurrency In-depth: https://www.youtube.com/watch?v=2PjlaUnrAMQ&list=PLsdq-3Z1EPT3VjDhjMb5yBsgn0wn2-fjp Research paper dissections: https://www.youtube.com/watch?v=LXhgFAZroG8&list=PLsdq-3Z1EPT2XEJ0AmF02LBK1RFNd-jK8 Outage Dissections: https://www.youtube.com/watch?v=LeT_s-UFw-U&list=PLsdq-3Z1EPT3_Z97svMs6S2y7tv1PcUmc Hash Table Internals: https://www.youtube.com/watch?v=jjW8w8ED3Ns&list=PLsdq-3Z1EPT2UnueESBLReaVSLIo_BuAc Bittorrent Internals: https://www.youtube.com/watch?v=v7cR0ZolaUA&list=PLsdq-3Z1EPT1rNeq2GXpnivaWINnOaCd0 # Things you will find amusing Knowledge Base: https://arpitbhayani.me/knowledge-base Bookshelf: https://arpitbhayani.me/bookshelf Papershelf: https://arpitbhayani.me/papershelf # Other socials I keep writing and sharing my practical experience and learnings every day, so if you resonate then follow along. I keep it no fluff. LinkedIn: https://linkedin.com/in/arpitbhayani Twitter: https://twitter.com/arpit_bhayani Weekly Newsletter: https://arpit.substack.com Thank you for watching and supporting! it means a ton. I am on a mission to bring out the best engineering stories from around the world and make you all fall in love with engineering. If you resonate with this then follow along, I always keep it no-fluff.