Systems Design Elements Flashcards
Metadata database
A separate database that only handles metadata
Chunking functionality
An app/service that breaks file data in to chunks and rebuilds it
Listener/watcher functionality
Monitor a particular element for changes (e.g. via long polling) and notify another target element
Indexing functionality
Process changes in one file and updates the metadata database with information
Message queueing service (and 2 main components)
Asynchronous, loosely coupled communication between distributed system components. 2 main elements:
- Request Queue - shared between all clients
- Response Queues - unique to each client
Data deduplication handling (and 2 ways)
Eliminating duplicate copies of data by calculating hashes of data chunks and comparing to existing chunks
2 ways:
* post process: chunks are stored first then a cleanup process removes duplicates later
* in-line duplication: hashes are calculated in real time
Throttling (3 types)
- hard throttling
- soft throttling
- elastic/dynamic throttling
Hard throttling
of API requests cannot exceed a hard limit
Soft throttling
of API requests cannot exceed a % factor of the overall rate limit
Elastic or dynamic throttling
of requests can exceed threshold if system has resources available
Rate limiting
definition of the rate and speed at which clients can access APIs
Rate limiting - fixed window algorithm
requests are limited within fixed time windows regardless of when requests are made
Rate limiting - rolling window algorithm
requests are limited within rolling time windows based on when requests are made