移动电商时代的互联网综合应用平台
作者:暂无
来源:《上海信息化》 2017年第1期
传统IT架构的技术瓶颈
数据库管理系统是企业IT架构的核心,传统单机数据库采用纵向扩展(Scale-Up)思路,通常只能支持几个TB(Trillionbyte万亿字节)的数据存储和处理,远远不能满足当前移动电商发展的实际需求。
为了达到高性能和大容量数据存储要求,采用集群设计的OLTP(On-Line Transaction Processing,联机事务处理)系统逐步成为主流。常见的企业数据库集群如Oracle RAC等通常采用Share Disk(磁盘共享)模式,数据库服务器之间共享资源,如磁盘、缓存等。当性能不能满足需求时,要依靠升级数据库服务器(一般采用小型机)的CPU、内存、磁盘,来达到提升单节点数据库服务性能的目的。另外,可以增加数据库服务器的节点数,依靠多节点并行和负载均衡来达到提升性能和系统整体可用性的效果。但当数据库服务器节点数量增大时,节点之间的通信将成为瓶颈问题。此外,处理各个节点对数据的访问控制将受制于事务处理的一致性要求。从实际案例来看,4节点以上的RAC(Real Application Clusters,实时应用集群)非常少见。
根据摩尔定律,处理器性能每隔18个月将增加一倍,而DRAM(Dynamic Random Access Memory,动态随机存储器)性能大约每10年才会增加一倍,这令处理器和内存性能形成“剪刀差”。虽然处理器性能飞速提升,但由于磁盘机械转速与磁臂寻道时间的,磁盘存储性能提升缓慢,硬盘的IOPS(Input/Output Per Second,每秒读写)性能近10年来基本没有太大提升,基于HDD(Hard Disk Drive,硬盘驱动器)的磁盘阵列存储越来越成为集中式存储架构的性能瓶颈,而全闪存阵列受限于高昂成本和擦写寿命,还远达不到大规模商用要求。
因此,IOE的集中存储方式存在性能、容量与扩展性的局限,同时成本居高不下。而X86和开源数据库技术的飞速发展,NoSQL、Hadoop等分布式系统技术的逐渐成熟,互联网化带来的高并发、大数据处理要求,使系统架构开始从集中式的Scale Up(纵向扩展)架构向分布式的Scale Out(横向扩展)架构发展。
IT互联网化的挑战与应对之道
根据 Gartner IT专家预测的十大信息科技趋势,会在未来三年对行业产生重大影响。其中之一就是“网络规模IT”,即越来越多的公司会建造类似亚马逊、Google和的应用架构。这将使网络规模IT成为商用硬件平台,使新模式、云优化、软件定义方法成为主流。开发和操作的协同是向网络规模IT发展的第一步。但传统IT系统在向互联网化方向转型时,通常需要面对以下技术挑战。
性能。用户体验是影响转化率的重要因素,据统计,如果4秒打不开网站,将有60%顾客流失,糟糕的用户体验会导致大量客户选择放弃或从竞争对手处购买服务。企业如何在高并发访问情况下保证系统的低延迟响应,并提升用户体验?
伸缩性。互联网尤其是移动互联网用户的访问行为是动态的,在一些特殊热点引爆后,流量通常能达到平时的十倍甚至几十倍以上。如何快速响应业务爆发时的资源开销需求,提供无差别的用户体验?
容错与最大可用性。互联网应用系统基于分布式计算架构部署,基于大量的X86服务器和通用网络设备。机器总有损坏概率,当机器数量达到一定规模时,小概率事件就成为常态。那么当硬件出现故障时应如何自动化处理?此外,是人就会犯错,会在开发中出现Bug,怎么进行系统的损害控制?如何基于单机QPS(每秒查询率)和并发数对服务端和客户端进行限流,从而实现动态流量分配?
容量管理。系统性能一定会到达瓶颈,如何进行更科学的容量评估和扩容?如何自动计算前端请求与后端机器数量的对应关系?如何对软硬件容量需求进行预测?
服务化。如何将业务逻辑功能抽象成一个个原子服务,对服务进行封装和组合,并基于分布式系统环境部署,实现更灵活的业务逻辑和流程?如何从业务视角理清这些服务的关系,对大规模分布式系统中的单条服务调用链进行跟踪与展现,并及时发现服务调用异常?
低成本。随着系统演进性能指标不断发生变化,如何保证以最低成本满足特定访问量的要求?
自动化运维管理。不断发展的大规模系统需要不断维护、快速迭代和优化。如何应对从一台到上千台甚至上万台服务器的运维量变?怎样通过自动化工具和流程来管理大规模软硬件集群,从而实现系统快速部署、升级、扩容、维护?
随着业务快速发展,很多企业从LAMP(Linux+Apache+Mysql/MariaDB+Perl/PHP/Python,搭建动态网站或服务器的开源软件)架构到IOE(IBM 小型机+Oracle 数据库+EMC存储)架构,再到分布式架构,最终发展为当前云计算平台架构,并不断尝试解决上述技术问题。
电商系统技术架构变迁
近年来,国内IT厂商逐步升级IT技术架构。以金蝶为例,自2010年创立电商事业部以来,金蝶电商业务尤其是移动电商业务发展迅猛,每年以超过100%的速度飞速成长。相关业务创立之初,为了快速上线、抢占市场,金蝶选择了当时流行的LAMP架构,以PHP为系统开发语言,Linux为操作系统,Apache为Web服务器,MySQL为数据库,不到三个月金蝶电商产品就成功上线。当时,整个网站应用服务器大概10台左右,MySQL数据库采用读写分离、一主两备的部署方式。
2011年,在电商业务发展推动下,金蝶参考天猫、腾讯等大型电商企业的解决方案,将LAMP架构改造为IBM小型机+Oracle数据库+EMC存储的IOE架构。虽然方案成本昂贵,但性能得到大幅提升。同时,伴随用户不断增加,系统有些不堪重负,金蝶当时最担心的问题是如果流量持续增加、交易量持续增长,系统架构应如何设计?如何选择数据库?如何选择缓存?如何构建业务系统?
此后,金蝶参考eBay的互联网架构,设计了一个Java技术方案,并使用了诸多Java开源产品。譬如选择当时很流行的JBoss作为应用服务器,选择了开源的IOC容器Spring来管理业务类,封装了一个数据库访问工具IBatis作为数据库和Java类的Object-Reletionship映射工具。另外,对于商品搜索功能,采用自己开发的ISearch搜索引擎取代Oracle数据库搜索,降低数据库服务器压力。做法其实很简单:每天晚上将Oracle小型机数据导出,建立ISearch索引,当时商品量不大,一台普通配置服务器,基本可以将所有索引放进去,不用做切分,直接做一个对等集群。
自2012年开始,为了改善用户体验,金蝶开始建立自己的CDN(Content Delivery
Network,内容分发网络)站点,自建CDN可使相关资源离用户更近,提升用户访问速度,改善用户浏览网站的体验。
2013年“双11”当天,金蝶系统创建了超过100万笔交易。当时面对的主要问题是:一些系统流量巨大,如订单信息等,如果直接访问数据库,会导致数据库压力非常大。金蝶采用分布式缓存TDBM将这些热点静态数据缓存在内存中,提高访问性能。另外,将自己研发的分布式文件系统TFS部署在多台X86服务器上,取代商业NAS存储设备来存储各种文件信息,如商品图片、商品描述信息、交易快照信息,从而降低成本、提高整体系统容量和性能,同时实现更灵活的可扩展性。此外,将ISearch搜索引擎改为分布式架构,支持水平扩展,部署了6个节点。
同年,为了解决Oracle数据库集中式架构的瓶颈问题(连接数等),金蝶将系统进行拆分,按照用户域、商品域、交易域、店铺域等业务领域,建立了20多个业务中心,如商品中心、用户中心、交易中心等。所有用户访问需求的系统,必须使用业务中心提供的远程接口来访问,而不可直接访问底层的MySQL数据库,通过HSF远程通信方式来调用业务中心的服务接口,业务系统之间则通过Notify消息中间件异步方式调用。
转型云计算平台架构
2016年,金蝶重点着眼于统一架构体系,从整体系统层面考虑开发效率、运维标准化、高性能、高可扩展性、高可用、低成本等要求,底层基础架构统一采用了阿里云计算平台,使用阿里云计算服务,并通过阿里云服务提供的高可用特性,实现双机房容灾和异地机房单元化部署,为金蝶业务提供稳定、高效、易于维护的基础架构支撑。
从IOE架构向云计算平台技术架构转移过程中,主要面临以下几方面挑战。
可用性:脱离小型机和高端存储的高冗余机制,采用基于PC服务器分布式架构的云计算平台能否做到高可用?
一致性:Oracle基于RAC(实时应用集群)和共享存储实现物理级别一致性,基于RDS (Relational Database Service,关系型数据库服务)for MySQL能否达到同样的效果?
高性能:高端存储的I/O接口能力很强,基于PC服务器的RDS能否提供同样、甚至更高的I/O处理能力,MySQL、Oracle对SQL的处理性能是否相同?
扩展性:业务逻辑如何拆分?如何服务化?数据分多少库、多少表?以什么维度分?后期二次拆分怎样才能更方便?
金蝶基于阿里云计算平台,通过采用合适技术策略和最佳实践,包括应用无状态、有效使用缓存(浏览器缓存、反向代理缓存、页面缓存、局部页面缓存、对象缓存和读写分离)、服务原子化、数据库分割、异步解决性能问题、最小化事物单元、适当放弃一致性,以及采用自动化监控/运维手段,包括监控预警和配置统一管理、基础服务器监控、URL(Uniform Resoure Locator,统一资源定位器)监控、网络监控、模块间调用监控、智能分析监控、综合故障管理平台、容量管理等,可以很好地解决以上问题,从而达到整体系统高可扩展性、低成本、高性能和可用性的实现效果。
经过六年多不断试错、调整、优化,金蝶面向移动电商的互联网综合应用平台已初具规模,并在实际应用中广受好评。但技术无止境,面对瞬息万变的市场需求,IT企业应持续创新,不断完善综合服务平台,才能助力客户创新发展,继而实现自身成长。
(本文作者系上海金蝶蝶金云计算有限公司行业事业部副总经理、市场总监)