设计一个高可用性的互联网软件系统需要考虑哪些因素

导语:IT领域的5个9是啥?

写下这个题目时感觉是给自己挖了一个大坑,就像是在尝试回答前段时间在知乎上很火的一个讨论“为什么很多看起来不是很复杂的网站,比如Facebook需要大量顶尖高手来开发?”。人们可能已经习惯于生活中的很多事情,比如你随手拿起手机就可以打一个电话出去,打开一个APP就可以买一件心仪的商品,但是你可曾想过这背后对应的电信领域/IT领域的5个9的要求?那么问题来了什么是5个9?通俗的讲就是一年中有99.999%的时间服务都是必须可用的,也就是意味这一年中只允许最多只有5.26分钟服务是不可用的,这中间还包括系统升级的时间。在飞机系统领域这个要求则达到了9个9,这也是为什么飞机依然是世界上最安全的交通工具。

1、软件系统的非功能性需求

那么设计一个这样高可靠高可用的互联网软件系统到底需要哪些因素呢?本文不会讨论互联网世界纷繁复杂的功能性需求比如电商的购物车如何设计,P2P行业的买卖标如何实现;而是试图探讨在这些看起来完全不同的系统背后所需要的通用的需求,IT领域有个专有的名词来概括这些需求叫做非功能性需求:Non-functional Requirements. 什么是非功能性需求呢,维基上的定义如下是指依一些条件判断系统运作情形或其特性,而不是针对系统特定行为的需求。非功能性需求是一个系统能够达到的高质量,高稳定,高可靠,高性能,高可用的程度。

非功能性需求相对于功能性需求不为大多数人知道,但是并不代表不重要。按笔者理解它也属于用户体验的一部分;试想你打开一个电商网站,数据加载花了1分钟你还有兴趣在这家网站买东西么?那么衡量这个非功能性需求的指标就是系统响应时间-Reponse Time 。再或者一个在线旅游网站连续几个小时网站打不开,损失的不只是几个小时的订单,还有用户的信任度和对品牌的负面影响,衡量这个非功能性需求的指标就是系统的高可用性-High Availability。

非功能性需求听起来是几个简单的指标和衡量标准,可是为了达到一定的性能指标后面所涉及到的技术和系统规模都是常人无法想像的,后面凝聚着无数工程师团队的智慧和劳动。下面的章节笔者会简单介绍一下这几个非功能性需求指标和它们背后对应的一些可能的技术方案。

2、非功能性需求的几个重要指标

2.1高可用性-High Availability

高可用性是一个系统的重要特征,是指一个系统可以连续服务的时间,就是本文开篇提到的5个9,对于5个9的系统来说一年宕机时间不能超过5.26分钟。也许您可能不觉得这个时间算什么,但是如果你知道这里的需求是针对任何可抗和不可抗的情况下都需要满足的需求时就不一样了。不可抗是指发生火灾,地震时你的系统依然能够正常服务。这就意味着你可能不只是需要在上海的机房拥有你的系统还要在北京也拥有一套同样的系统,而且两个系统的数据还必须时同步的,这样才能保证作为一个用户当你使用网上系统时丝毫感受不了任何问题的影响而且连数据都是准确无误的!为了这5.26分钟,攻城狮们需要搭建高可靠的系统,不能有单点故障,建立本地冗余,异活,错误检测和无缝切换,考虑各种极端的情况下如何做数据同步,系统升级时如何做到服务不间断。

2.2性能和可扩展性-Performance and Scalability

性能是指整个软件系统在访问高峰时段能够支持的高峰并发会话数,而可扩展性是指基于单台服务器可支持的会话数基础上是否只是单纯增加服务器数量就能支持成倍增长的会话数。这两年互联网行业蓬勃发展,每天会冒出无数的APP,最初一些小的APP因为客户群体比较小同时在线也不多对系统性能要求和可扩展性也不高,但是如果突然某天APP火起来,用户量激增,那么系统能够快速扩容就是挑战一款应用成败的关键了。因此在设计的初期就把单台服务器的性能调优考虑进去,并且考虑系统是否可以近似线性的扩容是应对这个问题的关键。提高了性能和可扩展性是隐性的节约成本,节省的不仅仅是服务器/IDC和运营成本,还有最重要的是时间成本。

2.3系统的特性-Characteristic

顾名思义,系统的特性是指作为一个独立的系统需要支持的独特特殊非功能性需求。不同的软件系统所需要支持的特性是不同的,比如视频网站需要的低延时,保证视频能够被流畅的播放;P2P网站要求的是数据精准,以保证任何时候用户投资收益是正确的。而无论是视频网站还是P2P系统又都要求系统的响应时间尽量的短,以保证良好的用户体验。因此针对不同的互联网系统,我们需要制定不同的系统特性参数以提高用户的满意度。

2.4系统的可维护性-Maintainability

系统的可维护性在互联网产品初期阶段可能并不能引起很高的重视,因为初期阶段最重要的痛点是快速占领市场。但是等到产品发展到一定阶段,一个系统的可维护性又会成为继续发展壮大的瓶颈。可维护性主要考虑下面几个因素:

3、结束语

软件系统的非功能性需求是一个很大的题目,如果要展开说可能不是这样的篇幅能够涵盖的。在所有的非功能性需求中用户体验是已经被广大互联网用户所了解的,而文中所提到的几个非功能性需求背后对应的都是一个庞大的解决方案需要无数的软硬件系统协作来完成。

套用Fenng所说的:技术的作用从短期来看往往都被高估,但是从长期来看又往往被低估。

本文作者:陈琨(点融黑帮),现任点融网资深软件开发工程师,曾就职于爱立信,华为,关注于高并发高可用的互联网软件系统设计和开发。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容