Background
In a classical network, because the IP address of a service provided by a service provider is globally unique, when service adaptation is implemented, a service invoker can directly connect to the service using the IP address of the service to complete adaptation of the service, and then initiate remote invocation of the service. Fig. 1 shows that, in a classical network, each device 110 providing services is deployed in a computer room, an IP address of each device 110 is globally unique, and when an APP (Application program) in a client device 120 needs to call a certain service, the APP can directly connect to a certain device providing services through a component system MGS 130 based on the IP address, and then initiate a service call to the device.
However, under a VPC (Virtual Private Cloud) network architecture, the IP address of a device providing a service is only unique within a single VPC, and will no longer be globally unique in each VPC. For example, two DCs (Data centers ) respectively correspond to two VPCs, and IP addresses are unique in the individual DC1 or DC2, but duplicate IP addresses may occur between the DC1 and the DC2, and if the MGS still performs service adaptation by using the direct connection of the IP addresses, an error service may be adapted, so that a service call error occurs, and the APP in the client device cannot implement related functions.
Content of application
An object of the present application is to provide a service adaptation scheme, so as to solve the problem that the service adaptation cannot be correctly implemented in the existing scheme.
The embodiment of the application provides a service adaptation method of channel management equipment, which comprises the following steps:
the method comprises the steps that a channel management device and a service provider device establish a first long connection, and store service address information provided by the service provider device, wherein the service address information is used for determining the service provider device when service is called;
and the channel management equipment establishes a second long connection with the service caller equipment, wherein the first long connection and the second long connection are used for transmitting interactive data when the service caller equipment calls the service provider equipment.
The embodiment of the application also provides a service adaptation method of the service caller equipment, which comprises the following steps:
the method comprises the steps that a service caller device and a channel management device establish a second long connection, wherein the channel management device establishes a first long connection with a service provider device providing services, service address information provided by the service provider device is stored in the channel management device, the service address information is used for determining the service provider device when the services are called, and the first long connection and the second long connection are used for transmitting interactive data when the service caller device calls the services for the service provider device.
The embodiment of the application also provides a service adaptation method for the service provider equipment, wherein the method comprises the following steps:
the method comprises the steps that a first long connection is established between service provider equipment and channel management equipment, service address information provided by the service provider equipment is provided for the channel management equipment, the service address information is used for determining the service provider equipment when service is called, second long connection is also established between the channel management equipment and service caller equipment, and the first long connection and the second long connection are used for transmitting interactive data when the service caller equipment calls the service provider equipment.
Based on another aspect of the present application, there is also provided a channel management device, including:
the service providing device comprises a provider processing device, a service providing device and a service providing device, wherein the provider processing device is used for establishing a first long connection with the service providing device and storing service address information provided by the service providing device, and the service address information is used for determining the service providing device when a service is called;
and the caller processing device is used for establishing a second long connection with the service caller equipment, wherein the first long connection and the second long connection are used for transmitting interactive data when the service caller equipment calls the service provider equipment.
An embodiment of the present application further provides a device for providing a service, where the device includes:
the device comprises a connection processing device and a channel management device, wherein the connection processing device is used for establishing a first long connection with the channel management device and providing service address information provided by the service provider device for the channel management device, the service address information is used for determining the service provider device when the service is called, the channel management device also establishes a second long connection with the service caller device, and the first long connection and the second long connection are used for transmitting interactive data when the service caller device calls the service for the service provider device.
The embodiment of the present application further provides a service adaptation system, where the system includes:
the service provider device is used for establishing a first long connection with the channel management device and providing service address information provided by the service provider device to the channel management device, wherein the service address information is used for determining the service provider device when a service is called;
the channel management equipment is used for establishing a first long connection between the channel management equipment and the service provider equipment and storing the service address information provided by the service provider equipment; establishing a second long connection with the service calling side equipment;
and the service caller equipment is used for establishing a second long connection with the channel management equipment, wherein the first long connection and the second long connection are used for transmitting interactive data when the service caller equipment calls the service provider equipment.
Furthermore, a computing device is provided in an embodiment of the present application, where the device includes a memory for storing computer program instructions and a processor for executing the computer program instructions, where the computer program instructions, when executed by the processor, trigger the device to perform the service adaptation method.
Embodiments of the present application further provide a computer readable medium, on which computer program instructions are stored, the computer readable instructions being executable by a processor to implement the service adaptation method.
In the solution provided in the embodiment of the present application, a service invoker device does not adapt to a service provided by a service provider device in an IP direct connection manner, but adds a channel management device between the service provider device and the service provider device, where the channel management device establishes a first long connection with the service provider device, stores service information provided by the service provider device, and establishes a second long connection with the service invoker device, where the service information is used to determine the service provider device when invoking the service, and the first long connection and the second long connection are used to transmit interactive data when the service invoker device invokes the service to the service provider device. Because the channel management device can manage the service information provided by the service provider device, when the service caller device needs to call a certain service, the specific address of the service does not need to be concerned, the service caller device only needs to interact with the channel management device, and the channel management device can forward data to the specific service provider device according to the service to be called, so that the service can be called.
Detailed Description
The present application is described in further detail below with reference to the attached figures.
In a typical configuration of the present application, the terminal, the devices serving the network each include one or more processors (CPUs), input/output interfaces, network interfaces, and memory.
The memory may include forms of volatile memory in a computer readable medium, Random Access Memory (RAM) and/or non-volatile memory, such as Read Only Memory (ROM) or flash memory (flash RAM). Memory is an example of a computer-readable medium.
Computer-readable media include permanent and non-permanent, removable and non-removable media and may implement information storage by any method or technology. The information may be computer readable instructions, data structures, program means, or other data. Examples of computer storage media include, but are not limited to, phase change memory (PRAM), Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), other types of Random Access Memory (RAM), Read Only Memory (ROM), Electrically Erasable Programmable Read Only Memory (EEPROM), flash memory or other memory technology, compact disc read only memory (CD-ROM), Digital Versatile Disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other non-transmission medium that can be used to store information that can be accessed by a computing device.
The embodiment of the application provides a service adaptation method, in the method, service caller equipment does not adapt to a service provided by service provider equipment in an IP direct connection mode, but channel management equipment is added between the service provider equipment and the service provider equipment, as the channel management equipment can manage service information provided by the service provider equipment and long connections are established between the service caller equipment and the service provider equipment, when the service caller equipment needs to call a certain service, a specific address of the service does not need to be concerned, interaction with the channel management equipment is only needed, and the channel management equipment can forward data to the specific service provider equipment according to the service to be called, so that the service can be called.
Fig. 2 shows a schematic diagram of a system adopting the service adaptation method provided in the embodiment of the present application, and the system includes a service invoker device 210, a service provider device 220, and a channel management device 230. The service provider device 210 is configured to establish a first long connection with a channel management device, and provide service information provided by the service provider device to the channel management device, where the service information is used to determine a service provider device when a service is invoked. The channel management device 220 is configured to establish a first long connection between the channel management device and a service provider device, and store service information provided by the service provider device; and establishing a second long connection with the service caller device. The service invoker device 230 is configured to establish a second long connection with the channel management device, where the first long connection and the second long connection are used to transmit interaction data when the service invoker device invokes a service to the service provider device.
In an actual scenario, the specific implementation of the foregoing device may be an entity device such as a server, a network host, a user terminal, or a virtual device running on a Cloud Computing platform, where the Cloud Computing platform is formed by a large number of Cloud Computing (Cloud Computing) based hosts or network servers. The service caller device 210 refers to a device that needs to call a service, and for example, may be a device running a component system that needs to call a service, such as a device implementing a component system like MGS (mobile gateway service), MPS (message push service), and so on. The Service provider device 220 refers to a device capable of providing a called Service, and may be, for example, an ECS (Elastic computing Service) host of a release Service provided for a tenant in a cloud computing platform, and the ECS host is divided into different VPCs under a VPC network architecture, and issues a corresponding Service for calling. The IP addresses of ECS hosts under a single VPC are unique, but may not be globally unique, for example in the scenario shown in FIG. 3, the same IPs 1-8 exist under each VPC. The channel management device 230 is configured to construct an adaptation channel of the service, so that the service invocation can be smoothly performed in the VPC implementation scenario.
Fig. 4 shows an interaction processing flow between the devices when service adaptation is performed in the embodiment of the present application, and the interaction when a first long connection is established between the service provider device 210 and the channel management device 230 includes the following steps:
in step S401, the service provider device 210 initiates a connection establishment request to the channel management device 230, where the connection establishment request may include authentication information. In an actual scenario, the service caller device 210 and the service provider device 220 may each include an SDK (Software Development Kit) for implementing corresponding functions, so as to implement corresponding processing in service adaptation.
For example, in establishing a connection to the channel management device 230 by the service provider device 210, a set of tokens and channel addresses of a set of corresponding channel management devices may first be obtained by the service provider SDK. the token is a kind of verification information, which may be a designated access key configured in advance, and the channel address may be provided to the service provider in advance, so that the service provider can issue the service for being called by other users. After obtaining this information, the service provider SDK may initiate a request to the channel address to establish a long connection while providing the corresponding token.
Step S402, the channel management device carries out security verification according to the verification information, and establishes a first long connection with the service provider device after passing the verification.
In an actual service adaptation scenario, there may be a plurality of channel management devices 230, and a service provider may issue a service through any one of the channel management devices, that is, initiate a connection establishment request with any one of the channel management devices to establish a first long connection. For example, in this embodiment, each channel management device may be understood as a channel capable of implementing service adaptation, and is recorded as an mpaas channel. And for one mPaaS channel, after receiving the connection establishment request, verifying according to the transmitted token. In the verification method provided by the embodiment of the application, the token allocated to the SDK of the service provider can be stored in a preset database, and after the mpaas channel obtains the token, the token can be used as a key, whether the token exists in the database can be queried, and if so, it indicates that the verification is successful, and the subsequent processing is performed. After a token is queried, the token may be deleted from the database, making the token non-reusable, to improve the security of the authentication mechanism. Otherwise, if the inquiry is not made, the verification is failed, and the subsequent processing is not carried out.
When the connection is established, the mPaaSChannel can obtain service information provided by the service provider SDK, where the service information includes information such as the type of service and information about a machine room. The type of service indicates what component system the service is called to implement, and may be MGS, MPS, etc. The machine room information of the service indicates the VPC to which the service belongs, for example, the two VPCs shown in fig. 3 are DC1 and DC2, respectively, and the machine room information of the corresponding service may be a workpaceid 1 and a workpaceid 2, which indicate in which VPC the provisioning service is specifically deployed. Fig. 5 shows a schematic diagram of a data structure of a local service registry in an mPaaSChannel, where the data structure adopts a tree structure, and the nodes are in sequence step by step, such as service types (e.g., MGS, MPS, etc.), machine room information (e.g., workpaceid 1, workpaceid 2, etc.), and the like.
The mpaas channel registers the service information in a local service registry and uses the service information later when calling. When calling is realized, if a service type serviceType and service machine room information workpaceid are specified, the mPaaSChannel can know a group of first long connections for providing a certain service in a local service registry, and after one of the first long connections is selected, a transport stream between the mPaaSChannel and a corresponding service provider device can be created for data interaction.
In step S403, the information in the local service registry of the path management device is the relevant information of the service issued by the path management device, and the relevant information is provided to the service invoking device in an agreed manner. The relevant information of the service includes a channel address for connecting the channel management device, and after the channel management device provides the channel address for connecting the channel management device to the service caller device, the service caller device may initiate a connection establishment request to the channel management device according to the channel address, so that a second long connection is established between the channel management device and the service caller device according to the connection establishment request.
In some embodiments of the present application, the coordinating device may be utilized to notify the service invoker device of information about the service. First, the channel management device may synchronize the relevant information of the service issued by the channel management device to the coordinator device, so that the coordinator device stores the relevant information of the service. The related information at least comprises service information of the service and a channel address for connecting the channel management device, so that the service calling device can at least know from the coordinating device: the channel management device may provide which services and the channel addresses of the channel management devices that provide those services. For example, for one mpasschannel, a long connection may be established with a service provider device capable of providing the MGS, and the mpasschannel may assist in completing the call of the MGS, where the channel address mpasschannel IP of the corresponding channel management device is 192.168.1.3.
At this time, if the service caller device subscribes to the coordinator device, when the synchronization process causes a change in information, the coordinator device notifies the service caller device subscribing to the service of the callable service information, and provides a channel address for connecting the channel management device. Therefore, the service calling side device can initiate a connection establishment request to the channel management device according to the channel address, so as to establish a second long connection between the channel management device and the service calling side device.
In some embodiments of the present application, the coordination device may employ a zookeeper, and after any mpaas channel registers service information in the local service registry, content of the local service registry may be synchronized in the zookeeper. Fig. 6 shows a data structure for storing relevant information in zookeeper, where the data structure may also adopt a tree structure, and the relevant information may be mounted under an mpasschannel node, and the relevant information is stepped under the mpasschannel node to be a node such as a service type (e.g., MGS, MPS, etc.) and a channel address mpasschannel IP (e.g., 192.168.1.2, 192.168.1.3, etc.).
Fig. 7 shows an interaction flow of the channel management device establishing long connections for the service provider device and the service caller device, respectively, to implement service adaptation in an embodiment of the present application. In this embodiment, the service provider device and the service caller device respectively implement corresponding processing functions through SDKs, and the processing flow when establishing the first long connection includes:
step S701, the service provider SDK obtains a group of tokens and a channel address mPaaSChannel IP of a group of mPaaSChannel, then initiates a connection establishment request to the mPaaSChannel IPs, and sends a corresponding token. For example, the service provider SDK corresponds to DC1 with machine room information of workplaceid 1, there are two corresponding mpasschannel, the channel addresses mpasschannel IP are 192.168.1.2 and 192.168.1.3, respectively, and the service provider SDK will initiate a connection establishment request to the mpasschannel IP, and simultaneously carry a corresponding token.
Step S702, after receiving the connection establishment request, the mPaaSChannel queries the transferred token as a key on an OCS (Open Cache Service) device, and uses the OCS device as a security verification database. And if the inquiry cannot be carried out in the OCS equipment, refusing to establish the connection. If the token is inquired, registering the service information of the service to a local service registry, establishing a first long connection with the service provider SDK, and deleting the information corresponding to the token on the OCS device to avoid the token from being used repeatedly. Taking the mpaas channel with the address of 192.168.1.2 as an example, the long connection may be established with the service provider SDK, and the service information of the service may be acquired, for example, the service type is MGS, and the machine room information is workpaceid 1, so as to be registered in the local service registry, where the local service registry may adopt a data structure as shown in fig. 5.
Step S703, the mPaaSChannel synchronizes the information in the local service registry to the Zookeeper, and the Zookeeper also stores the synchronized information in a specific data structure, for example, fig. 6 shows a data structure. In an actual scenario, the first long connection between each mpaas channel and different service providers SDK may change continuously, so that information in the local service registry of the mpaas channel changes accordingly, and the mpaas channel may synchronize the changed related information to zookeeper continuously.
In this embodiment, the processing flow when establishing the second long connection includes the following processing steps:
in step S711, the service invoker SDK subscribes to the Zookeeper for service. The subscription process is as follows: firstly, a service caller SDK establishes connection with a Zookeeper, and pays attention to a sub-node corresponding to a required service type through a watch mechanism, for example, if the service caller SDK needs to call an MGS, a 'watch'/mPAaSCChannel/MGS node is formed, so that when information under the MGS node changes, the Zookeeper informs the service caller SDK.
In step S712, after the Zookeeper synchronizes the relevant information in the local service registry from the mpaas channel, if it is found that the relevant node of the service subscribed by the service invoker SDK is updated, the Zookeeper notifies the service invoker SDK. For example, when information under the MGS node changes, for example, a new mpasschannel IP is added, the mpasschannel IP list is sent to the service invoker SDK.
Step S713, the service invoker SDK may obtain the subscribed information from the Zookeeper, and when a new mpaas channel IP is obtained, the service invoker SDK may initiate a connection establishment request to the new mpaas channel IP, so as to establish a second long connection between the service invoker SDK and the mpaas channel. For example, Zookeeper informs the service invoker SDK that a new mpasschannel IP about MGS is 192.168.1.2, then the service invoker SDK may initiate a connection establishment request to the mpasschannel of 192.168.1.2 to establish a second long connection between the service invoker SDK and the mpasschannel.
In some embodiments of the application, after the channel management device establishes the long connections with the service provider device and the service invoker device, respectively, the first long connection and the second long connection can be used to transmit interaction data when the service invoker device calls the service provider device, and a flow of the interaction process is as follows:
and the service calling side equipment sends a service calling request to the channel management equipment based on the second long connection. The service type to be called by the service caller device is specified by a specific service, for example, the service type required by the MGS component system is MGS. The service caller device creates a data stream based on the second long connection for transmitting a data packet of the service invocation request.
And after receiving the service calling request, the channel management equipment determines the service address information according to the service calling request. For example, the service invocation request at least carries information such as a required service type and machine room information, for example, the service request serviceType is MGS, and the machine room information is workpaceid 1, so that the service address information capable of providing the service can be found in the local service registry.
And the channel management equipment determines service provider equipment providing services according to the service address information, and sends to-be-processed data to the service provider equipment based on the first long connection with the service provider equipment. After the service address information capable of providing the service is acquired, one of the service address information may be selected, where the service address information points to a service provider device, and if machine room information in the service information is the workpaceid 1, the service provider device is a device in the DC1 corresponding to the workpaceid 1.
A transport stream may then be created based on the first long connection with the service provider device to forward the pending data contained in the invocation request. At this time, the transport stream created based on the second long connection and the transport stream created based on the first long connection may be associated to form a data transmission channel at the time of service invocation.
The service provider device acquires data to be processed from the service provider device based on the first long connection, calls a service to process the data to be processed, obtains a processing result, and then sends the processing result to a channel management device based on the first long connection. And after obtaining the processing result, the channel management device sends the processing result to the service calling side device based on the second long connection. Taking a service with a service type of MGS as an example, after a relevant service is called to process, a processing result is written back to a transport stream established based on the second long connection, so that the processing result is transmitted to mPaaSChannel, and then mPaaSChannel will continue to find the associated transport stream established based on the first long connection, and directly forward the processing result, so that the service calling party device can finally obtain the processing result of service calling, and complete service calling.
FIG. 8 shows an interaction flow of service invocation in an embodiment of the present application. In this embodiment, the service provider device and the service caller device respectively implement corresponding processing functions through SDKs, so that the service call is initiated by a component system such as MGS/MPS, and the call process includes the following steps:
in step S801, the component system initiates a service call. When initiating a service call, the MGS/MPS component system may specify related parameters, for example, in this embodiment, the MGS/MPS component system may specify < workpaceid, serviceExtType, request, callback >.
Step S802, the SDK of the service calling party serializes the request into a byte array, and simultaneously determines a group of mPaaSCChannel IPs capable of providing service according to < workpaceId, serviceExtType >. In an actual scenario, one of mPaaSChannel IPs can be selected based on the service capability of the mPaaSChannel corresponding to the mPaaSChannel IP and by combining a load balancing algorithm, a transport stream is created based on a second long connection established with the mPaaSChannel IP, and is recorded as a second transport stream, a serviceType, a workkspaceid, a serviceExtType, and a data > are packaged and sent as a data packet of a service invocation request, and the transport stream is associated with a callbackhandle.
Step S803, after receiving the data packet of the service invocation request, the mpaas channel finds out a group of service address information capable of providing services in the local service routing table according to < serviceType, workpaceid, serviceExtType >, and each service address information corresponds to a first long connection. The mpaas channel selects one of the first long connections according to a load balancing algorithm, creates a transport stream on the mpaas channel, records the transport stream as a first transport stream, and directly forwards the < data >, so that the service provider SDK can receive the < data >. Meanwhile, the mpaas channel associates the first transport stream with the second transport stream, if the first long connection cannot be selected, it indicates that the service call cannot be completed correctly, writes back corresponding error information on the second transport stream, and closes the second transport stream.
Step S804, after receiving the data to be processed < data >, the service provider SDK invokes the service to implement data processing, and obtains a processing result < response >.
In step S805, the service provider SDK serializes < response > into < data >, and then directly writes back the corresponding second transport stream. After receiving < data > written back by the SDK from the service provider, the mPAaSCChannel finds a first transmission stream according to the association relation of the transmission streams and forwards the first transmission stream; then the service caller SDK receives the < data >, and the callback provides the processing result to the component system.
Based on the same inventive concept, the embodiment of the present application further provides a device for service adaptation, where the method corresponding to the device is a service adaptation method implemented on the channel management device, the service provider device, and the service caller device in the foregoing embodiments, and the principle of solving the problem is similar to that of the method.
The channel management device comprises a provider processing device and a caller processing device, wherein the provider processing device is used for establishing a first long connection with a service provider device and storing service address information provided by the service provider device, and the service address information is used for determining the service provider device when service is called.
The caller processing device is used for establishing a second long connection with the service caller equipment, wherein the first long connection and the second long connection are used for transmitting interactive data when the service caller equipment calls the service provider equipment.
In some embodiments of the present application, the provider processing device is further configured to determine service address information according to the service invocation request, determine a service provider device that provides a service according to the service address information, and send to-be-processed data to the service provider device based on a first long connection with the service provider device; and acquiring a processing result of the service to-be-processed data in the service provider equipment based on the first long connection;
the caller processing apparatus is further configured to obtain a service invocation request from the service caller device based on the second long connection, and send the processing result to the service caller device based on the second long connection.
The service caller equipment provided by the application comprises a connection processing device, wherein the connection processing device is used for establishing a second long connection with channel management equipment, the channel management equipment establishes a first long connection with service provider equipment providing services, service address information provided by the service provider equipment is stored in the channel management equipment, the service address information is used for determining the service provider equipment when the service is called, and the first long connection and the second long connection are used for transmitting interactive data when the service caller equipment calls the service provider equipment.
In some embodiments of the present application, the connection processing apparatus is further configured to send a service invocation request to the channel management device based on the second long connection, so that the channel management device determines service address information according to the service invocation request, determines a service provider device providing a service according to the service address information, and sends to-be-processed data to the service provider device based on the first long connection with the service provider device, to obtain a processing result of the service to-be-processed data in the service provider device; and obtaining the processing result from the channel management device based on the second long connection.
The service provider device provided by the implementation of the application comprises a connection processing device. The connection processing device of the service provider device is configured to establish a first long connection with the channel management device, and provide service address information provided by the service provider device to the channel management device, where the service address information is used to determine the service provider device when the service is invoked, the channel management device further establishes a second long connection with the service invoker device, and the first long connection and the second long connection are used to transmit interaction data when the service invoker device invokes the service to the service provider device.
In some embodiments of the present application, the connection processing apparatus of the service provider device is further configured to obtain, by the channel management device, to-be-processed data from the service provider device based on the first long connection, where the to-be-processed data is sent by the channel management device after obtaining a service invocation request from the service invoker device based on the second long connection; calling a service to process the data to be processed to obtain a processing result; and sending the processing result to a channel management device based on the first long connection so that the channel management device sends the processing result to the service calling device based on the second long connection.
In addition, some of the present application may be implemented as a computer program product, such as computer program instructions, which when executed by a computer, may invoke or provide methods and/or techniques in accordance with the present application through the operation of the computer. Program instructions which invoke the methods of the present application may be stored on a fixed or removable recording medium and/or transmitted via a data stream on a broadcast or other signal-bearing medium and/or stored within a working memory of a computer device operating in accordance with the program instructions. Some embodiments according to the present application include a computing device as shown in fig. 9, which includes one or more memories 910 storing computer-readable instructions and a processor 920 for executing the computer-readable instructions, wherein when the computer-readable instructions are executed by the processor, the device is caused to perform the method and/or the technical solution according to the embodiments of the present application.
Furthermore, some embodiments of the present application also provide a computer readable medium, on which computer program instructions are stored, the computer readable instructions being executable by a processor to implement the methods and/or aspects of the foregoing embodiments of the present application.
It should be noted that the present application may be implemented in software and/or a combination of software and hardware, for example, implemented using Application Specific Integrated Circuits (ASICs), general purpose computers or any other similar hardware devices. In some embodiments, the software programs of the present application may be executed by a processor to implement the above steps or functions. Likewise, the software programs (including associated data structures) of the present application may be stored in a computer readable recording medium, such as RAM memory, magnetic or optical drive or diskette and the like. Additionally, some of the steps or functions of the present application may be implemented in hardware, for example, as circuitry that cooperates with the processor to perform various steps or functions.
It will be evident to those skilled in the art that the present application is not limited to the details of the foregoing illustrative embodiments, and that the present application may be embodied in other specific forms without departing from the spirit or essential attributes thereof. The present embodiments are therefore to be considered in all respects as illustrative and not restrictive, the scope of the application being indicated by the appended claims rather than by the foregoing description, and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein. Any reference sign in a claim should not be construed as limiting the claim concerned. Furthermore, it is obvious that the word "comprising" does not exclude other elements or steps, and the singular does not exclude the plural. A plurality of units or means recited in the apparatus claims may also be implemented by one unit or means in software or hardware. The terms first, second, etc. are used to denote names, but not any particular order.