17 站架构的伸缩性设计

曾经讨论过,大型 站不是一开始就是大型 站的,而是从小型 站逐步 演化而来的,Google诞生的时候也才只有一台服务器。设计一个大型 站或者一个大型 软件系统,和将一个小 站逐渐演化成一个大型 站,其技术方案是完全不同的。前者 如传统的银行系统,在设计之初就决定了系统的规模,如要服务的用户数、要处理的交 易数等,然后采购大型计算机等昂贵的设备,将软件系统部署在上面,即成为一个大型 系统,有朝一日这个大型系统也不能满足需求了,就花更多的钱打造一个更大型的系统。而 站一开始不可能规划出自己的规模,也不可能有那么多钱去开发一个大型系统,更 不可能到了某个阶段再重新打造一个系统,只能摸着石头过河,从一台廉价的PC服务器 开始自己的大型系统演化之路。

在这个渐进式的演化过程中,最重要的技术手段就是使用服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力。这就是 站系统的伸缩性架构,只要 技术上能做到向集群中加入服务器的数量和集群的处理能力成线性关系,那么 站就可 以以此手段不断提升自己的规模,从一个服务几十人的小 站发展成服务几十亿人的大 站,从只能存储几个G图片的小 站发展成存储几百P图片的大 站。这个演化过程总体来说是渐进式的,而且总是在“伸”,也就是说, 站的规模和服务器的规模总是在不断扩大(通常,一个需要“缩”的 站可能已经无法经营下去了)。但是这个过程也可能因为运营上的需要而出现脉冲,比如前面案例中提到的电商 站的 促销活动:在某个短时间内, 站的访问量和交易规模突然爆发式增长,然后又回归正 常状态。这时就需要 站的技术架构具有极好的伸缩性一一活动期间向服务器集群中加 入更多服务器(及向 络服务商租借更多的 络带宽)以满足用户访问,活动结束后又 将这些服务器下线以节约成本。

国内有许多传统企业“触 ”,将传统业务搬上互联 ,这是一件值得称道

的事,传统行业与互联 结合将会创造出新的经济模式,改善人们的生活。但遗 憾的是,有些传统企业将自己的管理模式和经营理念也照搬到互联 领域一一在 技术方面的表现就是一开始就企图打造一个大型 站。

一般说来, 站的伸缩性设计可分成两类,一类是根据功能进行物理分离实现伸缩, 一类是单一功能通过集群实现伸缩。前者是不同的服务器部署不同的服务,提供不同的 功能;后者是集群内的多台服务器部署相同的服务,提供相同的功能。


[](()1 不同功能进行物理分离实现伸缩

站发展早期——通过增加服务器提高 站处理能力时,新增服务器总是从现有服 务器中分离出部分功能和服务,如图6.1所示。

每次分离都会有更多的服务器加入 站,使用新增的服务器处理某种特定服务。事 实上,通过物理上分离不同的 站功能,实现 站伸缩性的手段,不仅可以用在 站发 展早期,而且可以在 站发展的任何阶段使用。具体又可分成如下两种情况。

纵向分离(分层后分离):将业务处理流程上的不同部分分离部署,实现系统伸缩性,

如图6.2所示。

横向分离(业务分割后分离):将不同的业务模块分离部署,实现系统伸缩性。

横向分离的粒度可以非常小,甚至可以一个关键 页部署一个独立服务,比如对于 电商 站非常重要的产品详情页面,商铺页面,搜索列表页面,每个页面都可以独立部 署,专门维护。


文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92904 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月25日
下一篇 2022年3月25日

相关推荐