How to Design a Web Crawler – System Design Guide
Learn how to design a scalable web crawler system. Understand crawling algorithms, politeness, robustness, and distributed architecture.
Learn how to design a scalable web crawler system. Understand crawling algorithms, politeness, robustness, and distributed architecture.
本文介绍了分布式系统中的数据存储和组织方式,可以分为复制(replication)和分区(partitioning)两种方式,复制提供了冗余,提高可用性和读取性能,分区提供了扩展性,通过增加节点来扩展系统的容量和吞吐量。复制有三种方式:单主复制、多主复制、主从复制,其中单主复制一般常用的是主从复制方式。本文主要内容来自《数据密集型应用设计》一书。
本文介绍了数据密集型应用设计的三个基本问题:可靠性(Reliability)、可扩展性(Scalability)、可维护性(Maintainability)。可靠性指系统在故障环境中仍可正常工作;可扩展性指系统有合理的办法应对负载和复杂性的增长;可维护性指许多不同的人在不同的生命周期都能高效地在该系统上进行开发和维护的工作。这三种特性是数据密集型应用设计的基础。本文主要内容来自《数据密集型应用设计》一书。
Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。本文主要介绍 Redis 的数据结构和对象,数据结构包括简单动态字符串、链表、字典、跳跃表和整数集合,对象是通过数据结构实现的 Redis 对象,在 Redis 中,数据库的键值对、列表、集合、有序集合等数据结构都是通过对象来实现的。本文的内容主要来自《Redis 设计与实现》一书。
Understand different approaches including Twitter Snowflake algorithm.
Learn how to design a distributed key-value store. Understand CAP theorem, consistency models, replication, and failure handling.
Learn how to design consistent hashing for distributed systems. Understand algorithms, virtual nodes, and implementation details.
Learn how to design a rate limiter for APIs and services. Understand algorithms, architecture, and implementation details.