论文部分内容阅读
随着移动企业对提高自身服务水平的要求不断增加,做为移动通讯支撑系统之一的营业帐务系统也变得越来越复杂,并逐渐向着全省集中的方式过渡,即在省中心不仅有集中的移动计费系统,也会逐步建成集中的营业帐务系统。
省级集中的营业帐务系统是一项非常复杂的工程,它不仅对网络传输的速率、可靠性等有很高的要求,对系统本身的稳定性、可靠性也同样有着极高的要求。要想使营业帐务系统有很高的稳定性、可靠性,除了构架一套完善的双机备份系统外,一个很重要的因素就是解决众多营业帐务终端的并发连接问题。
假设某省有10个地级市,每个地级市(包含其所属各县)有10个营业厅,每个营业厅在系统忙时会有10个连接进程,则在系统高峰时,全省同时连接到营业帐务系统服务器的连接数就会有1000个。在实际工程中,系统的连接数往往还会更多。大家知道,ORACLE数据库是多进程多线索的系统,这么多的连接会给系统的性能造成巨大的影响,占用系统的大量内存和其它资源,很容易造成系统的不稳定,甚至宕机。当然,如果将这1000个连接分散到多台服务器上去,这样每台服务器的连接数就会减少。这种方法固然很容易就能解决连接数过多的问题,但它却增加了设备的投资,同时,由于业务发展的不均衡性,很可能系统建设一开始划分好的两组过不了多久就会出现用户数发展的不平衡,造成有的服务器空闲,而有的服务器很繁忙,从而更增加了系统的复杂程度。
其实ORACLE有专门针对大量用户连接的产品MTS(Multi Thread Server),它只需在现有数据库上进行相应配置就可很好解决大量用户并发问题。使用MTS有如下优势:
G它可减少服务器进程(Server Process)数量,从而减少系统对内存消耗。比如100个用户通常环境下需要100个服务器进程,而在MTS环境下,可能只需要10个就可以了。
D在相同的服务器进程数量条件下,可支持更多并发用户。
E使用MTS,还可使系统到达负载平衡(Load Balancing)。
F可减少系统空闲服务器进程,从而提高服务器的效率。
营业帐务系统是一个典型的OLTP系统,在这种环境下,通常一个用户的连接有90%的时间是空闲的,比如,操作员所建立的连接大部分时间都会用在录入用户资料、打印发票等时间上,而真正使用到连接,向服务器提交的时间所占的比重一般不到10%。虽然这些连接并没有真正地在执行操作,但它们却一直在占用着系统的资源。在使用了MTS后,多个用户连接会共享几个服务器进程,从而提高服务器的效率。
MTS之所以有这么多的好处,是因为它改变了传统的连接方式,在MTS的环境下,用户的进程是连接到一些叫做Dispatcher进程(Dispatcher Process)上的。我们可通过下图来理解MTS对于用户连接的处理步骤:
首先,监听进程(Listener process)负责监听、等待用户连接请求;当某个用户进程有连接请求时,监听器(Listener)会判断出该进程是连接到Dispatcher进程上还是连接到专用服务器进程上(Dedicated Server Process)。如果监听器将用户进程连接到Dispatcher进程,则监听器会提供给用户进程Dispatcher进程的地址信息;否则,监听器会创建一个专用服务器进程,将用户进程连接到专用服务器进程上。用户进程将请求送至相应的Dispatcher进程上,Dispatcher进程接收用户的请求,并将请求存放于SGA中的请求等待队列中(Request queue)。系统中的共享服务器进程(Shared Server Processes)从请求等待队列中获取请求并进行处理。随后,共享服务器进程将返回结果(Response)存放到被称作是“Dispatcher回应队列”(Dispatchers response queue)中。返回结果从回应队列中传递给响应的Dispatcher进程。最终,返回结果被Dispatcher进程传送至用户进程。一旦用户的请求完成,共享服务器进程就会被释放,从而可以去处理其它在请求队列中的的用户请求。
通过以上MTS处理步骤的分析,可以清楚地看到,MTS之所以可以很好地解决系统大量连接的问题,就是因为它通过了中间进程Dispatcher,而不是立即创建一个专用的服务器进程来处理用户请求,它采用了请求队列机制,由系统中的共享服务器进程来分别对请示队列中的请求进行处理,再由Dispatcher进程返回处理结果,这样一来,就无需对每个用户进程建立一个专门的服务器进程,从而极大地提高了系统的效率。通过MTS的使用,可以极大的提高营业帐务系统的效率,从而从根本上解决大量并发连接的问题。