您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 分布式数据库系统课程设计说明书
分布式数据库系统课程设计说明书题目:分布式旅行订票系统院(系):计算机与控制学院专业:计算机应用技术学生姓名:何伟贤童学斌李明珍蒋美君学号092031115/09211207/092031118/0920311062010年6月10日分布式数据库课程设计说明1、课程设计分析1.1项目目标:用java组建一个分布式应用系统,它用来实施一个简单的旅行预定系统1.2总体设计主要根据《分布式旅行预定系统》中所表述的内容,使用java语言建立了一个建议的分布式的旅行预订系统,系统采用C-S结构,主要用到了java语言中的RMI(远程方法调用)实现不同的计算机之间通信,以及采用java.util.concurrent包中的方法控制程序的并发性。总体设计结构图1.3功能描述系统的功能是用户通过在客户端的操作访问服务器资源,并进行资源的增加查看以及修改(预订)。数据库采用分布式的结构将机票信息,宾馆信息,出租车信息以及顾客信息分布在不同的服务器上,并通过一个主Server(协调者)进行总体上的控制。系统分为主服务器(Server),航班服务器(FlightServer),宾馆服务器(HotelServer),出租车服务器(CarServer),用户服务器(CustomerServer)以及预订服务器(ResverServer)。图1主server开启预定线程数据源1数据源2数据源3包装器包装器包装器协调器用户1用户2用户3图2ReserveThread类中实现服务器分布图3carServer类的main函数图2是各各站点在主server里登记IP和端口,图1是主server启动预定线程。图3是carServer开启线程的代码段。在启动预定线程时,先执行代码3,即要先运行carServer、flightServer、hotelServer、customerServer、reseverServer,然后再运行主server.图4客户端请求和server建立TCP连接保持server启动时,客户端请求和server建立TCP连接,如上图4.每个服务器按照总体的设计结构图,分别实现数据的存储、数据的更新、数据的插入、预定对应的数据。同时,每个服务器实现本地的事务管理、工作流管理、并发控制。主服务器实现把一个事物划分成多个子事物,对各个站点处理子事物结果进行裁决,工作流的控制,并发控制,实现分布式的事物处理。原子性:客户端向主服务器端发出预订申请时,主服务器分别从每个服务器取得数据并进行交互进行试预订,如果每个服务器返回成功信息,则再由Server统一进行Commit操作,否则如果有至少一个服务器返回预订失败的信心,则由Server统一将每个服务器上试预订的信息rollback。并发性:由java的Lock包进行控制,对每个操作服务器数据的线程进行并发控制,对每一个读操作进行readLock,可以与其他读线程同步进行,但是在释放读锁之前写操作无法执行。在对数据的每一个写操作前进行writeLock,同时等待其他线程释放读锁。其他写操作必须等到该线程释放写锁之后才能进行。一致性:由于事物的并发、通信传输故障、站点故障会导致数据的不一致性。针对事物并发,可以对数据资源加读写锁。网络通信问题本系统中暂未考虑。站点故障通过读取操作日志觉得redo或undo、commit或rollback。持久性:经过commit或者rollback之后的数据存放在每一个Server上,可以将其入数据库或者XML文件,本系统采用slq2005,把每个站点上的数据、操作日志存贮到sql上。以备实现故障恢复。1.4数据表FLIGHTS(StringflightNum,intprice,intnumSeats,intnumAvail)HOTELS(Stringlocation,intprice,intnumRooms,intnumAvail)CARS(Stringlocation,intprice,intnumCars,intnumAvail)CUSTOMERS(StringcustName)RESERVATIONS(StringcustName,intresvType,StringresvKey)2、概要设计2.1分布式事务分布式事务管理:1)一个事务可能要访问分布存储在多个站点上的数据,该事务将被划分成多个子事务,每个子事务负责对一个数据存储站点进行访问2)协调在各站点子事务工作以达到全局任务的原子性。子事务不仅要与相应站点上并发执行的其他本地事务相互协调,还要与分布式系统中全局事务所产生的其他子事务相互协调publicbooleanreserveItinerary(StringcustName,StringflightNum,Stringlocation,booleanneedCar,booleanneedRoom)throwsRemoteException,RuntimeException//主server启动预定事物stName,flightNum,location,needCar,needRoom)//启动预定的线程if(flightFlag&&carFlag&&hotelFlag&&reserFlag){…...}线程执行run(),在run()里面实现了事物的划分、各站点对子事物并发执行和本地事物协调以及主server的事物的裁决。本地事物管理:保证本地事务的特性,把用于分布式事务执行和恢复的信息记入日志,接收并听从本站点上DTM代理发来的LOG原语,记入日志并执行。本地需要保存2份数据,一个是data,用于保存原始初始化和commit、rollback处理后的数据。一个是back,用于保存正在被处理的数据。当commit、roolback后,只需要用back来修改data.分布式事务结构图2.2分布事务处理协议-集中式2PC协议由协调者质问所有的参与者是否准备好提交事务。如果有一个参与者投了“终止”票或在规定时间内未对协调者作出响应,则协调者将命令所有的参与者终止事务。如果所有的参与者投了“提交”票,则协调者决策所有的参与者提交事务。if(flightFlag&&carFlag&&hotelFlag&&reserFlag){…...}*flag由*server的fix*处理结果,在投票表决阶段,协调者作出全局裁决,然后命令传输给参与者,参与者做出相应的处理2.32PC恢复机制故障所采用的基本做法是:根据协议的执行进程,考虑可能出现的各种故障,提出预防措施并作故障处理。1)站点故障①参与者在Log中记录Ready前发生故障,可能原因是子事物失败,因超时导致协调者发出Abort命令。当发生故障的参与者恢复时,重启动过程简单撤销该事务即可,不需过问其他站点的情况。(已处理)②参与者在Log中记录Ready后发生故障,可能是本地已经commit了或者rollback了,这时候需要向协调者查询:若是Commit,则redo;若是Abort,则undo。从而对该结点上的子事务作出正确处理。(已处理)2.4分布式事务加锁并发事务的冲突,丢失更新,破坏完整性约束,不一致读,所以要考虑分布式加锁,严格按照分布式加锁准则。1)采用主站点加锁法:选一站点定义为“主站点”,负责系统全部加锁管理。所有站点都向这个主站点提出加锁请求,然后由主站点去处理加锁事宜,读锁一个,写锁全部,更新数据时必须保证所有站点上该数局部LTM之间所需信息不能直接传送局部事务管理器LTM分布式事务管理器DTM命令命令命令回答回答回答数据库局部事务管理器LTM局部事务管理器LTM数据库数据库据的副本同样更改,更新结束才能释放X锁。privatefinalReentrantReadWriteLockrwl=newReentrantReadWriteLock();privatefinalLockr=rwl.readLock();privatefinalLockw=rwl.writeLock();2)加锁点:①在server的线程reseverThead类在run()里对所需要的数据资源加写锁,采用一次性资源分配的方法,所以才预定之前,需要查询数据资源是否可用。如果其他事物需要访问被锁住的数据,必须等待锁释放。②在各资源站点的fix函数中加入写锁。如果其他事物需要访问被锁住的数据,必须等待锁释放。③在各资源在commit()处理中,要把执行data=back.get(xid),需要加写锁。在查询数据的时候,需要读数据。④插入数据和预定commit()操作要加锁。在插入数据后,可能会执行commit(),这样使得新增饿数据被覆盖了。3)预防死锁:一次加锁法,要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。3.操作界面3.1两个用户同时订一张票两个客户同时订一张票的时候,在订票成功的情况下,服务器将显示是哪个客户订了什么票,而客户端也会显示操作成功。如下图所示:3.2预定和插入在一个客户预定成功,而另一个站点在插入一个航班的情况下,服务器将增加一个航班以及一个客户预定的情况。如下图所示:3.3数据恢复重启后:3.4资源不够时,提示查询后再预定当资源不够的时候,客户再去预定,将会提示预定失败的消息。如下图所示:总结:为期半个月的学习与讨论及实践过程中,我们认真学习了分布式数据库系统的核心课程,深入研究了分布式数据库系统的基本概念、数据事务处理和恢复和并发控制,实现了分布式旅行订票系统。本系统完成了数据表和系统的设计及实现。系统功能包括数据表的插入修改、机票和出租车以及宾馆的查询和预定,并在此过程中保证了数据库的ACID。
本文标题:分布式数据库系统课程设计说明书
链接地址:https://www.777doc.com/doc-6244292 .html