首页 - 技术 - 架构师必须了解的十大可扩展架构

架构师必须了解的十大可扩展架构

2023-10-03 10:10
可扩展性是当今软件设计领域最优先考虑的因素。然而,计算机科学家尚未了解单一架构如何扩展到各种应用程序环境。相反,我们在大量解决方案中设计的可扩展性架构往往是基于业界更常见的已知可扩展性模式和个人偏好。本文列出了十大知名的可扩展性架构,以供参考。 【51CTO选译】对于大多数架构师来说,“可扩展性”是软件架构中最虚幻的术语。这并不奇怪,因为可扩展性是当今软件设计的首要任务。然而,计算机科学家尚未了解单一架构如何扩展到各种应用程序环境。相反,我们在大量解决方案中设计的可扩展性架构往往是基于业界更常见的已知可扩展性模式和个人偏好。简而言之,构建可扩展的系统已不再只是一项技术,而是一门艺术。 我们经常通过欣赏杰作来体验和学习艺术的本质,可扩展性也应该如此! 在本文中,我将列出几种著名的可扩展性架构。通常,架构师可以从已知的可扩展架构模式中学习并创建新的可扩展架构。 LB (Load Balancer) + Shared Nothing Unit - 该模型包含一系列单元,每个单元彼此之间不共享任何东西,并且都指向一个负载均衡器,该负载均衡器根据一定的条件向该单元发送输入消息(这构成了一个负载均衡器)周期,基于负载等)。每个单元可以是单个节点或紧密耦合的节点集群。用户可以使用DNS轮询、硬件负载均衡器或软件负载均衡器来达到负载均衡的效果。还可以创建包含前面提到的各种负载均衡器的负载均衡层次结构。 Michael Stonebraker 撰写的文章《 无共享体系架构实例 》 中专门讨论了这种类型的架构。 ​ LB+无状态节点+可扩展存储——传统的三层Web架构采用的就是这种模型。该模型由多个与可扩展存储交互的无状态节点和一个在节点之间分配负载的负载均衡器组成。在这个模型中,存储往往是限制因素,但是NoSQL存储可以使用这个模型来创建一个非常可扩展的系统。 ​ 点对点架构(分布式哈希列表(DHT)和内容寻址网络(CAN))——该模型提供了一些传统的可扩展算法,并且这些算法的各个方面几乎都是以对数比例增加的。例如,Chord、Pastry(尤其是免费版)和CAN都属于这​​一类。以Cassandra为代表的几个基于P2P架构的NoSQL系统也是成员。 《 展望P2P系统中的数据 》本文深入讨论了此类模型的各种细节。 ​ 分布式队列 – 该模型基于队列(即先进先出传送机制)作为网络服务的实现。该模型通过 JMS 队列被广泛采用。这种方法通常采用任务队列和通过维护队列层次结构来实现可扩展性的任务队列版本。当负载无法及时处理时,后者会将任务从较低级别传递到较高级别。 ​ 发布/订阅模型——一般用于通过网络相互发布订阅消息。 《 发布与订阅的多面性 》这个模型在这篇经典论文中有详细介绍。这种模式最典型的例子就是NaradaBroker和EventJava。 ​ 小道消息和自然启发模型 - 该模型源自小道消息在日常生活中的传播,即每个节点都会随机选择后续节点来交换信息。与现实生活中的实际反馈一样,这种基于八卦的算法传播信息的速度惊人地快。该模型的另一个分支是受生物学影响的启发式算法。自然界包含大量本质上优越的协调和扩展算法。例如,蚂蚁、人类、蜜蜂等,都可以通过最简单的通信方式来协调其可扩展性需求。模型中的算法借鉴了这些实际现象。该模型在论文《 从流行病的蔓延到分布式计算 》中有详细描述。 ​ 地图缩放/数据流——这个概念最先由Google提出。地图缩放提供了用于描述和执行工作的可扩展模型。虽然内容简单,但已成为在线分析处理中的主要处理模式。数据流是一种更高级的表达执行信息的方式; Dryad 和 Pig 等项目为数据流执行提供了可扩展的框架。论文《 地图缩小:大型集群上的简化数据处理 》专门设置了一个专题来详细讨论这个内容。 Apache的Hadoop就是这种模式的代表产品。 ​ 责任树——该模型打破了递归问题的约束,将整个流程作为树来处理;每个父节点将工作委托给其子节点。该模型具有高度可扩展性,并已在多种可扩展架构中使用。 ​ 流处理 - 该模型用于处理连续的数据流。这种处理方式是通过网络中的处理节点(如Aurora、Twitter Strom、Apache S4等)来支持的。​ 可扩展存储——该模型的应用范围体现在数据库、NoSQL存储、服务注册和文件系统等方面。链接中的文章深入讨论了可扩展性。 综上所述,实现可扩展性的方式只有三种,即:分发、缓存和异步处理。上面提到的各种架构实际上都是这三种方法的不同组合和实现。另一方面,不利于可扩展性的因素,除了编码本身不好之外,全局协调也起着重要作用。简而言之,任何一种全球协调都会限制系统的可扩展性。本文提到的各种架构仅提供局部协调,而不提供全局协调。 然而,将它们有机地结合起来创建一个高度可扩展的架构并不像听起来那么容易,除非我们能找到一种新的扩展模式。然而,经验告诉我们,采用我们熟悉且更易于管理的可扩展性解决方案总是比构建全新的架构更好。 原文:已知可扩展架构模板列表 【编辑精选】 教你五个技巧快速提升MySQL扩展性 为什么需要高性能和可扩展性 互联网运营智慧--高可用、可扩展网站技术的实际实践