Review
- 2024-09-17 15:49
[!Summary] 《Scalable System Design Patterns》
一、Introduction #
1. 负载均衡器(Load Balancer) #
概念:通过一个调度器(dispatcher)来决定哪个工作实例(worker instance)将处理一个请求。这个决策基于不同的策略,例如轮询、最少连接、响应时间等。
应用:当系统收到高并发请求时,负载均衡器可以有效地分配这些请求到不同的服务器,从而防止任何单一服务器的过载。
2. 散播和聚合(Scatter and Gather) #
概念:调度器向工作池中的所有工作者广播请求。每个工作者计算出局部结果并将其发送回调度器,调度器随后将这些结果汇总成单一响应,再返回给客户端。
应用:适用于需要并行处理并聚合结果的场景,如搜索请求。
3. 结果缓存(Result Cache) #
概念:调度器首先查找请求是否之前已经被处理过,并尝试找到之前的结果以返回,以此来节省实际执行的时间。
应用:在处理重复或相似请求时提高效率,减少对后端系统的负载。
4. 共享空间(Shared Space) #
概念:所有工作者监控共享空间中的信息,并将部分知识反馈到黑板上。信息在不断丰富,直到找到解决方案。
应用:适用于多个系统或服务需要协作处理复杂问题的场景。
5. 管道和过滤器(Pipe and Filter) #
概念:所有工作者通过管道连接,数据在其中流动。
应用:每个工作者执行特定的操作,如数据转换、过滤或聚合。适用于数据流处理和转换任务。
6. MapReduce #
概念:针对磁盘I/O是主要瓶颈的批处理作业。它使用分布式文件系统,以便磁盘I/O可以并行执行。
应用:广泛应用于大数据处理,如日志分析、大规模文本处理。
7. 批量同步并行(Bulk Synchronous Parallel) #
概念:在由主节点协调的所有工作者中执行锁步执行。
应用:适用于需要同步操作的并行计算任务,特别是在分布式计算环境中。
8. 执行协调器(Execution Orchestrator) #
概念:智能调度器/协调器根据依赖关系图调度准备就绪的任务,在一群简单的工作者中执行。
应用:适用于复杂任务的调度和管理,特别是在依赖关系复杂或资源需求变化的情况下。