Embodiment
Fig. 1 is the schematic diagram that the distributed application services system 100 of an embodiment who arranges according to invention disclosed in the literary composition is shown, and this system is according to client resource allocating task between client computer 120 and application server cluster 130.System 100 can comprise the client computer 120 that communicates to connect application server cluster 130 via network 140.Client computer 120 can comprise client engine 122, and this engine is the computer memory that is used for carrying out one or more tasks in the client computer 120.Application server cluster 130 can utilize voice server 132 to carry out one or more tasks.For example, voice server 132 can manage tts engine troop 134 and/or identification engine troop 136, they can distinguish execution contexts to voice task and voice recognition tasks.
In one embodiment, client computer 120 can be arranged in computing equipment for example handheld device, embedded device, the calculation equipment etc. with limited resources.Computing equipment with limited resources usually utilizes small-sized operating system platform, and this platform can be for comprising or being embedded in down-scaled version that design, desktop operating system in the equipment of mobile or other limited space.For example, computing equipment can be used to Palm OS, built-in Linux operating system from the PalmSource of California Sunnydale company etc.But client computer 120 also can be positioned to compare with personal digital assistant (PDA) or smart phone and have less restricted resource the traditional calculations equipment that still is confined to a definable batch total operator resource for example desktop computer or notebook.
Load analyzer 112 can be analyze the configuration of client computer 120 and at any given time on can be used for the computation module of the computational resource 124 of client computer 120.As used herein, computational resource 124 can comprise any resource that can suitably influence the ability that client computer 120 executes the task.More specifically, computational resource can and be used for communication throughput level with client computer 120 swap datas including, but not limited to memory, CPU ability.
In one embodiment, load analyzer 112 can be the component software of client computer 120.In other embodiments, load analyzer 112 can be the assembly of application server cluster 130, the routine independently using, comprise in the hardware of the network element of network 140 or the software etc.
Sharing of load device 114 can be according to the indication that receives from load analyzer 112 dispensing applications task 116 optionally between voice server 132 and client engine 122, and the information about resource 124 is passed in wherein said indication.In one embodiment, sharing of load device 114 can be the component software of application server cluster 130.In other embodiments, sharing of load device 114 can be the assembly of client computer 120, the routine independently using, comprise in the hardware of the network element of network 140 or the software etc.
In a specific embodiment, sharing of load device 114 can determine to carry out the necessary resource level of the application task of identifying.In addition, sharing of load device 114 can be considered the performance level of expecting, time of implementation demand and other such factor of application task when determining essential resource level.Sharing of load device 114 is carrying out can utilizing when the task distribution is determined the resource level that is determined, performance level, resource indication and a plurality of inference rule of expectation.
In another embodiment, specific inference rule can be operated according to the resource lower limit of setting up or the resource upper limit of foundation.Have the application task 116 that is defined as being lower than the resource requirement of this resource lower limit by sharing of load device 114 and can always be assigned to client engine 122.Application task with the resource requirement that is higher than the resource upper limit can always be assigned to voice server 132.Application task with the resource requirement between this lower limit and the upper limit can be distributed according to the current available resource of client computer 120 by sharing of load device 114.
In yet another embodiment, the resource of sharing of load device 114 distribute can be based on specific to the factor of the type of the application task that just is being assigned with and wherein associated criteria carry out.For example, when application task was the speech processes task, determining of sharing of load device 114 can be according to making specific to the factor of speech processes.
One type the speech processes task that more specifically, can be assigned with comprises voice recognition tasks.Task distributor 114 can optionally be distributed voice recognition tasks according to the size of the grammer that uses in the voice recognition tasks at least in part.For example, can use following false code to realize distribution specific to voice recognition tasks:
If client engine 122 then distributed to voice recognition tasks in grammer little (for example comprising 50 states of the U.S.)
<grammar?src=″state.jsgf″reco=″local″/>
If voice server 132 then distributed to voice recognition tasks in grammer big (for example comprising 100000 street name)
<grammar?src=″streets.jsgf″reco=″server″/>
If grammer medium (for example comprising 300 cities in the state), then the resource selection ground according to available client computer 120 distributes voice recognition tasks
<grammar?src=″cities.jsgf″reco=″resource_availability_dependent″/>
The situation of " grammer is little " that should be understood that represents the realization of resource requirement lower limit, and the situation of " grammer is big " represents the realization of the resource requirement upper limit.In addition, lower limit and the upper limit can be configured to consider the hardware and software configuration of client computer 210 especially.For example, for mobile phone, " little " can be defined as comprising 50 or more clauses and subclauses, but for more sane computing platform personal digital assistant for example, " little " can comprise thousands of clauses and subclauses.
The speech processes task that is assigned with of another kind of type comprises the Text To Speech convert task.Sharing of load device 114 can optionally distribute the text to the speech conversion task according to the complexity of Text To Speech convert task at least in part.Complexity can be based in the multiple factor any one, the multilingual (hybrid language TTS) of these factors including, but not limited to the tonequality of the length of the text that will be converted, the voice that obtain and the text to the speech conversion required by task.For example, can use following false code to realize specific to the distribution of Text To Speech convert task.
If the TTS complexity is low, then the TTS convert task is distributed to client engine 122
<prompttts=″local″/>
If TTS complexity height is then distributed to voice server 132 with the TTS convert task
<prompttts=″server″/>
If the TTS complexity is medium, then come distribution T TS convert task according to the resource of available client engine 120
<prompttts=″resource_availability_dependent″/>
As shown in FIG., network 140 can represent any communication mechanism that can transmit by digitally coded information.Network 140 can comprise for example for example local area network (LAN) or wide area network, cable system, satellite network, radio network etc. of PSTN (PSTN) or mobile telephone network, computer network of telephone network.In addition, network 140 can use wireless and based on the communication path of circuit.Can for example transmit by digitally coded information via network 140 based on the communication protocol of bag or based on the communication protocol of circuit according to any communication protocol.
Should be understood that disclosed the present invention is not limited to speech processing applications in the literary composition, thereby but also can be applicable to other application of other application and can utilize the dynamic offloading technology that describes in detail in the literary composition.When using with other application, voice server 132 can be replaced with one or more server engines 132 of carrying out the one or more tasks that are used for described other application.
Should be understood that the arrangement shown in Fig. 1 only is used for illustrative purposes, and the present invention is unrestricted in this respect.The mode that client computer 120 and application server cluster 130 can distribute or concentrated mode realize.For example, although typical situation is that application server cluster 130 provides application from for example trooping, considered also that here non-server architecture of trooping for example comprises single, the architecture of application server independently.
In addition, being attributable to the function of each assembly of system 100 can the mode different with the mode shown in the literary composition make up or separates.For example, in one embodiment of the invention, load analyzer 112 and sharing of load device 114 can be implemented as single integrated assembly.In another embodiment of the present invention, the function of load analyzer 112 can realize in the component software of a plurality of separation.
Fig. 2 is the flow process according to the system 200 of client resource dispensing applications task in client/server environment of the embodiment that arranges according to invention disclosed in the literary composition.In one embodiment, but the information flow of system's 200 representative systems 100.In this embodiment kind, application server 205, load analyzer 210, sharing of load device 215, client engine 220 and server engine 230 can correspond respectively to application server cluster 130, load analyzer 112, sharing of load device 114, client engine 122 and voice server 132.But system 200 is not limited thereto, but can carry out in the situation according to the system of client resource allocating task any.
In system 200, shown in flow process 250, can 210 transmission describe the hardware and softwares configuration of client computer and the client computer specification of ability in detail from client engine 220 to load analyzer.In one embodiment, can carry out flow process 250 when being connected to application server 205 during the client registration or when the user of client computer is long-range.In addition, can use client computer specification information to set up threshold value specific to client computer.
In flow process 252, load analyzer 210 can be to client engine 220 poll available resources.Especially, client computer can be arranged in the multitask computing environment, wherein can carry out a plurality of tasks that may have nothing to do with the application that application server 205 provides in client computer.Available resources can be any resource of ability that influences the processing application task of client computer, for example the available network throughput between memory, available cpu cycle and application server 205 and the client engine 220.In flow process 254, client engine 220 can be to load analyzer 210 indication available resources.Flow process 252 and responding process 254 can be repeated to keep the accurate report to Resource Availability every now and then.
In flow process 260, can send application task to sharing of load device 215 from application server 205.Shown in flow process 262, if the resource level of this required by task is lower than lower threshold value, then sharing of load device 215 can be distributed to this task client engine 220.In flow process 264, if the resource level of this required by task is higher than upper threshold value, then this task can be sent to server engine 230.
Flow process 262 and 264 is flow processs optional and that can separately implement, and it can be configurable value when being implemented.The advantage of setting up lower threshold value and upper threshold value is that the acceleration task is distributed.For example, more inessential and when consuming seldom resource, lower threshold value allows this task is distributed to client engine 220 automatically so that local the execution when task.To such an extent as to when task when very the consumption of natural resource client computer can not be carried out this task forever in the capabilities limits of expectation, upper threshold value can allow this task is distributed to server engine 230 automatically.In one embodiment, can on the basis of client computer, adjust these configurable threshold values automatically according to client computer specification 250.
In flow process 266, when the resource level that is used for application task was between lower threshold value and upper threshold value, sharing of load device 215 can be to the available client resource of load analyzer 210 inquiries.This step does not have to carry out among the embodiment of implementing procedure 262 and/or 264 therein alternatively yet.In flow process 268, load analyzer 210 can will be used for determining whether that the data that enough client resources can be used for this application task return to sharing of load device 215.In flow process 270, but when the resource time spent, sharing of load device 215 can assign the task to client engine 220.In flow process 272, when resource was unavailable, sharing of load device 215 can assign the task to server engine 230.
Fig. 3 is the flow chart that is used for the method 300 of dispensing applications task between client-server according to an embodiment of invention disclosed arrangement in the literary composition.Method 300 can be carried out in the situation of system 100 and/or system 200.But method 300 is unrestricted in this respect, and can be therein carries out in the situation according to any system of the resource resource that the assignment profile formula is used between client-server of client computer.The resource of client computer can the specification of hardware by client computer determine statically, and/or by determining that off and on the resource that client computer can be used for carrying out the application server task dynamically determines.
Method 300 can be in step 315 beginning, can detect resource based on client computer in this step.In step 310, detected resource can be indicated to application server.In step 315, can judge whether upgrade resource information.When will be more during the resource of New Client, this method can loop back step 305 from step 315.More new resources can by from the poll application servers client computer, by periodically make client computer with available resources be published to application server, by these two kinds of technology combination or take place by other such technology.When in step 315 not more during the resource of New Client, this method can forward step 320 to, can identify the application task that will be performed in this step.Also can determine to carry out the common resource level that this application task needs in this step.
For example, when this application task is voice recognition tasks, can uses for the size of the grammer of speech recognition language and determine required resource level.In another embodiment, when application task is the Text To Speech convert task, can use the complexity of conversion to determine required resource level.
In optional step 325, be lower than when the resource level that is used for this task under the resource of appointment in limited time, this method can jump to step 340, this task can be distributed to client computer in this step.Otherwise this method can forward step 330 to.In optional step 330, be higher than when the resource level of this task on the resource of appointment in limited time, this method can jump to step 345, this task can be distributed to server in this step.Otherwise this method can forward step 335 to.
In step 335, can determine whether client computer has enough available resources to execute the task in acceptable performance level.When client computer had enough resources, this method can forward step 340 to, this task can be distributed to client computer in this step.When client computer in step 335 did not have enough available resources, this method can forward step 345 to from step 335, this task can be distributed to server in this step.
This method can advance to step 350 from step 340 or 345, can continue to carry out by looping back step 315 in this method of this step, in this step 315, the renewable resources availability, and can identify and distribute other application task according to the client resource availability.
The present invention can realize in the combination of hardware, software or hardware and software.The present invention can be in a computer system realizes in a concentrated manner, and perhaps the distribution mode that is dispersed on the computer system of some interconnection with different elements wherein realizes.The computer system or other device that are suitable for carrying out any kind of the method described in the literary composition all are fit to.The combination of typical hardware and software can be the general-purpose computing system with such computer program, and this computer program is controlled this computer system so that this system carries out the method described in the literary composition when being loaded and carry out.
The present invention also can be comprised in the computer program, and this computer program comprises all features that can enable the method described in the literary composition that realizes, and can carry out these methods in being loaded in computer system the time.Computer program in this context refer to be intended to make have information processing capability system directly or after following any one or whole operation, carry out any expression with any language, code and symbolic representation of one group of instruction of specific function: a) convert another kind of language, code or symbol to; B) reproduce with different material form.
The present invention can be presented as other form and can not deviate from spirit of the present invention or base attribute.Therefore, should indicate scope of the present invention with reference to following claim rather than above stated specification.