架构师训练营总结 -20200627

用户头像
caibird1984
关注
发布于: 2020 年 06 月 30 日

本周的课程中,我们首先了解了互联网应用所面临的挑战,也就是常见的“高并发、高可用、7x24小时服务、海量数据”等。与传统软件项目不同,互联网应用面向的是全网用户,全国14亿人口甚至全世界的人口理论上都是应用的潜在用户,因此首先从并发量上来看就会高于传统软件项目(如之前服务柜员和ATM的银行系统,或服务企业内部的应用系统);此外,由于海量的用户基数,用户对待软件的态度也千差万别,最典型的情况就是黑客的存在,大型的互联网应用几乎无时无刻不在遭受攻击;最后,由于用户覆盖的范围大,导致用户的访问习惯、时差等也有较大差异,因此大型的互联网应用通常需要提供7x24小时不间断的服务,试想网上银行项目在转账的时候遭遇系统故障,或在电商网站购物支付到一半时出现系统宕机,这对于用户的体验都是毁灭性的打击。



因此为了应对上述情况,出现了解决上述问题的方法论,那就是将系统架构设计成支持水平伸缩的模式。由于硬件的升级存在成本和性能的瓶颈,因此对于大型互联网应用而言,水平伸缩的架构模式允许使用理论上无限多台服务器来不断扩展自己应用的处理能力,更加适合解决互联网应用面临的挑战。



但是水平伸缩在软件设计、开发等方面对开发者有着较高的要求,特别是还要考虑上述7x24小时不间断服务的情况下还要保持高频率对软件进行迭代,这是对软件架构设计是否合理的一个重大挑战。回顾目前耳熟能详的大型互联网项目,如谷歌、FaceBook、淘宝、新浪微博等,大多都是从一个非常简单的架构模式,历经数年,通过无数次大小版本的重构才逐渐演化到如今的规模和架构。软件本质上是为需求服务的,而每个互联网应用所需满足的功能不同,用户分布不同,企业文化、流程制度等都有所不同,这就导致每个大型互联网项目的设计只能借鉴,无法完全复制。例如维基百科虽然从规模上看已经是名列世界前茅的互联网应用,然而其技术架构相对电商类软件的而言会显得过于简单,主要强调的是对缓存的应用和读写压力的分担;随着近几年直播和短视频应用的兴起,这些应用的所面临的问题在于海量并发场景下的流媒体传输、CDN、包括实时内容推荐等,因此在架构设计上又会有所不同。



因此优秀的架构,特别是成功经受住高并发、不间断服务考验的互联网应用的架构设计,几乎都是不断迭代而来,鲜有一次性设计到位的应用。这不仅是由于成本的问题,更是需要在不断迭代的过程中,关注每个应用需要解决的具体问题而发展而来。因此如何保证在不间断服务的情况下进行软件功能的迭代,如何做到软件的自动化管理这些命题,是个人今后需要着重加以了解的。

用户头像

caibird1984

关注

还未添加个人签名 2018.04.28 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营总结-20200627