应用现状比较
由于历史原因,集中式架构多用于传统银行、电信等行业。主机资源集中在大型主机或小型机上。集中式架构下,包括操作系统,中间件,数据库等“基础软件” 均为闭源商用系统。集中式架构的典型案例是 IOE(IBM, Oracle,EMC)提供的计算设备、数据库技术和存储设备共同组成的系统。
近年来,分布式架构在 Google、 Amazon、Facebook、阿里巴巴、腾讯等互联网公司广泛应用基础上、也越来越多被金融行业关注和应用。分布式架构一般采用性价比更高的 PC 服务器、分布式数据库和大量 PC 内存闪存,程序同时运行在众多 PC 服务器上。
图 1 集中式和分布式系统示意图
核心要素比较
以下是两种架构的核心要素的对比分析:
表 1 集中式和分布式架构核心要素对比
业务支撑能力比较
客观讲,分布式架构在价格成本、自主研发、灵活兼容、伸缩扩展方面有比较显著的优势。互联网行业具有请求量大,数据量大的特点,业务上又可能在集中的时间段出现高于日常流量数倍的业务高峰,这些特征对架构的可扩展性提出了极高的要求。
在集中式架构下,为了应对更高的性能,更大的数据量,往往只能向上升级到更高配置的机器,如升级更强的 CPU,升级多核,升级内存,升级存储等,一般这种方式被称为 Scale Up,但单机的性能永远都有瓶颈,随着业务量的增长,只能通过 Scale Out 的方式来支持,即横向扩展出同样架构的服务器。在集中式架构下,由于单个服务器的造价昂贵,所以 Scale Out 的方式成本非常高,无法做到按需扩展。而分布式架构的解决方案是基于廉价的 PC Server 来做 Scale Out, 借助高速网络组建的 PC 集群在整体上提供的计算能力已大幅高于传统主机,并且成本很低,横向的扩展性还可带来系统良好的成长性。
蚂蚁金服通过几年架构演进,已经从初级的服务器可扩展、数据层可扩展发展到 IDC 层面的可扩展。一旦采用了分布式架构,天然支持按需扩展,唯一的要求是在设计上保持每个应用节点不保存状态信息。随着业务量从几百笔/秒到几万笔/秒级别时,需要更多的服务器来支撑,数据库单表的性能会成为瓶颈。数据量也会从 GB 迅速飙升到 TB、PB,单数据库实例的容量也会成为瓶颈。数据层会采用分库分表的策略来支持业务量的增长,具体策略根据业务场景可分为垂直拆分(按业务)、水平拆分(按请求/用户做哈希,或者做区间拆分)、读写拆分等。最后会通过统一分布式数据访问组件来屏蔽数据扩展的复杂性。下图简单描绘了服务器扩展性