前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >蜂窝架构概述:弹性与容错的新模式

蜂窝架构概述:弹性与容错的新模式

原创
作者头像
杨振涛
修改2024-12-25 22:34:26
修改2024-12-25 22:34:26
1530
举报

引言

在当今数字化飞速发展的时代,软件架构的设计理念正经历着前所未有的深刻变革。传统的单体架构因其固有的局限性,如扩展性差、维护成本高、容错性不足等问题,已难以满足日益复杂多变的业务需求。随后微服务架构大行其道,而随着云计算尤其是云原生技术的发展,无服务架构也应运而生,这一切带来的复杂性导致服务的可靠性更加难以保障。业内对于现代化的分布式系统设计有了更高期待。一种新兴的面向架构的设计理念——蜂窝架构(Cell-Based Architecture)出现了,因其独特的模块化、扩展性和容错性,逐渐受到业界的广泛关注和研究探索。其最早出现目前难以精确追溯,但得到实际广泛应用可以追溯到2010年左右,主要采纳者是 Google 内部;随后2018年起 AWS作为主要的倡导者对外分享。今天,许多公有云厂商基于该架构模式进行租户间的隔离和提升可靠性,其设计理念可能名称上各有差异但本质类同,如单元化、Set化、Cell化等等。

Cell-Based Architecture 一词目前尚未有统一权威的中文译法,多家科技媒体在文章中也有不同的表达,如基于元胞的架构、基于单元的架构、蜂窝架构、元胞架构等。同时还有其他类似的术语与其很容易产生混淆,如Cellular network,unitization architecture, grid-based computation,Set化架构等等。为了提升沟通效率,笔者根据自我理解在本文中统一约定译作“蜂窝架构”,并且不刻意与其他类似概念做严格区分,仅用于代表该类别的架构设计理念。

本文是一篇二次编辑整理的概述文,参考了大量的已有权威资料,希望通过对蜂窝架构的基本概念与原理和相关设计原则的介绍,结合业内公开分享的案例梳理,让读者对蜂窝架构有一个整体的宏观了解,从而可以结合自身业务场景进一步决定后续具体的深入研究学习和探索实践方向。

术语

Cell-Based Architecture 蜂窝架构

Unitization Architecture 单元化架构

Microservice 微服务

Cloud Native 云原生

AI Native AI原生

Container 容器

Multi-tenancy 多租户

一、蜂窝架构的相关概念与原理

蜂窝架构,亦称为基于元胞的架构或单元化架构,是一种新兴的软件架构设计方法。它将整个系统划分为若干个独立的、可复用的Cell,每个Cell都具有特定的功能和职责。这些cell通过轻量级的通信机制进行交互,共同实现系统的整体功能。

蜂窝架构的精髓在于通过增加冗余缩小影响范围,基于此可以进行多种场景的应用,如故障转移提升可用性,系统扩缩容提升弹性,基础设施层面的无感知服务迁移,简化维护工作等等。

AWS给了一个很形象的例子来说明蜂窝架构的设计初衷:

蜂窝架构源自船舶舱壁的概念,其中垂直隔墙将船舶内部细分为独立的水密隔间;舱壁可减少损坏时的海水进入,并为船体梁提供额外的刚度。

图片引自 AWS
图片引自 AWS

据此蜂窝架构的电信特征与优势有:

  • 模块化:系统被划分为独立的cell,每个cell都具有特定的功能和职责,便于管理和维护。
  • 可扩展性:cell可以根据需求进行动态扩展或缩减,从而实现系统的弹性扩展。
  • 容错性与高可用:cell之间的独立性使得系统在部分元胞出现故障时仍能保持正常运行,提高了系统的容错能力,减少了影响范围,提升系统整体的可用性。
  • 灵活性/易于部署/安全测试:cell可以根据业务需求进行组合和重组,快速适应变化。
  • 低影响范围:cell的大小限制了影响范围,可将故障影响范围尽可能降低。

蜂窝架构的基本原理是将整个系统划分为若干个独立的cell,每个cell都具备特定的功能和职责。这些cell通过轻量级的通信机制进行交互,共同实现系统的整体功能。Cell之间的通信通常采用消息传递的方式,确保了系统的松耦合性和灵活性。所以当故障发生时,将具备出现下列示例所示的优势:

图片来自 AWS 官网:蜂窝架构可缩小影响范围
图片来自 AWS 官网:蜂窝架构可缩小影响范围
图片来自:https://dzone.com/articles/grokking-cell-based-architecture
图片来自:https://dzone.com/articles/grokking-cell-based-architecture

在蜂窝架构中,用户请求由cell gateway路由至具体的cell,然后由cell里的业务组件来

具体处理,每个cell 里面除了业务组件外还有控制面CP和数据面DP,最终与管理面MP

协同,确保整个cell架构系统有效运作。

显然蜂窝架构非常依赖于可观测能力,包括各个层面的可观测性,因为必须基于这些关键

的观测指标来做出cell层次的各种决策。

二、设计蜂窝架构

蜂窝架构的关键组件:

  • cell
  • cell 路由
  • cell间的通信层
  • 控制面

继续看前文提到的上述图示案例,当发生故障时,我们是通过cell的区域隔离性来限制其影响范围,从而尽可能降低对整体系统的影响。那么我们要如何设计这种风格的架构呢?

此处重点介绍下 wso2 出品的“参考架构”系列之蜂窝架构

https://github.com/wso2/reference-architecture/blob/master/reference-architecture-cell-based.md

从敏捷企业架构的视角,该参考架构关注的关键点是:

可扩展性,即通过利用可用资源和有效维持服务水平来应对不断变化的工作负载的能力。现代云基础设施允许容器等组件有效扩展,前提是这些组件的设计方式是正确的。

模块化,是指架构的组件是版本化的、可复制的,并具有定义明确的接口。模块化是指将正确的接口公开到版本化系统中,并隐藏内部运作的细节。业务镜像与领域驱动设计(DDD)是在宏观层面定义模块化的基础。

可组合性,是指创建一个递归和统一的架构,新的组件和功能可以无缝地添加到整个平台中。例如,在页面中添加业务逻辑后,其他系统就很难在该逻辑的基础上进行构建,而在应用程序接口中添加相同的逻辑后,网络应用程序、移动应用程序和其他基于服务器的系统就可以访问该逻辑。

治理,是指建立可管理、可监控、有弹性的系统,并确保组织政策得到执行。

该参考架构的主要内容包括:

第 1 节:介绍所使用的总体抽象。

第 2 节:介绍企业架构单元。

第 3 节:讨论结构敏捷性,并探讨参考架构如何增强迭代架构。

第 4 节:定义新的参考架构,其中包括与现实世界示例的映射。

第 5 节:定义单元的设计、实施和部署规则。

附录-A:通过从业务架构的角度描述敏捷业务来审视整体情况。

蜂窝架构的企业视图

其中也给出了一个示例

将敏捷企业架构映射到现实世界: 订单管理系统参考实施

三大面的定义

DP, Data Plane:在各跳之间转发流量,获取数据包

CP, Control Plane:信号传递、流量决策、运行时管理

MP, Management Plane:配置、可观察性、监控、设计时治理

蜂窝架构设计步骤

定义cell

○ cell分区

○ 实现cell路由

○ cell大小

○ cell部署与迁移

○ cell可观测性

详细指南可参考前文dzone.com的文章及 AWS卓越架构指南。

安全性设计参考

在现代应用中确证 Cell-Based 架构的安全性

https://www.infoq.cn/article/YAsBOIoervUa6PLMqDS6

本章的最后分享一张来自 ByteBytyGo制作的科普图:

三、案例参考

1 Slack的单元化架构实践

Slack作为一家全球知名的协作工具提供商,其系统架构经历了从单体架构到单元化架构的演进。在单元化架构下,Slack将最关键的用户服务从单体架构迁移到单元化架构,实现了服务的高可用性和容错性。通过将系统划分为若干个独立的单元,Slack能够更好地应对流量高峰和故障情况,确保系统的稳定运行。

Slack 蜂窝架构迁移:背后的技术策略与挑战

https://cloud.tencent.com/developer/article/2330278

2 Flickr的联邦方法

Flickr采用联邦方法在许多服务的分片或集群上存储用户数据,实现了数据的分布式管理和容错。每个分片或集群作为一个独立的单元,负责存储和处理部分数据。这种架构设计使得Flickr能够轻松地扩展系统容量和性能,同时提高了数据的可靠性和可用性。

3 Salesforce的自我包含功能的pod解决方案

Salesforce设计了一个基于50个节点的自我包含功能的pod解决方案,每个pod作为一个独立的单元,负责处理特定的业务功能。这种架构设计使得Salesforce能够实现服务的快速部署和扩展,同时提高了系统的弹性和容错性。

4 大型游戏平台 Roblox 通过蜂窝基础设施架构来改进大规模用户游戏体验

Roblox 向蜂窝架构的转变表明了其对快速增长的响应,以及以可靠、低延迟体验支持每天 7000 多万活跃用户的需求。Roblox 采用蜂窝式基础架构,在其数据中心内创建了孤立的集群,通过跨单元复制服务来增强系统弹性。这种设置可以在不中断服务的情况下停用无法运行的单元,从而有效控制故障。向蜂窝基础设施的转变大大提高了 Roblox 的系统可靠性,使该平台能够在全球范围内提供始终在线的沉浸式体验。这一战略凸显了基于单元的架构在管理大规模动态工作负载和随着平台扩展保持高质量服务方面的有效性。

大型游戏平台 Roblox 通过蜂窝基础设施架构来改进大规模用户游戏体验 https://cloud.tencent.com/developer/article/2378622

5 DoorDash

面对高速增长的需求,DoorDash 从单体系统迁移到蜂窝架构,标志着其运营战略发生了关键性转变。这一转变被称为 “超级单元项目”(Project SuperCell),其驱动力来自于在不同市场有效管理波动需求并保持服务可靠性一致性的需求。通过利用 AWS 的云基础设施,DoorDash 能够隔离单个单元内的故障,防止大范围的系统中断。这大大增强了他们扩展资源和保持服务可靠性的能力,即使在高峰期也是如此,从而证明了采用蜂窝架构方法所具有的变革潜力。

DoorDash Uses Service Mesh and Cell-Based Architecture to Significantly Reduce Data Transfer Costs
DoorDash Uses Service Mesh and Cell-Based Architecture to Significantly Reduce Data Transfer Costs

6 腾讯在中间件及云业务中的单元化架构实践

● 腾讯云中间件:单元化架构在金融行业的最佳实践 https://cloud.tencent.com/developer/article/1891503

● 腾讯云单元化架构体系介绍 https://cloud.tencent.com/developer/article/2401367

四、总结与展望

蜂窝架构作为一种新兴的软件架构设计方法,以其独特的优势和广泛的应用前景,正逐渐成为业界关注的焦点。通过将系统划分为若干个独立的元胞,蜂窝架构实现了系统的高可用性、容错性和可扩展性,为应对复杂多变的业务需求提供了有力的支持。

然而,蜂窝架构的设计和实现并非易事,需要遵循一定的设计原则和最佳实践。在设计蜂窝架构时,应充分考虑业务需求、系统特点和技术栈等因素,合理划分元胞,设计高效的通信机制,并实现容错和恢复机制。同时,还应建立完善的监控和可观测机制,实时掌握系统的运行状态和性能指标,配合决策机制做出自动化或半自动化的自治性调整。

随着技术的不断发展和业务需求的不断变化,蜂窝架构将呈现出更加智能化、自动化、安全化和融合化的发展趋势。特别是其在云原生生态的存在,结合混沌工程、AI的应用,甚至与RPA等结合,将会带来软件工程的飞跃式发展。也许未来的超大规模系统将如“三体”中的大量子一样永不宕机,但所有组件都将可独立演化又相互协调。我们有理由相信,在未来的软件架构设计中,蜂窝架构将发挥更加重要的作用,为构建更加高效、可靠、弹性的系统提供有力支持。

AWS 一直是蜂窝架构的倡导者,包括在最新的2024 re:Invent 大会上,CEO Matt Garman 又提出了 “Building Blocks”(构建单元)的理念。( https://segmentfault.com/a/1190000045670175 )

尽管蜂窝架构具有诸多优势和应用前景,但在实际应用中也面临着一些挑战。例如,如何合理划分元胞以实现系统的最优性能和资源利用率;如何设计高效的通信机制以确保元胞之间的实时交互;如何实现元胞的智能管理和容错处理等。

蜂窝架构并不适合所有工作负载,但它可以为一些最关键的工作负载带来巨大的好处。实现蜂窝架构并不是一项简单的任务,其可能的缺点包括:

  • 由于基础设施和组件的冗余,架构的复杂性增加。
  • 尽管 Amazon EC2 预留实例 (RI) 等基于利用率的费用结构和节省计划有助于缩小这一差距,但基础设施和服务成本较高。
  • 需要专门的操作工具和实践来操作工作负载的多个副本(Cell)。
  • 需要增加Cell路由层。

让我们共同期待蜂窝架构在未来为软件开发和系统设计带来更多的惊喜和突破!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 术语
  • 一、蜂窝架构的相关概念与原理
  • 二、设计蜂窝架构
    • 蜂窝架构的关键组件:
      • https://github.com/wso2/reference-architecture/blob/master/reference-architecture-cell-based.md
      • 蜂窝架构的企业视图
      • 三大面的定义
      • 蜂窝架构设计步骤
      • 安全性设计参考
      • https://www.infoq.cn/article/YAsBOIoervUa6PLMqDS6
  • 三、案例参考
    • 1 Slack的单元化架构实践
    • 2 Flickr的联邦方法
    • 3 Salesforce的自我包含功能的pod解决方案
    • 4 大型游戏平台 Roblox 通过蜂窝基础设施架构来改进大规模用户游戏体验
    • 5 DoorDash
    • 6 腾讯在中间件及云业务中的单元化架构实践
  • 四、总结与展望
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档