管理智慧

杏彩娱乐 > 培训知识 > 培训文档 >

12306技术揭秘:传统框架云化迁移到内存数据平台

摘要

12306混合云成功案例给予最大的启发就是打造一个从下到上都可做弹性扩展的“云应用”系统, 企业客户可将关键业务的“子系统”部署在资源丰富的云计算数据中心, “云化”后的子系统可“按需”获取所需要的服务器虚机资源和动态调整网络带宽, 利用这些资源解决在高流量和高负载情况下, 系统无法快速弹性扩展导致的性能瓶颈。

此篇文章列举不同类型的系统改造迁移到云平台方案, 从改造思路探讨, 系统框架设计和项目实施的整个迁移过程, 供大家参考和交流。在此以Pivotal Gemfire云平台为例子,  因为它已有大规模部署成功案例。 客户IT环境是五花八门,  对系统改造的思路和目的也不尽相同, Gemfire是不错的选择, 但它不是唯一的选项。

前言

在过去20年, 系统架构师最常用的系统框架是三层架构设计,  即Web层,  应用业务逻辑层和数据库层;Web层和应用逻辑层可随着业务变化做快速弹性扩展, 但绝大部分关系型数据库层无法实现此功能。 在云计算, 大数据和移动互联网时代, 由于业务成长快速, 服务多样化,  数据量急剧增加, 用户对系统响应时间有更严格的要求; 在高负载情况下, 无法横向扩展的数据库层往往成为系统性能的绊脚石。

在此篇文章, 讨论重点是从软件中间件平台(PaaS)和应用系统(SaaS)层面出发, 使用“分布式内存数据网格( In Memory Data Grid)”技术, 将传统架构改造迁移到云平台。系统改造有多种不同的方式, 主要是要看改造的目的和所受的限制来决定; 为了具体化说明,  我们以下列三个案例提供给读者参考和交流。

  1. 12306项目:整个售票环节的一系列核心子系统都经过高度“云化”。 目的是可以将云化后的子系统“按需”灵活部署在不同的数据中心(公有云或私有云), 提供优质服务。 云化的手段是将子系统业务逻辑和数据都放在Gemfire集群上执行,  利用Map Reduce的技术, 建立可弹性扩展平台, 提供“高性能CPU计算能力”。
  2. 某市社保项目:采取短平快的局部“子系统云化”, 针对有高并发需求会导致瓶颈的子系统进行改造。改造的手段是将子系统业务逻辑和数据放在Gemfire节点上执行, 建立可弹性扩展平台, 利用Gemfire分布式并行查询技术来解决“高并发查询”的要求。
  3. 金融单位POC测试项目: 问题在于系统的查询业务量多, 关联表格多, 在高并发情况下, 查询反应时间长。 POC目的是要验证在不更改子系统业务逻辑限制下, 以最小的代价, 对“数据访问层 (DAO)”进行修改, 建立可扩展的“内存数据缓存层”, 解决“高并发查询“的方案;另外, 还有数据库与Gemfire集群之间“失效转移 fail over”的设计。 以此为基础, 以后再将业务逻辑逐渐放到Gemfire平台, 进行改造升级。

一、12306 混合云的启示

在前两篇文章提到, 2012年春运后12306承办单位-铁科院引入”分布式内存数据网格” 技术, 将余票计算/查询子系统改造迁移到Gemfire云平台, 局部解决12306的主要瓶颈;改造后的子系统在2013年春运时上线, 其效果是显著的, 虽然整个系统运行还是有”卡, 顿”等不足之处, 但铁科院对此技术深具信心坚持改革, 才有后续一连串的子系统改造出炉。在2015年春运, 建立两地三中心混合云的服务模式, 将大部分余票查询流量引导到阿里云提供查询服务;此举的目的是要借助云计算数据中心的资源, “临时性”解决在春运期间由于互联网购票和刷票软件所引发的难预测, 高流量, 和高并发请求, 降低系统不稳定的风险。

12306混合云成功案例最大的启发是给企业客户和政府部门带来新的思路, 就是将关键业务的“子系统”改造迁移到云平台架构, 根据实际情况, 将“云化”后的子系统部署在资源丰富的云计算数据中心(私有云或公有云)。 例如,  12306核心系统在经过全面改造和优化后,  每个云化后的子系统都具有特定的独立性, 因为相关数据都放在Gemfire内存数据网格节点;这意味着这些子系统类似“云”一样,  可以随着业务需求变大或变小, 一分为多, 任性的漂移到多个不同数据中心来协同合作, 避免在IT设备方面的重复投资,  并提高资源的使用率。

云化后的子系统部署在多数据中心, 需要特别注意下列两点建议 :

  1. 如果将子系统部署在公有云提供服务时, 数据隐私的保护和安全性应为首要考虑。
  2. 如果规划将子系统部署在多数据中心时, 在系统框架上必需考虑上下游子系统之间的数据传输或同步/异步的设计。

以12306为例, 两地多中心混合云的架构示意图如下;在春运售票高峰期间可以将余票查询功能部署在多个公有云数据中心提供快速服务(例如阿里云和电信天翼云)。 

站长之家, 12306, 12306网站, 网站数据迁移

两地多中心混合云架构

二、系统改造迁移的思路和需求

随着企业成长, 对于一个复杂的大系统来说,  其业务功能不断增加, 服务方式多样化, 数据存储量越来越大, 但系统性能越来越慢, 而用户对响应时间的要求越来越严格;尤其是在过去5年里, 每年都有新技术的演进 (大数据和分布式内存数据平台)和新业务的衍生(物联网应用, 社交应用平台和移动应用)。

当传统架构系统已逐渐无法满足日趋成长的业务需求时, 有两种方案可供选择,  一是从硬件着手, scale up的选项,  就是更换性能更强大的服务器;二是scale out的选项, 从软件平台着手,  进行应用系统改造, 采取弹性可扩展的框架设计。

更换硬件服务器是最简单的做法,  但以后更换成本会越来越高, 系统性能提升是越来越有限。 软件应用系统的改造, 是一劳永逸从根本做起, 改造成本是与系统的复杂度有关, 是需要全面改造? 还是选择性的局部改造 ?这需要根据实际使用情况来决定。

针对系统的scale out设计, 如果要推翻以前的架构, 重建系统, 那是个大工程, 除非有下列三钟情况:

  1. 系统已经是千疮百孔,  无法再打补丁也无人后续维护
  2. 原有的框架设计已优化到极致, 无论如何优化, 都已经无法满足日益增加的业务需求。 例如, 12306就是典型例子。
  3. 业务流程和组织管理方式有巨大的变动,  需要重建系统

否则, 最省钱和最有效的方法就是针对系统瓶颈做“局部改造”来提高性能, 保护过去的投资。例如, 社保项目就是典型例子

在此篇文章, 讨论的重点是如何将系统改造迁移到云应用平台,  由于每个系统都有其特殊性和复杂性的开发背景, 其设计的系统框架, 所采用的软件平台和开发技术也都随着时间演进而不一样。 因此改造的方式需要依据实际的环境来进行。 

1. 12306 系统改造思路和需求 – 按阶段逐步云化核心子系统 

  • 原来系统是使用Stored Procedure开发, 系统已经优化到极致, 很难再进一步提升性能。 
  • 如果采用scale up的硬件升级, 投资过于庞大; 随着铁路基础建设不断扩大, 业务量也会随着增加, 无法保证硬件升级后的系统性能会满足未来业务成长的需求。另外,  就是春运高峰期过后该如何处置过剩的Unix小型机也必须列为考虑。
  • 承办单位- 铁科院经过仔细评估后, 认为高流量和高并发问题必需采用云计算可弹性扩展的平台和技术来解决。
  • 以分布式内存数据网格” - Gemfire技术为切入点, 以余票计算/查询子系统为试点项目。 采取稳妥的改造策略,  逐年逐步改造和优化其子系统, 解决一系列环节上的瓶颈, 保证在改造期间整个12306系统的稳定运行。
  • 在改造初期, 新旧两套系统必须同时并行运行。 利用CDN(Content Delivery Network)的流量管理功能,  逐渐将流量加压到Gemfire集群, 测试集群在高负载下是否能平稳过渡高峰售票期。
  • 采用“多重Gemfire集群”相互备份的设计, 同时并行运行, 为未来“多数据中心”的部署当试点和铺路。

2. 社保系统改造思路和需求 – 短平快的局部子系统云化

  • 社保制度逐年改革, 新编制组织架构不断扩大, 新业务不断增加, 省市社保人数从数百万级别到某些人口大省超过亿的级别;这些社保缴费资料需要保存达数十年以上,  永随一生,  每年都有数百T甚至P量级的数据存储单位。社保单位必须考虑如何存储这些资料? 如何在大数据量情况下提供快速查询服务? 如何建设一个IT平台能随着未来业务成长而不断的弹性扩容, 此为主要的改造思路。
  • 社保系统是对外的公共服务平台于2008年上线, 此平台是以互联网为载体, 开通企业单位和个人网上申报业务的服务。 在面对日益增加的网络业务办理需求, 平台硬件系统(多部高端Unix小型机)所承载压力逐渐加大。 系统硬件已逐渐出现瓶颈。在2012年1月集中申报期间,  系统的CPU(包含应用服务器和数据库服务器)高达90%以上,  导致系统不稳定, 无法正常访问, 影响重大。
  • 经过社保相关单位仔细评估, 确立系统改造的策略应由两方面着手,  一是建立虚拟化的云环境,  二是针对子系统瓶颈进行局部改造,  改造后的子系统平台需要支持“弹性扩展”, 满足未来日益增加的网上业务。
  • 采用VMware技术搭建虚拟化云平台来提升基础架构的扩展能力, 采用Pivotal Gemfire 可弹性扩展的高速缓存功能,  支持高并发“热点数据”查询服务, 降低原有数据库的I/O瓶颈, 提高整个系统性能和稳定性。

3. 金融单位POC测试改造思路和需求 –建立可扩展的 “分布式内存缓存数据层”

金融单位系统庞大复杂, 所有的子系统从设计到开发都需要严格遵循统一开发流程,

核心子系统业务逻辑不轻易更改。对系统而言, 查询业务量多, 数据量大, 关联表格多, 在高并发情况下, 查询反应时间长。

POC测试目的:

  • 在不改系统业务逻辑情况下, 对“数据访问层 DAO – Data Access Object”进行改造,  建立可扩展的 “分布式内存缓存数据层”;目的是提高业务查询性能, 快速反应查询结果, 降低原有数据库的I/O瓶颈, 提高整个系统性能。
  • 考虑系统稳定性和安全性,  还需要验证“分布式内存缓存数据层”与关系型数据库之间“失效转移 fail over”的设计。
分享到:
点击次数:  更新时间:2015-05-17 14:42  【打印此页】  【关闭

重庆某某企业管理咨询有限公司©2015版权所有 渝ICP备081152456号-2  
友情链接:

技术支持:一品资源网