用Nehalem、SSD和Solaris 打造完美阿里巴巴电子商务平台
基于IT产业不断涌现的各种崭新技术,以及阿里巴巴电子商务业务的不断快速发展,阿里巴巴和英特尔合作对于互联网应用中数据库的新型应用平台展开探讨和研究,开拓了全新的数据库平台,并最终成功部署到阿里巴巴电子商务平台应用环境中,展现了高科技推动互联网生产力的典型驱动力。
本文从架构角度分析几种新技术(Nehalem, Solaris, SSD)的特点,并能够把它们有机的结合起来,充分发挥各自的潜力,相互配合,统一到一个高效的组合中。同时,基于一些测试数据和真实的实际运营的情况,给出较令人信服的论据。最后,本文对将来的发展做进一步展望。
背景介绍
数据库系统的发展,特别是高端数据库,一直是小型机的天下。基于PC服务器解决方案成本低,但往往被认为单台系统性能不能满足大规模系统的要求,更主要的是系统的稳定性和可靠性常常为人诟病。
人脉通是阿里巴巴今年推出的电子商务领域的SNS平台,背靠阿里巴巴强大的交易平台和丰富的用户数目,其对性能的要求在规划时期就被明确地提了出来。同时,基于成本和可扩展性的考虑,阿里巴巴也打算尝试新的数据库平台系统架构,而不是单一的使用小型机。
阿里巴巴数据库平台的特点和业务
数据库系统是典型的IO密集型应用系统,其系统压力瓶颈最容易出现在IO操作方面。对于 Oracle 数据库,由于其优异的实现机制的设计,shared pool 的高效实现,大大降低了解析 SQL 语句所需要的资源。同时,对即使像 MySQL 这样没有 shared pool 机制的数据库,只要访问的数据稍微离散一些,性能瓶颈很快就会出现在 IO 操作上面了。当然,如果系统的访问集中在相对静止的少部分数据的话,瓶颈可能还是会出现在CPU以及其与内存的交互方面,但是这样的系统已经很稀少了。
随着 Web2.0 的流行,互联网信息量的增长简直可以用爆炸式来形容。而 此类Web2.0 类型的应用,由于用户交互性非常高,正是典型的高并发高离散的实时性数据请求类应用,自然就会给数据库带来直线上升的压力。
对于阿里巴巴这样的典型电子商务类型的网站应用,其实质可以被认为是较早涉及Web2.0的应用,也是非常典型的OLTP数据库应用。其最显著的特点就是每个事务处理单元都比较小,即每个事务请求涉及的数据量都很小,但是并发量非常高,而且要求响应时间要非常短。对应到数据库就是会产生大量的离散IO操作,这对于传统的机械硬盘来说无疑是非常致命的,因为硬盘的机械原理决定了离散的小IO请求会让大部分服务时间花在磁头寻道上面。所以,对于高并发的 OLTP 数据库系统,为了解决苛刻的 IOPS 量,不得不使用大量的机械硬盘,通过 RAID 技术将数据进行 strip 处理,来提高存储系统的并发 IO 处理能力,进而提高整个存储系统的 IOPS 能力,以满足前端应用对每次请求的响应时间要求。
另一方面,当传统大规模数据库的IO请求由昂贵的机械硬盘存储设备来满足的时候,处理器的压力也进而增加。现有的解决方案往往是寻求大型的服务器系统,包括多路的小型机等来满足。这样的方案也许能解决一时的需求,但在系统的可扩展性,针对阿里巴巴不断增长的业务数据需求来说,总是会达到瓶颈而无法顺利的满足要求。
最后,对数据库系统,特别是阿里巴巴这样的电子商务类系统,数据的安全性、一致性和可靠性是最重要的。现有的一些方案比如PC服务器配合Linux的方案,在操作系统本身以及文件系统上,确实在这方面要比小型机系统都要逊色。
阿里巴巴人脉通数据库体系架构
综合考虑以上因素,在阿里巴巴规划新的开放平台人脉通系统的时候,恰逢一些新技术的出现和成熟,我们为其推出了全新的体系架构:使用英特尔高性能SSD作为IO存储设备,运行在英特尔全新一代Nehalem服务器平台上,同时采用高可靠的Solaris作为操作系统。下面分别对这个数据库系统的体系结构,使用的新技术以及其和阿里巴巴数据库系统的结合分别进行介绍。 #p#page_title#e#
体系架构介绍
新的体系架构完全基于开放式的PC Server硬件,使用英特尔最新推出的基于Nehalem平台的服务器,配备高性能的SSD磁盘作为存储设备。从软件上看,新架构选择了Solaris作为操作系统,而MySQL则作为最终的数据库软件。同时为了解决数据的高可用和可扩展性两大难题,使用了阿里巴巴自主研发的数据库中间代理层软件(Cobar),使得基于新架构的数据库平台达到了非常理想的状态。
人脉通系统的基本架构如下图所示:
图表 1 阿里巴巴人脉通架构
Cobar 通过数据的切分来解决数据库的扩展问题,不仅支持通过表名来进行垂直切分,还可以通过指定的“key”通过某种特定算法将同一个表中的数据水平切分到多个 MySQL 中,通过垂直和水平拆分,让数据库系统具有了几乎无限的扩展性。
在高可用性方面,Cobar通过两种方式来实现了高可用需求。第一种方式是和MySQL 的 Replication 相结合,同时管理 Master 和 Slave 的连接,当现有 Master 不可用的时候,自动将所有写请求路由到原 Slave 上,在应用端几乎感受不到切换过程带来的任何异常。第二种方式则完全由 Cobar 自行实现,通过实时(或者异步)的将数据写入2个或者更多的数据库中,而且还支持同时写MySQL和Oracle数据库。在任何一个数据库出现异常的情况下,系统仍然可以继续提供完整的服务。
架构中新技术元素分析
英特尔Nehalem平台。Nehalem处理器是英特尔公司2009年初推出的新一代处理器,基于45纳米改进的High-K技术,采用了全新的内存控制器嵌入和QPI互联的架构,增强的酷睿架构和动态智能能耗管理技术,其它还有一些平台技术比如PCIE 2.0,虚拟化IO支持的增强等。基于英特尔Nehalem处理器的服务器能达到高达60%的整形性能、超过100%的浮点性能以及超过200%的内存带宽性能提升。Nehalem 5500系列至强处理器的革命性,集中体现在了三个方面:
智能高性能,可顺应不断变化的业务和应用要求自动优化性能。
自动化高能效,可按比例调整工作负载的能耗使用情况,实现最佳的性能功耗比,并减少运营成本。
灵活强大的虚拟化支持:可在虚拟化环境中提供一流的性能和可管理性,提高IT基础设施的效率和利用率,降低总体拥有成本。
图表 2 英特尔Nehalem系统架构
同时,在数据库事务处理方面,Nehalem平台体现了强大的实力,最新的TPC-C评测结果创造了新的纪录(见图),表明了Nehalem在这方面无可比拟的进步。
表 3 Nehalem的TPCC性能
英特尔SSD固态磁盘。I/O存储速度技术的发展一直落后于英特尔处理器的速度进步,伴随着摩尔定律的更迭,英特尔处理器在过去十几年性能得到了近百倍的提升,而传统硬盘的访问速度不过在1倍之内。两者之间不协调发展阻碍了某些应用,特别是需要大量数据访问应用对处理器的应用。英特尔在2008年适时推出基于Flash NAND技术的固态磁盘,内部10通道提供NATIVE的SATA访问接口。对传统硬盘最高能达到近百倍的IOPS提升。英特尔SSD改变的是I/O性能,提供了大量服务器架构革新的机会。
图表 4 英特尔高性能SSD固态磁盘
SSD可以非常完美地提供应用中对I/O的访问需求,提供了充分利用系统处理器的机会。结合Nehalem处理器,两者的配合使用,可以达到对类似数据库应用的比较充分的平衡高效解决方案。
Solaris操作系统。免费、开放的Solaris操作系统是一个历史证明、业界领先的、可用于关键业务的操作系统,并能帮助客户节约时间和运营成本,它拥有很多其他操作系统所没有的,激动人心的技术特点来帮助提高系统的性能,可靠性,安全性和可管理性,这些重要的技术特点包括ZFS文件系统、DTrace动态跟踪技术、预测性自愈(Predictive Self Healing)以及用来提高系统利用率的Solaris容器。Intel和Sun公司从2007年开始建立了长期的合作关系,来自两个公司的工程师共同对x86平台上的Solaris操作系统进行了大量的性能优化,从而保证Solaris在x86平台上具有最优的性能表现。2009年5月才发布的Solaris 10 Update 7就对Intel最新发布的Nehalem平台进行了大量有针对性的优化工作,从而可以充分发挥出Nehalem平台的强大性能。 #p#page_title#e#
高性能
通过优化的调度器和内存分配优化(Memory Placement Optimization),Solaris操作系统可以充分发挥Intel的QPI(QuickPath Interconnect)技术的能力,从而在非内存访问一致性(NUMA)系统中给应用带来巨大的性能提升。Solaris操作系统还拥有一个杰出的线程模型,使得不管对于客户应用还是业界标准的测试程序,它都能提供超越其竞争对手的性能。尤其是对于Nehalem平台,优化过的Solaris操作系统能够充分发挥出该平台上多核和超线程的技术优势。
可靠性
通过预测性自愈技术,Solaris操作系统可以自动的诊断、隔离软硬件错误、并帮助系统自动恢复。FMA(Fault Management Architecture)是预测性自愈的重要组成部分,它通过接收相关的软硬件错误信息,自动诊断系统发生的问题。一旦诊断,FMA会对问题进行响应,比如停止相关硬件和服务,并建议相应的处理意见给系统管理员。预测性自愈技术可以大大降低Solaris系统宕机的概率。
有效的能耗管理
通过创新的能耗感知调度器(Power Aware Dispatcher),Solaris操作系统可以充分发挥Nehalem平台上能耗管理技术的优势,使得操作系统内核尽可能长时间待在C-state状态,在保证应用性能的前提下可以充分降低系统的能耗。
新技术对数据库平台系统的支持
Nehalem超强的处理能力,让 PC Server 在CPU资源方面已经具有了可以和小型机媲美的运算能力,虽然暂时 PC Server 平台所能够承载的 CPU 数量还比较有限,但是从目前的数据库环境实测数据来看,从单机 CPU 处理能力来比较,一台配备2个4核 Nehalem CPU 的 PC Server 的处理能力已经完全不逊色于配备16个Power 5+ CPU 的 IBM P590。而且从PC Server迅猛的发展速度来看单机达到8个CPU容量的 PC Server 的出现应该不会让我们等待太久。
SSD 磁盘。针对于上面所描述的数据库应用场景,SSD 硬盘有其天生的优势。其几乎可以忽略不计的数据寻址时间,让每次 IO 的响应时间非常之短,从原来在机械硬盘上的毫秒级响应速度缩短了1到2个数量级至微秒级别。在让整个数据库的并发响应能力得到了极大的提高,自然也会让前端应用的响应体验得到了非常大的提升,也让系统的用户体验得到了改善。
Solaris操作系统的很多特性和阿里巴巴的数据库系统结合起来,给整个体系架构带来了很大的帮助,包括系统性能提升,数据的可管理性以及系统利用率的提高等:
ZFS文件系统
众所周知,ZFS这个突破性的文件系统,可以在普通存储设备上实现通常只有高端存储设备具有的管理功能和一些高级特性,使其在易用性和近乎无限的扩展性方面与现有的其他文件系统相比具有非常大的优势。ZFS的管理便利性,极大的降低了系统的运维成本。通过合理的设计,将ZFS与先进的SSD磁盘想结合,使用SSD磁盘作为ZFS的L2ARC,可以在极小的成本投入前提下让整个存储设备的性能得到成倍的提升。此外,ZFS在功能方面也有很多目前仅仅在部分高端存储中才有的高级特性。如基于事务的高度安全的文件操作,支持多种类型设备的 L2ARC,非常高效的 snapshot 功能,基于block级别的快照远程复制功能等等。
ZFS给我们的 MySQL 数据库带来的最大益处就是事务安全的 snapshot 功能以及其基于block的远程复制功能。这对于没有一个很好的物理备份解决方案的 MySQL 来说,提供了一个非常好的备份手段,可以帮助我们在非常短的时间内在线完成备份操作,完全不会影响到线上业务的正常运行。
Dtrace
作为OS层面一个动态监测系统,Solaris 的 Dtrace 可以说是在 OS 上一个非常大的创新。由于监测的数据全部取自运行时状态,所以在性能调优和 Trouble Shooting 方面有着非常大的功用。此外,Solaris 在教育、通信以及金融行业中,都得到了大量的实际场景的证明,具有非常好的稳定可靠性。尤其是在高负载的场景下,Solaris 基本上不会出现因为资源消耗光而无法管理的情况,但Linux就很可能遇到如此的窘况。 #p#page_title#e#
Container
Solaris的Container 通过资源管理技术从 OS 层面提供虚拟化能力,通过相应的配置,在单个物理机器上获得多个逻辑的系统,使得一个系统看上去是逻辑上独立的多个系统。从而提高硬件设备的整体利用率,有效的隔离多个应用之间的相互影响,并降低把多个应用整合到一个系统的成本。
实验测试数据分析
新架构中最主要的两大部件 CPU 和 存储设备的测试效果性能非常理想,不论是 CPU 还是 SSD 磁盘的 IO 能力,表现都非常的好,阿里巴巴对此进行评估数据如下:
通过阿里巴巴专门用于选型数据库主机的系统标准测试套件的压力测试,得到如图所示的下 ATPS 数据。从测试数据可以看出,Intel 用于 PC Server 的 X86架构 CPU 的处理能力各个产品提升非常之快,到Nehalem每核的处理能力已经可以和 小型机芯片不相上下了。
通过 Oracle 所提供的IO测试工具 Orion 实测所得到 IO 能力如下:
8K random read: 约 19000 IOPS
8k random write: 约 16000 IOPS
注:传统的15K FC 机械盘的 IOPS 是无法逾越200的。
新架构中最主要的两大部件 CPU 和 存储设备的测试效果性能非常理想,不论是 CPU 还是 SSD 磁盘的 IO 能力,表现都非常的好,阿里巴巴对此进行评估数据如下:
通过阿里巴巴专门用于选型数据库主机的系统标准测试套件的压力测试,得到如图所示的下 ATPS 数据。从测试数据可以看出,Intel 用于 PC Server 的 X86架构 CPU 的处理能力各个产品提升非常之快,到Nehalem每核的处理能力已经可以和 小型机芯片不相上下了。
通过 Oracle 所提供的IO测试工具 Orion 实测所得到 IO 能力如下:
8K random read: 约 19000 IOPS
8k random write: 约 16000 IOPS
注:传统的15K FC 机械盘的 IOPS 是无法逾越200的。
图表 5阿里巴巴数据库标准套件ATPS性能
实际运营说明
新架构组合不仅在测试中给我们展示了非常卓越的表现,在阿里巴巴实际的应用场景中,所表现出的处理能力也达到了预期的满意水平。阿里巴巴最新推出的商人SNS系统“人脉通”的数据库平台最终部署运行在这套全新架构组合之上,主机主要配置信息如下:
品牌:Dell R710
CPU:X5520
内存:24GB DDR3
磁盘:8 * 64GB Intel SLC SSD
操作系统:Sun OS Solaris 10 Update 10
人脉通的访问链接(http://renmai.china.alibaba.com/)以及主页截图:
人脉通系统仅仅使用了4台上述主机,就非常轻松的支撑起了方便广大商友经营自己人脉关系的强大交互平台。与其他线上系统比较,这4台新架构组合的主机,所具有的CPU处理能力,已经与12到20台配备了2个4核的上一代CPU的2950的处理能力不相上下了,而其随机IO的处理能力更是可以与配有超过100块FC机械盘的中高端存储媲美。
总体和展望
随着 x86 平台芯片技术的飞速发展,PC Server 的处理能力与小型机的处理能力的差距已经越来越小了。虽然目前 PC Server 由于其自身的扩展能力还受到一定的限制,单机所能承载的 CPU 数量有限,但随着分布式架构的日趋成熟,我们对主机的 Scale Up 能力已经并不像多年以前那样非常看重了。而且,随着 PC Server 架构技术的不断发展,单机能够承载 CPU 的数量一定会在不久的将来得到较大的突破。
而 SSD 硬盘的出现,更是可能给整个存储产业带了较大的变革。很长一段时间以来,传统机械硬盘的单个 IO 响应时间一直难以有较大的突破,而随着 SSD 磁盘的出现,这一问题迎刃而解。虽然目前在容量方面还不如传统的机械硬盘,但我们相信随着工艺和技术的提升,SSD 硬盘的容量问题很快就会得到解决了。
通过拥有小型机一样处理能力的 PC Server, 加上可以与高端存储媲美的 SSD 磁盘,运行在高可靠性的操作系统Solaris上,同时结合Alibaba在软件方面的创新,打造高性能高可用可扩展的Web2.0经济型数据库平台已经成为现实,通过数十万的成本构建过去需要数百万甚至上千万的设备才能支撑的系统已经不再是梦想。 #p#page_title#e#
作为一个开放型的平台,数据库本身如何做到很好的可扩展性同时满足极高要求的可用性,是这个系统的关键点。在构建系统过程中,阿里巴巴的目标不仅仅是构建一个开放平台,同时也是以开放的心态与各厂商一起合作,共同打造开放的电子商务基础环境。