[铁道部信息化管理]核心业务需求及逻辑架构分析

快要太监了 :-(

由于各种个人原因, 铁道部的这个博文系列中止了很久。最近终于连自己都不好意思了。所以还是继续完成它吧,估计1-2周一篇的节奏。

感觉不先划分一下大的系统架构总会让大家感觉有点头晕, 不过没能力对整个12306进行设计,这个货太大了。只是借这个机会谈谈自己对系统结构分析的一些感想

朴素的面向对象分析

面向对象是一个万金油,但是据说真正懂的人不多是吧?

我对面向对象的感觉就是: 他本质上是对现实世界的抽象,其表面现象是不断细分对象的粒度,提升对象的抽象度。最终形成一种用有限数量的独立的对象“积木”构造整个需求不断变化的系统的目标。

而系统级别的分析也大致如此,我们可以借鉴类分析中的很多概念,不断划小系统规模,剥离职责,抽出依赖性。

一般系统结构

这里只是一个简单模型,用以表达我对多数项目的结构分析。

配置数据服务:系统运行所需要的动态配置信息
资产数据服务:所有实际或虚拟的“物”的管理(CRUD),甚至可以包括人。
业务数据服务:该企业实际经营的业务产生的数据。超市的收银记录,企业的销售记录,铁道部的售票记录
报表数据服务:各类统计报表需要的

其中业务系统和业务数据服务应该是最核心的部分。

一般而言,那些配置和资产管理的部分不会造成严重的性能问题。只要在实现CRUD的时候多考虑考虑相关的业务需求,努力做到任何资产的属性变动时,确保相关的业务完整性就好(出租公司管理系统里,一辆出租车今天还在运营,后台系统绝对不应该可以轻松地把它标记成报废车辆,连软删除都是不合理的做法)。

12306之所以能招全国人民围观,我觉得主要还是花的钱和大家的感受之间有落差。而我阴暗的以为这个问题的核心部分就在票务处理的部分。

所以我后续的几篇博文都会围绕票务处理里面的内容展开。

另外,我要大家了解的是,我是要设计一个合理的区间票售票系统核心。而不是实现铁道部的需求。本质上我认为铁道部不会说清楚他自己的需求,而太极公司的需求分析有可以进一步深挖的可能。

12306核心需求及模块分析

整体架构没法子设计,太大了。有兴趣的可以参考

中国铁路客票发售和预订系统5_0版的研究与实现
国铁路客票发售和预订系统5.0版本(TRSv5.0)售票与经由维护操作说明

目前我专注的是用于订票的部分。我感觉这个是最重要的部分。

12306最大的问题,就是如何在订票的时候高效率得并且适当优化得找到需要数量的车票。并且要能彻底保证一张票不会被两个请求同时处理成功。

只要这个问题无法彻底解决,任何分布式处理,最终都会卡在这个问题上。

我会涉及到的模块

12306票务处理功能模块分析

假想完整网络订票流程图

这里实际的用户和系统的交互有4种类型。

1、车次和余额查询

2、订票

3、取消订票

4、确认订票

这里希望广大围观群众都来评估一下这个假设的订票流程及其参数是不是都合理?如果这个流程本身不合理,则我后续的分析都要重写了。不熟悉售票流程的,可以看看我之前的分析文章

然后我们继续来细化一下

车次和余额查询

输入:起始站,终到站,日期,座位类型集合

输出:车次,对应座位类型可售余额

作用:最终用户根据查询结果选择需要出行的车次,并进一步进入订票操作。但是系统不保证显示为有票的车次在下一步操作中必然有票。

这里其实涉及到两个类型的查询

1、哪些车次符合用户的查询结果,可以通过一个基本固定不变的数据源来提供。而该数据源可以实现分布式缓存以缓解查询压力,甚至可以考虑客户端部分结果缓存。
输入:起始站,终到站,日期
输出 :车次列表,

2、特定车次,特定座位类型的可售票数量。这个数据的来源应该和第一个查询不同。
输入:起始站,终到站,车次,日期
输出:数量

订票(我喜欢称它为锁票)

输入:起始站,终到站,日期,座位类型,需要车票数量,用户ID

输出:实际到的获取车票数量

作用:最终用户通过订票操作,顺利锁定需要数量的车票。系统保证用户在规定的时间段内对这几张车票具有优先订购权利,且其他人不得购买这些车票。

目前我感觉留给用户10-15分钟时间继续后续操作,以进入支付环节(当然,这必须是在系统本身性能良好条件下。否则点个按钮就要等10分钟,那就不对了。)
同时如果超时,则系统会在后续订票操作中忽视该锁定状态。

取消订票

输入:起始站,终到站,日期,座位类型,数量,用户ID

输出:成功标志

作用:用户放弃已经获得的被锁定的售票权利,系统恢复对应的数据为可售。

确认订票(确认支付)

输入:起始站,终到站,日期,座位类型,数量,用户ID,支付相关信息

输出:成功标志/确认失败(刚好锁定超时,且被他人订走)

作用:最终确认售票,系统向第三方支付服务提交确认请求。

原文地址:https://www.cnblogs.com/Chinese-xu/p/3453355.html

原文地址:https://www.cnblogs.com/jpfss/p/10863653.html

时间: 2024-08-08 23:34:41

[铁道部信息化管理]核心业务需求及逻辑架构分析的相关文章

ANDROID窗口管理服务实现机制和架构分析

 一.功能 窗口管理是ANDROID框架一个重要部分,主要包括如下功能: (1)Z-ordered的维护 (2)窗口的创建.销毁 (3)窗口的绘制.布局 (4)Token管理,AppToken (5)活动窗口管理(FocusWindow) (6)活动应用管理(FocusAPP) (7)输入法管理 (8)系统消息收集与分发 这些功能主要由一个窗口管理服务和相应的客户端来实现的,客户端通过BINDER机制与服务实现交互.       窗口管理服务端负责主要的窗口管理功能,由一个WindowMan

ANDROID窗体管理服务实现机制和架构分析

?? 一.功能 窗体管理是ANDROID框架一个重要部分,主要包含例如以下功能: (1)Z-ordered的维护 (2)窗体的创建.销毁 (3)窗体的绘制.布局 (4)Token管理,AppToken (5)活动窗体管理(FocusWindow) (6)活动应用管理(FocusAPP) (7)输入法管理 (8)系统消息收集与分发 这些功能主要由一个窗体管理服务和对应的client来实现的,client通过BINDER机制与服务实现交互.       窗体管理服务端负责基本的窗体管理功能,由一个W

集团信息化之路——物资库存管理软件需求报告

  根据集团要求,为加快推进集团信息化和工业化的"两化"融合的进程,信息部结合现用物资库存软件的应用情况并对集团对物资库存管理的需求进行了整理,对物资库存管理软件的推进计划汇报如下: 一.现有应用物资管理软件的基本情况 集团各子公司现在应用的物资管理软件是由分公司微机员王xx在2007年根据所在分公司的库存管理需要开始设计开发,并在分公司应用的基础上先后在集团范围内推广应用.该软件实现并解决了各子公司单体分厂对物资库存查询.进出库.库存盘点等的管理,并实现了与金蝶系统的数据对接. 该软

ERC系统理论的提出与研发成功,是企业信息化管理史上划时代的革命

ERC系统理论的提出与研发成功,是企业信息化管理史上划时代的革命! 一.企业管理软件市场存在的严重问题. ERP系统理论于1990年提出,至今已有二十五年历史,巨大的市场空间吸引了一大批的软件厂商进入此市场,虽然市场发展迅猛,但是企业信息化管理应用的普及工作却举步维艰,企业怨声载道.商翼通过详细的市场调研发现,目前企业管理软件市场存在如下几个方面的严重问题: 1.系统设计过于僵化死板.用户体验差.适应性更差.现有的管理软件还是完全采用二十五年前提出的ERP系统设计思想与理念,设计模式相互抄袭,基

mysql 概念和逻辑架构

1.MySQL整体逻辑架构 mysql 数据库的逻辑架构如下图: 第一层,即最上一层,所包含的服务并不是MySQL所独有的技术.它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等. 第二层值得关注.这是MySQL的核心部分.通常叫做 SQL Layer.在 MySQL据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断, sql解析,行计划优化, query cache 的处理以及所有内置的函数(如日期,时间,数学运算,加密)等等.各个存储引擎提供的功

mysql高级教程(一)-----逻辑架构、查询流程、索引

mysql逻辑架构 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用.主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离.这种架构可以根据业务的需求和实际需要选择合适的存储引擎. 1.连接层 最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信.主要完成一些类似于连接处理.授权认证.及相关的安全方案.在该层上引入了线程池的概念,为通过认证安全接入的客户

异构混合多云管理的需求,如何在SDN平台落地丨TF成立大会演讲实录

本文整理自华胜天成云计算研发与产品中心总经理李明军在"TF中文社区成立暨第一次全员大会"上的演讲.更多会议资料,请在公众号后台回复"成立大会"获取. 华胜天成云计算研发与产品中心总经理李明军 非常高兴有机会跟大家分享,华胜天成在云计算开源网络落地方面的经验. 我们接触Tungsten Fabric是在2019年上半年,到现在有半年多的时间,非常欣喜地看到这样一个出色的解决方案能够放到社区里来. 企业用户需求:开放.异构.场景化 在过去的十年里面,我们看到云计算从一个

MySQL基础篇(05):逻辑架构图解和InnoDB存储引擎详解

本文源码:GitHub·点这里 || GitEE·点这里 一.MySQL逻辑架构 1.逻辑架构图 基于下面的逻辑架构图,可以大致熟悉MySQL各个架构组件之间的协同工作关系. 很经典的C/S架构风格,即客户端/服务端模式. 2.分层描述 客户端连接 通常会进行连接池管理,连接用户权限认证,安全管理等操作. 可以通过如下命令查看连接配置信息:SHOW VARIABLES LIKE '%connect%';可以看到最大连接和每个连接占用的内存等相关配置. 核心功能 第二层架构封装MySQL一系列核心

分布式架构之--逻辑架构与物理架构

原文:http://blog.csdn.net/dinglang_2009/article/details/38636151?utm_source=tuicool 在现实开发过程和工作中,我们经常听到“架构设计”和“架构师”这样的名词,它并不神秘,但是却很少有人对“架构”有全面的了解和认识,更谈不上掌握了.事实上,也只有极少数人能成为或者被冠以“架构师”这样的title.为此,笔者总结了实践中对架构的一些理解,希望能够补充很多人对此认识上的不足,纠正一些误解. 架构的分类 对于“架构”来讲,理论