论文部分内容阅读
现在的旅游业在中国的GDP(Gross Domestic Product)的比重还很小,只占3%,但是这个比例正在快速增长。在发达国家,旅游业的占比是中国的好几倍,制造业的占比不到30%,而且还在不断下降。相对比,旅游业的占比正在上升。随着旅游业的不断发展,外出旅游的需求越来越多,这使得像携程这样的OTA(Online Travel Agent)公司的订单量不断上升,对系统处理订单的能力提出了很高的挑战,原有通过手工处理订单的订单系统已经无法满足要求。因为随着订单量的上升,原有需要人工操作的订单系统就需要更多的人去操作订单系统,这不但是公司的成本进一步增加,另外人工操作订单系统的速度也很慢,无法做到实时处理。因此将旅游订单处理系统从人工处理变成自动处理便变得非常重要。本文首先对系统的需求进行了分析,最终得出系统分自动处理订单过滤、自动处理引擎、异常订单处理、自动处理配置四大模块,另外系统需要满足扩展性、可用性、性能这三项非功能性需求。针对系统的需求本文提出了一个基于工作流和SOA(Service Oriented Architecture)的度假订单自动处理系统。订单自动处理过滤模块采用携程内部已有的Job平台,定时扫描订单,将订单按照规则和自动处理流程进行关联。自动处理引擎采用工作流思想进行设计,把订单的每一个处理步骤抽象成工作流流程中的一个节点,把订单的处理流程抽象成一个工作流。最后通过动态配置每一个节点的顺序从而形成一个订单自动处理的流程,每一个订单会针对自动处理过滤分配的流程产生一个流程实例,在整个订单的处理过程中会一直运行这个实例,一直到订单处理完成。自动处理引擎最终公布一个SOA接口,供自动处理调度Job进行调度。订单自动处理调度Job采用携程内部的Job平台,定时监控订单的数据,对于需要自动处理的订单实时调用自动处理引擎公布的SOA接口,从而完成订单的自动处理。对于在自动处理过程中发生异常无法进行自动处理的订单,由自动处理引擎将订单放入异常订单处理队列,由异常订单处理模块进行处理。自动处理的配置采用携程已有的配置平台,可以实现动态配置自动处理Job,自动处理需要监控的数据等。为了满足系统的非功能性需求,系统的功能以SOA服务的形式对外公布,服务部署在集群中,从而实现了服务器级别的动态扩展,为了满足并发性需求,本系统采用了Redis锁实现了分布式并发控制。系统采用目前成熟的编程语言C#进行了编码实现,数据库采用了Microsoft Sql Server 2015。系统已经在携程上线正式使用,自动处理订单量日均超过10000单。