A curated list of awesome System Designing articles, videos and resources for distributed computing, AKA Big Data.
Whether you're preparing for an interview or you want to design a distributed/microservice oriented application, this list will definitely help you achieve that.
Attention: Stars on GitHub does not reflect usage or popularity for every item here listed.
Inspired By Awesome-BigData
Started By Gabriel Leon de Mattos
System Design Primer - [109k
System Design Interview Questions - Concepts you should know - A curated list of topics to introduce you to system design.
Grokking the System Design Interview - [Paid
System Design in Software Development - Basic article on the topics of system design and architecture.
System Design - Introductory interview preparation resources.
Design Pattern for Distributed Systems - Article talking about some patterns as well as some technologies to be considered.
Distributed Computing - Wikipedia article broadening the view of distributed system design.
Fallacies of Distributed Computing - Wikipedia article introducing the topic of fallacies of distributed computing and its effects.
Fallacies of Distributed Computing Explained - In depth explanation of the fallacies mentioned above.
CAP Theorem - IBM Article about CAP Theorem, Microservices and NoSQL DBs.
Pattern: Microservice Architecture - Good article talking about Microservice architecture as well as its drawbacks.
Taxonomy of Distributed Systems - 11 Page lecture classifying distributed systems and specifically why we need them.
Top 10 Secure Coding Practices - Brief article talking about good practices for code securities.
Scalable Web Architecture and Distributed Systems - Good article about distributed systems as well as some of the potential tools.
Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services - [Paid
Designing Data Intensive Applications - [Paid
The System Design Manual - [Paid
Building Microservices - [Free
Monolith to Microservices - [Free
Distributed Systems (3rd Edition) - [Free
A collection of videos based on distributed systems.
Gaurav Sen - System Design Series - Good resource for people who want to learn more about system design, introduces the topic in a very easy to understand way.
Tech Dummies - System Design Series - Another introduction to system design.
Mock System Design Interview at Google - Overview of what an interview on system design would look like from the perspective of a flawed but close fulfilling of the requirements. Key thing here is how the interaction with the interviewer goes.
Google Preparation Guide - A quick video explaining how they interview.
System Design Interview - YouTube channel focussed on content specific to system design interviews, with detailed explanation of a variety of problems.
Intro to Architecture and System Design Interviews - A youtube video with Jackson Gabbard with good info about system design interviews.
System Design Introduction for Interview - Tushar's intro to System Design.
Distributed Systems - This is an introductory course in Distributed Systems made by Chris Colohan. He got PhD from Carnegie Mellon, then spent 10 years working at Google building distributed systems.
The Easy Way - Up and coming channel with easy to understand videos about Distributed Systems.
System Design by SDE Skills - Good resource for people who are preparing for System Design interviews, there are multiple system design mock interviews and deep dives.
System Design by CodeKarle - Another great free resource, a list of commonly asked interview questions.
MariaDB - MariaDB is a fork of MySQL server.
MySQL - Widely used relational database.
PostgresSQL - Relational database that has been gaining popularity.
SQLite - Another widely used database that is built into all mobile phones and most computers.
Sql Server - Widely used relational database.
Apache Ignite - [3.3k
Couchbase - Inspired by memcached, adding features such as replication and persistance.
Oracle Coherence - [126
Memcached - [10.2k
Redis - [44k
Apple FoundationDB - [10k
Cosmos DB - Microsoft's globally distributed, multi-model database service. Eastically and independently scale throughput and storage. SQL, MongoDB, Cassandra, Tables, Gremlin, and Spark APIs.
CouchDB - [4.6k
MongoDB - One of the most popular 'NoSQL' database for general purpose.
RethinkDB - [23.8k
ElasticSearch - [49.9k
Cosmos DB - Microsoft's globally distributed, multi-model database service. Eastically and independently scale throughput and storage. SQL, MongoDB, Cassandra, Tables, Gremlin, and Spark APIs.
Amazon DynamoDB - Key-Value and Document database, highly performant, scalable and secure.
Google Bigtable - Scalable and performant 'NoSQL' database for large analytical and operational workload.
Cassandra - Facebook-born project very fast, easily scalable, with option to include consistency with each operation.
Scylla - [4.9k
HBase - [3.6k
Cosmos DB - Microsoft's globally distributed, multi-model database service. Eastically and independently scale throughput and storage. SQL, MongoDB, Cassandra, Tables, Gremlin, and Spark APIs.
Amazon Neptune - Fast, reliable and fully managed graph database service.
ArangoDB - [10k
Neo4j - [7.9k
Cosmos DB - Microsoft's globally distributed, multi-model database service. Eastically and independently scale throughput and storage. SQL, MongoDB, Cassandra, Tables, Gremlin, and Spark APIs.
HDFS - Hadoop File System is a a widely popular choice among its big data competitors, providing high throughput access.
Lustre - File system for computer clusters.
CephFS - Unified, distributed storage system.
GlusterFS - Scale-out NAS file system.
MooseFS - POSIX-compliant distributed file system.
XtreemFS - Fault tolerant file system.
Apache Samza - Build stateful applications that process data in real time from multiple sources, including Kafka. Easy and inexpensive multi-subscriber model, can eliminate backpressure and has reliable persistency with low latency.
Apache Flink - Based on the concept of streams and transofrmations. Uses maven, handles batch tasks as data streams with finite boundaries. Low latency, high throughput.
Amazon Kinesis Streams - Durable, scalable, real-tme service. Collects gigabytes of data per second from hundreds of thousands of sources, including database event streams, website clickstreams, financial transactions, etc.
Azure Stream Analytics - Real-time analytics service that is designed for mission-critical workloads.
Amazon MQ - Open source message broker from Amazon.
Apache ActiveMQ - It's a multi-protocol, java based messaging server.
Apache Kafka - Widely popular message broker with low latency for data streaming.
RabbitMQ - Widely popular lightweightmessage broker written in erlang that also supports multiple messaging protocols.
IronMQ - Very fast and highly scalable messaging broker. (not open source)
Apache Pulsar - Created by yahoo, also highly scalable, low latency, geo-replication and multi-tenacy.
Kestrel - Written in Scala and speaks the memcached protocol. It works much like Kafka.
Azure Service Bus - A fully managed enterprise integration message broker.
SeeSaw - [5.1k
HAProxy - Widely popular option, provides high-availability, proxy, TCP/HTTP load balancing. Used by Reddit, Imgur, MaxCDN, GitHub, AirBNB.
Zevenet - Supports L3, L4 and L7. Easy install with a docker repo. Supports advanced health-check monitorining.
Neutrino - Used by eBay, built with Scala and Netty. Supports round-robin and least-connection algorithms.
Nginx - Wait, isn't Nginx a web server? Yes, the open source does support basic level of content switching and request routing. Plus edition supports load balancing, WAF, monitoring, etc.
Openresty - Nginx + Lua, perfect combination.
F5 - Robust hardware load balancer option, supporting multiple protocols (IP, TCP, FTP, UDP, HTTP).
TP-Link - Cheaper alternative that works as a load balancer.
Barracuda - One of the top choices for load balancing when it comes to in-house servers. Top security measures built in, comprehensive reports and monitoring outbound traffic for data loss prevention.
Amazon Elastic Load Balancing - Popular choice for amazon customers, supports lambda functions, highly scalable.
Google Load Balancing - Popular choice for google customers, comes with auto-scaling feature, very fast, has intergrated CDN.
Cloudflare Load Balancing - Scalable load balancing by Cloudflare, feature fast failover and a dashboard.
DigitalOcean Load Balancing - If you're a digitalocean customer, this is a good option, very cheap, regional availability, scalable, easy to deploy among your other droplets.
Azure Load Balancing - Popular choice for Microsoft's Azure customers. Supports internal and external traffics, ipv6, monitorining and the standard load balancing set of features.
Sqoop - Efficiently transfer data between Hadoop and structured datastores such as relational databases.
Flume - Distributed, highly available and efficient in collecting, aggregating and moving large amounts of log data.
Apache Kafka - Widely popular message broker with low latency for data streaming.
Gin - [40.6k
Phoenix - [15.5k
Express.js - [49.6k
Rails - [46.2k
Play Framework - [11.6k
Flask - [51.6k
FastAPI - [22.7k
Django REST - [18.4k
ASP.NET Core MVC - A rich framework for building web apps and APIs using the Model-View-Controller design pattern in C# or F#. Number 6 on TechEmpower Composite Benchmarks for web frameworks.
Fastify - [15.4k
Awesome Awesome Node.js A curated list of awesome lists that are about or related to Node.js. Inspired by the awesome list thing, going deeper down the rabbit hole. �� Meta stuff about this awesome li
下表列出了各种系统调用及其说明。 类别 系统调用 描述 General 打开() 此系统调用将打开现有文件或创建并打开新文件。 General creat() 创建并打开一个新文件。 General 读() 将文件的内容读入所需的缓冲区。 General 写() 将缓冲区的内容写入文件。 General 关 () 关闭文件描述符。 General stat() 提供有关该文件的信息。 Pipes
描述 (Description) 此函数执行PROGRAM指定的命令,将LIST作为参数传递给命令。 返回值是wait函数返回的程序的退出状态。 要获得实际退出值,除以256。 语法 (Syntax) 以下是此函数的简单语法 - system PROGRAM, LIST system PROGRAM 返回值 (Return Value) 此函数返回wai返回的程序的退出状态 例子 (Exampl
system(执行shell 命令) 相关函数 fork,execve,waitpid,popen 表头文件 #include<stdlib.h> 定义函数 int system(const char * string); 函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随 即返回原调用的
system 执行shell 命令 相关函数 fork,execve,waitpid,popen 表头文件 #include<stdlib.h> 定义函数 int system(const char *string); 函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进
下表列出了System V IPC和POSIX IPC之间的差异。 系统五 POSIX AT&T(1983)推出了三种新形式的IPC设施,即消息队列,共享内存和信号量。 IEEE规定的可移植操作系统接口标准,用于定义应用程序编程接口(API)。 POSIX涵盖了IPC的所有三种形式 SYSTEM V IPC涵盖所有IPC机制,即管道,命名管道,消息队列,信号,信号量和共享内存。 它还包括socke