12306架构设想(小白的)

  1. 架构综述

通过对12306业务系统的需求分析之后可以发现,架构设计主要要解决的问题有:数据库高并发读写、有效的容灾机制与系统高可用、数据的安全以及对虚拟化云计算的支持。

为解决上述问题,本架构以混合云为云端架构,采用读写分离的分布式架构设计数据库,使用hadoop与openstack统筹算力资源并组织、管理集群,同时利用双活容灾机制保障系统的高可用。具体架构如下图所示:

12306架构设想(小白的)_第1张图片

所用到的与产品主要包括三个层面:云端、分布式系统以及数据库。云端依靠阿里云与openstack进行混合云的部署。分布式系统主要依托hadoop与openstack作为系统支撑,Pivotal GemFire作为分布式内存对象缓存系统进行部署。数据库采用PostgreSQL作为数据库管理系统,Pivotal GemFire作为内存数据库,同时使用HybridDB为大数据计算提供支持。云产品及其关系如下图所示:

12306架构设想(小白的)_第2张图片

  1. 混合云架构设计

混合云是融合公有云和私有云,是近年来云计算的主要模式和发展方向。企业用户出于安全考虑,更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源,所以可以将业务进行分流,同时使用私有云与共有云。

混合云架构以铁路总公司数据中心与铁科院数据中心为私用云,在保障数据安全的前提下,租用阿里云进行查询业务的分流。分流依靠CDN进行请求的分配,提供高质量的网络服务。

12306架构设想(小白的)_第3张图片

  1. 分布式数据库设计

数据库主要由主数据库与下属18个路局的分数据库组成,并采用读写分离机制,主数据库负责数据的写入,分数据库负责数据的读取。数据的写操作主要依赖PostgreSQL进行,而读操作主要依赖GemFire。设计简图如下图所示:

12306架构设想(小白的)_第4张图片

PostgreSQL是一个开源的对象-关系数据库服务器,配合的开源软件很多,很容易做读写分离、负载均衡、数据水平拆分等方案。它在支持大部分 SQL标准的同时有许多现代化的特性和方便快捷的数据结构,这些特性能够解决很多12306的问题如余票统计、单行锁冲突、并行计算等。

GemFire是一个高性能的分布式内存对象缓存系统(内存数据库)。把对象或数据缓存在内存中,减少对传统关系型数据库的读写次数(减少IO瓶颈),从而使我们的应用支持更多的TPS,更多的并发用户数。GemFire能够在部分场景下对关系型数据库起到很好的补充,能够进行低延迟的余票查询。

  1. 数据中心架构设计

数据中心主要由数据库服务器,缓存服务器,web服务器以及业务集群组成,其中业务集群为数据中心的主要算力来源。架构设计图如下所示:

12306架构设想(小白的)_第5张图片

集群与数据中心的组织管理依靠在OpenStack云环境中部署Hadoop集群的方式(主要面向私有云),既最大限度提高了服务器的资源利用率,又大大降低了大数据处理的准入门槛。

Openstack是云操作系统,是将物理机虚拟化的云服务平台,包含各种管理组件及API。它的核心是虚拟化,主要负责云架构系统层的组织与管理。

Hadoop则是“云计算”中分布式计算核心,侧重hdfs云存储与mapreduce云数据分析。它的核心是算力分配,将廉价的计群算力和存储集中。

对于12306系统而言高性能的保障主要由GemFire实现。

GemFire是一个位于应用集群和后端数据源之间的高性能、分布式的操作数据(operational data)管理基础架构。它提供了低延迟、高吞吐量的数据共享和事件分发。GemFire充分利用网络中的内存和磁盘资源,形成一个实时的数据网格,基于内存的海量数据实时处理平台。

它有许多实用的特性:多种网络拓扑、高并发的内存数据结构,避免锁争夺、可选的ACID、序列化和智能缓冲保证消息快速分发、同步或异步写磁盘、冗余内存拷贝。这些特性能够为整个12306系统提供:超低延迟和超高吞吐量、动态的线性扩展能力、持续高可用性、MapReduce并行处理、数据感知路由。

在实际中12306主要面临海量的用户访问带来的高并发问题、余票查询的延迟带来的高流量问题,以及读写分离带来的数据同步问题。

对于高并发问题,GemFire是基于内存的架构,有天然的IO优势,而且本身是分布式数据库,能够分散访问请求,降低负荷。同时很容易实现动态的分布式架构,可以动态添加服务节点。

对于高流量问题,GemFire提供类Map-Reduce的操作以进行并行处理,并将耗时计算单元提前处理,生成查询缓存,即到即用,同时在余票数据变化时动态更新查询缓存。

数据同步则依赖于Gemfire良好的事件处理架构,同时配合Postgresql的异构系统消息服务。具体流程如下图所示:

12306架构设想(小白的)_第6张图片

  1. 容灾与高可用设计

容灾主要依赖铁路总公司数据中心与铁科院数据中心实现双活容灾。两个主备数据中心都同时承担用户的业务,此时,主备两个数据中心互为备份,并且进行实时备份。在业务的分配上,铁路总公司数据中心承担较多的业务,保证了当其中一边发生故障时,不至于造成业务无法处理的情况。架构设计图如下所示。

12306架构设想(小白的)_第7张图片

双活的实现依赖openstack的虚拟化系统管理,同时可以配合HybridDB与PostgreSQL,以及GemFire实现仲裁、自动fallover,fallback以及数据同步。

你可能感兴趣的:(学习)