设计准则

更新时间:

性能是系统的一个重要指标,如果性能无法达到用户预期,会造成大量的用户流失。而很多时候性能问题和系统最初的架构设计相关(当然系统架构是可以持续演进和迭代的),任何架构设计都必须考虑可能带来的性能问题。

因为性能问题几乎无处不在,所以优化性能的手段也非常多,从用户浏览器到数据库,影响用户请求的所有应用相关环节都可以进行性能优化。随着云计算在IT支出占比的不断提升,越来越多的用户核心业务系统跑在云上,云的架构设计和选型也对性能非常重要。基于云的特点,云架构中有关性能设计的方面,有以下注意事项和基本原则:

有效的云资源选型

作为一个软件系统,应用层面有很多性能优化和架构设计的考虑点,但是一个系统的性能基石其实是底层计算和存储资源的性能,这个是原子能力。当系统使用的计算和存储资源性能越好,越有利于上层应用进行整体性能调优和优化,所谓“工欲善其事必先利其器”。

在大规模分布式系统不断发展的趋势下,计算场景和对算力的需求越来越丰富。比如在很多通用计算的场景下,最关心的其实是计算集群的规模,对计算节点本身的单节点能力并没有高要求(比如短时大量计算请求的峰值场景);而在现在火热的AI模型训练场景下,则必须使用类似A100 GPU计算卡的裸金属机器来快速满足大规模AI训练的要求。同时云资源大都是按可用区维度进行部署的,一旦选择可用区进行大量资源部署后迁移和改造成本会很高,因此选择有效的可用区也非常重要。在选择可用区时,需要综合考虑延时,库存,资源类型等因素。

即在场景越来越丰富的情况下,云资源的资源选型从一开始就能很大程度影响最终的系统性能。因此从云架构的实际角度来看,云资源的选型非常重要,具体选型的原则可以参考评估合适的云服务

可伸缩、可扩展的云架构

大型系统需要面对大量用户的高并发访问和存储海量数据,不可能只用固定数量的服务器来处理全部用户请求,这样既不经济,也没有办法有效应对灵活的业务访问。通过集群的方式将计算资源和存储资源等组成一个整体提供服务,在需要的场景下,可以及时通过调整计算和存储资源来缓解高并发带来的计算和存储压力,从而实现在访问峰值场景下可以向用户有效提供稳定的服务,在访问低谷的时期又可以释放不必要的资源或保持系统的低位运行来节省IT支出。

对于一个严格设计的系统来说,存在不同功能的计算节点,如应用服务器集群、缓存服务器集群、数据库集群等。应用服务器集群如果是无状态的场景下(数据保存在另外的节点上),那么伸缩机器是比较简单直接的;对于缓存服务器集群来说,新加入的计算节点则需要进行相关缓存刷新或预热等来保证数据的可访问性;对于数据库来说,实时的伸缩是比较困难的,需要提前做好数据备份和数据同步等方式,辅助路由手段等提升数据库集群的整体可用性和性能。

云上架构设计的部分最佳实践

在云计算高度发展的今天,公共云上已经运行了大量的核心业务系统。这些业务系统从设计到逻辑等方面都考虑了云本身带来的便利性,同时公共云的发展也不断吸取这些业务系统的需求来不断优化自身的产品设计,并推出更适配业务需求的云产品。因此,在一些比较有特点的场景下形成了最佳实践,借助这些最佳实践预期可以有效提升云架构设计初期的架构设计能力,提升系统整体性能,具体可以参考每个云产品文档中的最佳实践相关内容,以及阿里云的最佳实践频道

关注架构设计的注意事项

性能并不需要盲目地追求极致,在高性能架构设计的过程中,还需要关注性能设计中的一些挑战和注意事项,避免引起不必要的资源浪费和研发投入。具体可以参考挑战和注意事项