Abstract:
The invention relates to a method, a computer program, a system and distributed computers distributing unique service identifiers within a network, wherein at least two of said services communicate with each other using communication interfaces provided by a network, and wherein each of said services comprises a unique identifier identifying said service within said network. To allow identifying the services within the network, it is proposed that a first service is started, announcement messages are broadcast by said first service into said network, said announcement messages are received by at least a second service, and reception of said announcement message is confirmed by said second service to said first service.

Description:
FIELD OF THE INVENTION  
       [0001]     The present invention relates to a method for distributing unique service identifiers within a network, wherein at least two of said services communicate with each other using communication interfaces provided by a network, and wherein each of said services comprises a unique identifier identifying said service within said network.  
         [0002]     The invention also relates to a system for distributing unique identifiers of its services, comprising a first service comprising a first unique identifier, a second service comprising a second unique identifier, a network providing communication functionality and connecting said first service with said second service.  
         [0003]     The invention further relates to a computer program and a computer program product for distributing unique identifiers of services within a network, said program comprising instructions operable to cause processors to communicate with each other using communication interfaces provided by a network, and identifies said services within said network using a unique identifier.  
         [0004]     Eventually, the invention relates to a plurality of computers being installed to distribute unique identifiers of services within a network, each of said at least two computers running a service, wherein at least two of said services communicate with each other using communication interfaces provided by a network, and wherein each of said services comprises a unique identifier identifying said service within said network.  
       BACKGROUND  
       [0005]     In current distributed systems, services running on distributed computers need to be configured in order to be able to communicate with other services on a network. In particular for applications, where a central software component is required, configuration files of the respective distributed services have to store the location of the central software component. By using the location of the central software component, the services may access the central software component and may request from the central software component information about other services. This may be, for instance, necessary in use cases where as fast access to data is necessary, in particular when search engines carry out searches on various services.  
         [0006]     However, configuring the layout of configuration files of software components within distributed environments has to be planned beforehand. The configuration files must contain all information about the distributed services to allow a flawless inter-communication. In particular in dynamically changing environments, such as with blade server technology, services and computers may relocate, e.g. their address may change. This results in lack of access to these services. Routing information for exchanging messages between the services has to be reconfigured. This means that the configuration files of the respective services have to be modified manually or by a dedicated program, running on each of the services.  
         [0007]     Furthermore, in case of failures of certain services, the configuration files may become corrupt. In such a case, it might be helpful to allow configuring the configuration files in real time, to allow services to access central software components, and to provide their service to the network. Failure management up-to-date needs reconfiguration of the configuration files in case services become corrupt.  
         [0008]     Moreover, in blade server technology, it is not possible to predict the workload of certain services. In case of work overload, new blade servers are attached to the network, which provide the respective services. The environmental structure may thus change rapidly. New servers and services are added to the network on demand, and in case the workload decreases, are de-installed from the network as well. This dynamic change in the environment causes constrains with respect to the configuration of the respective services.  
       SUMMARY  
       [0009]     To overcome these drawbacks, the invention proposes a method for distributing unique service identifiers within a network, wherein at least two of said services communicate with each other using communication interfaces provided by a network, and wherein each of said services comprises a unique identifier identifying said service within said network, with the steps of starting a first service, broadcasting an announcement message by said first service into said network, receiving said announcement message by at least a second service, and confirming reception of said announcement message by said second service to said first service.  
         [0010]     Using this method, it will be possible to provide configuration of new services by distributing their unique identifiers automatically without user interaction. Reconfiguration of configuration files at run time, in case the environment layout changes will become unnecessary. In particular in distributed system, where it is required to know the location of other software components, such as R/3 message server technology, name server technology, search engines and other distributed systems, the inventive method provides fast and easy access to the respective services.  
         [0011]     A service, such as a program, a controller, a process or a computer, may run on only one unit, such as a blade or a printed circuit board. Each of the services has a unique identifier, allowing to identify this service within the network. The unique identifier may be a number, a string or any other value able to determine the service from others. The services may already be installed and ready to run locally on the respective computers. The operating system of the computers provides communication functionality, so as to allow the services to communicate with each other. Network functionality and network interfaces are already provided to the services and may be used by the services.  
         [0012]     The inventive method proposes to register new services at a second service after a first service is started. Therefore, during start-up of the first service, an announcement message is broadcast into the network. By broadcasting the announcement message, the first service announces that it is available. Within the network, a second service may be installed to listen to these announcement messages. These services may receive the announcement message, read the data comprised within the announcement message and confirm reception of the announcement message. This confirmation is received by the first service. After reception, the first service knows that it is registered at the second service. It may then also access the second service to request information about further third services. The second service may provide different services with information about all available service, as the available services have been registered to the second service.  
         [0013]     To provide a hierarchy within the network, and to avoid collisions concerning tasks of different services, it is proposed that said first service acts as a distributed software component and said second service acts as a central software component. Said central software component may store information about each distributed software component. Distributed software components may communicate with each other, but do not provide configuration tasks. The central software component provides configuration tasks, in particular listening to announcement messages and confirming reception of these.  
         [0014]     It is further preferred that said first service broadcasts within said announcement message its unique identifier, enabling said second service to address said first service directly. The unique identifier allows addressing said first service directly. After receiving the announcement message, the second service may extract the unique identifier and store it together with further information concerning the first service. Confirming reception of said announcement message may be done using the unique identifier, e.g. addressing the first service with this identifier. This allows contacting the first service directly. After that, further services may request the address of the first service from the second service, whereupon the second service provides the unique identifier to the further services. These may then address the first service directly using the unique identifier.  
         [0015]     It is also preferred that said second service confirms reception of said announcement message to said first service by establishing a communication channel between said first and said second service. The communication channel may be a direct communication line between the services. Using the communication channel is preferred, as this reduces network traffic.  
         [0016]     It may also be preferred that said second service confirms reception of said announcement message to said first service by sending a network message from said second service to said first service. A network message may be according to a known network communication protocol.  
         [0017]     To allow said first service to communicate with the second service directly for further needs, in particular for requesting information about other available services, it is proposed that said second service provides said first service with its unique identifier while confirming said reception of said announcement message. During the confirmation, the second service may include its own unique identifier into the confirmation. The first service thus knows the address of the second service and may address messages directly to the second service  
         [0018]     In order to allow dynamic configuration, each service needs to have a unique identifier. Therefore, it is proposed that said unique identifier is assigned to said first and said second service during start-up of said services, prior to broadcasting said announcement message.  
         [0019]     This means that the operating system of the respective services already provides means to attain unique identifiers. These may be static or dynamic unique identifiers, provided by a particular instance of the network. This may be a DHPC server, located within the network.  
         [0020]     To provide an information service concerning all available services, it is proposed that said second service maintains a list of all available distributed software components. This means that the second service stores the unique identifier of each of the registered first services. These first services may run distributed software components. In case the second service acts as a central software component, it may be requested to provide information about distributed software components, in particular about services and their addresses. For this reason the second service may maintain the list of available distributed software components.  
         [0021]     In particular for fast data access, for instance for search engines, a first service may request a unique identifier for a third service from said second service. In case the first service runs a search engine, it might be necessary to request particular information from a distributed software component running on a third service. To address the third service directly, the first service may request the second service to provide the unique identifier of the third service. The second service provides this information to the first service, which allows the first service to address the third service directly.  
         [0022]     In particular in changing environments, addresses of services may change due to relocation of these services. This may happen in case the respective computers are detached and again attached to the network, such as when a blade server is removed from or added to the network.  
         [0023]     It may also happen that software components go off-line and after while restart again. This might happened in case of failures. In such a case, the software components and the respective services might be assigned a new unique identifier. To account for this change, it is proposed that said first service monitors accessibility of said second service and that said first service broadcasts an announcement message in case said second service is not available through its initial address. In such a case, the central software component running on the second service might be relocated or encountered a failures. In this case the second service might not be available through its initial address anymore. The first service running as distributed software component might then provide its address to the second service by broadcasting its announcement message again, putting the second service into knowledge of its address. On the other hand, by confirming reception of the announcement message, the second service may distribute its own, new unique identifier.  
         [0024]     In case said second service is relocated, it is also preferred that said second service broadcasts a new unique identifier to inform said first service about the new location of said second service. Relocation or change of unique identifier of the second service may also be accounted for by broadcasting the unique identifier of the second service to all known first services. These may then address the second service by the new unique identifier.  
         [0025]     In case a new network environment is established, it might happen that no service is running as central software component. In such a case, it might be useful that said first service listens for a confirmation message from said second service for a predetermined time, and after lapse of said predetermined time, said first service announces itself as central software component. By that lock-ups may be avoided. The first service only waits for the predetermined time for a reception confirmation. After that it may run itself as central software component, providing all further services with information about their respective locations.  
         [0026]     It is preferred that said first service and said second service communicate using TCP/IP provided by said network. It is also preferred that said unique identifier is a TCP/IP address.  
         [0027]     Providing the inventive method allows configuring computers and services within a network automatically without user interaction. The respective information is written into the respective files within the computers, so that these may access the respective other computers using the identifiers automatically, in particular in changing environments. Changes to the unique identifiers may be accounted for automatically. Manual changes of configuration files become obsolete. A central software component may maintain information about all available services and provide these upon request.  
         [0028]     Another aspect of the invention is a system for distributing unique identifiers of its services, comprising a first service comprising a first unique identifier, a second service comprising a second unique identifier, a network providing communication functionality and connecting said first service with said second service, said first service providing means to broadcast an announcement message, and said second service providing means to receive said announcement message and to confirm receipt said announcement message to said first service.  
         [0029]     A further aspect of the invention is a computer program for distributing unique identifiers of services within a network, said program comprising instructions operable to cause a processor to communicate with each other using communication interfaces provided by a network, and identifies said services within said network using a unique identifier, start a first service, broadcast an announcement message by said first service into said network, receive said announcement message by at least a second service, and confirm reception of said announcement message by said second service to said first service.  
         [0030]     Yet further aspect of the invention is a computer program product comprising a computer program for distributing unique identifiers of services within a network, said services comprising instructions operable to cause a processor to communicate with each other using communication interfaces provided by a network, and identify said service within said network using a unique identifier, start a first service, broadcast an announcement message by said first service into said network, receive said announcement message by at least a second service, and confirm reception of said announcement message by said second service to said first service.  
         [0031]     Eventually, a further aspect of the invention is a plurality of computers being installed to distribute unique identifiers of services within a network, each of said at least two computers running a service, wherein at least two of said services communicate with each other using communication interfaces provided by a network, and wherein each of said services comprises a unique identifier identifying said service within said network, with the steps of starting a first service on a first computer, broadcasting an announcement message by said first service into said network, receiving said announcement message by at least a second service of a second computer, and confirming reception of said announcement message by said second service to said first service.  
         [0032]     Referring now to the drawings, in which like numerals represent like elements throughout the several figures, aspects of the present invention and the exemplary operating environment will be described. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0033]     In the drawings show:  
         [0034]      FIG. 1 a  computer system;  
         [0035]      FIG. 2 a  flowchart of an inventive method;  
         [0036]      FIG. 3 a  further flowchart of an inventive method;  
         [0037]      FIG. 4  another flowchart of an inventive method;  
         [0038]      FIG. 5 a  further flowchart. 
     
    
     DETAILED DESCRIPTION  
       [0039]     In  FIGS. 1-5  reference numbers  100 / 200 ,  110 / 210  denote similar elements, the function of these elements can be different  
         [0040]      FIG. 1  illustrates a simplified block diagram of exemplary computer system  999  having a plurality of computers  900 ,  901 ,  902  (or even more).  
         [0041]     Computer  900  can communicate with computers  901  and  902  over network  990 . Computer  900  has processor  910 , memory  920 , bus  930 , and, optionally, input device  940  and output device  950  (I/O devices, user interface  960 ). As illustrated, the invention is implemented by computer program product  100  (CPP), carrier  970  and signal  980 . In respect to computer  900 , computer  901 / 902  is sometimes referred to as “remote computer”, computer  901 / 902  is, for example, a server, a peer device or other common network node, and typically has many or all of the elements described relative to computer  900 .  
         [0042]     Computer  900  is, for example, a conventional personal computer (PC), a desktop device or a hand-held device, a multiprocessor computer, a pen computer, a microprocessor-based or programmable consumer electronics device, a minicomputer, a mainframe computer, a personal mobile computing device, a mobile phone, a portable or stationary personal computer, a palmtop computer or the like. Processor  910  is, for example, a central processing unit (CPU), a micro-controller unit (MCU), digital signal processor (DSP), or the like.  
         [0043]     Memory  920  is elements that temporarily or permanently store data and instructions. Although memory  920  is illustrated as part of computer  900 , memory can also be implemented in network  990 , in computers  901 / 902  and in processor  910  itself (e.g., cache, register), or elsewhere. Memory  920  can be a read only memory (ROM), a random access memory (RAM), or a memory with other access options. Memory  920  is physically implemented by computer-readable media, for example: (a) magnetic media, like a hard disk, a floppy disk, or other magnetic disk, a tape, a cassette tape; (b) optical media, like optical disk (CD-ROM, digital versatile disk—DVD); (c) semiconductor media, like DRAM, SRAM, EPROM, EEPROM, memory stick.  
         [0044]     Optionally, memory  920  is distributed. Portions of memory  920  can be removable or non-removable. For reading from media and for writing in media, computer  900  uses well-known devices, for example, disk drives, or tape drives.  
         [0045]     Memory  920  stores modules such as, for example, a basic input output system (BIOS), an operating system (OS), a program library, a compiler, an interpreter, and a text-processing tool. Modules are commercially available and can be installed on computer  900 . For simplicity, these modules are hot illustrated.  
         [0046]     CPP  100  has program instructions and—optionally—data that cause processor  910  to execute method steps of the present invention. In other words, CPP  100  can control the operation of computer  900  and its interaction in network system  999  so that is operates to perform in accordance with the invention. For example and without the intention to be limiting, CPP  100  can be available as source code in any programming language, and as object code (“binary code”) in a compiled form.  
         [0047]     Although CPP  100  is illustrated as being stored in memory  920 , CPP  100  can be located elsewhere. CPP  100  can also be embodied in carrier  970 .  
         [0048]     Carrier  970  is illustrated outside computer  900 . For communicating CPP  100  to computer  900 , carrier  970  is conveniently inserted into input device  940 . Carrier  970  is implemented as any computer readable medium, such as a medium largely explained above (cf. memory  920 ). Generally, carrier  970  is an article of manufacture having a computer readable medium with computer readable program code to cause the computer to perform methods of the present invention. Further, signal  980  can also embody computer program product  100 .  
         [0049]     Having described CPP  100 , carrier  970 , and signal  980  in connection with computer  900  is convenient. Optionally, further carriers and further signals embody computer program products (CPP) to be executed by further processors in computers  901  and  902 .  
         [0050]     Input device  940  provides data and instructions for processing by computer  900 . Device  940  can be a keyboard, a pointing device (e.g., mouse, trackball, cursor direction keys), microphone, joystick, game pad, scanner, or disc drive. Although the examples are devices with human interaction, device  940  can also be a device without human interaction, for example, a wireless receiver (e.g., with satellite dish or terrestrial antenna), a sensor (e.g., a thermometer), a counter (e.g., a goods counter in a factory). Input device  940  can serve to read carrier  970 .  
         [0051]     Output device  950  presents instructions and data that have been processed. For example, this can be a monitor or a display, (cathode ray tube (CRT), flat panel display, liquid crystal display (LCD), speaker, printer, plotter, vibration alert device. Output device  950  can communicate with the user, but it can also communicate with further computers.  
         [0052]     Input device  940  and output device  950  can be combined to a single device. Any device  940  and  950  can be provided optional.  
         [0053]     Bus  930  and network  990  provide logical and physical connections by conveying instruction and data signals. While connections inside computer  900  are conveniently referred to as “bus  930 ”, connections between computers  900 - 902  are referred to as “network  990 ”. Optionally, network  990  includes gateways which are computers that specialize in data transmission and protocol conversion.  
         [0054]     Devices  940  and  950  are coupled to computer  900  by bus  930  (as illustrated) or by network  990  (optional). While the signals inside computer  900  are mostly electrical signals, the signals in network are electrical, electromagnetic, optical or wireless (radio) signals.  
         [0055]     Networks are commonplace in offices, enterprise-wide computer networks, intranets and the Internet (e.g., world wide web WWW). Network  990  can be a wired or a wireless network. To name a few network implementations, network  990  can be, for example, a local area network (LAN), a wide area network (WAN), a public switched telephone network (.PSTN); a Integrated Services Digital Network (ISDN), an infra-red (IR) link, a radio link, like Universal Mobile Telecommunications System (UMTS), Global System for Mobile Communication (GSM), Code Division Multiple Access (CDMA), or satellite link.  
         [0056]     A variety of transmission protocols, data formats and conventions is known, for example, as transmission control protocol/internet protocol (TCP/IP), hypertext transfer protocol (HTTP), secure HTTP, wireless application protocol (WAP), unique resource locator (URL), a unique resource identifier (URI), hypertext markup language (HTML), extensible markup language (XML), extensible hypertext markup language (XHTML), wireless markup language (WML), Standard Generalized Markup Language (SGML).  
         [0057]     Interfaces coupled between the elements are also well known in the art. For simplicity, interfaces are not illustrated. An interface can be, for example, a serial port interface, a parallel port interface, a game port, a universal serial bus (USB) interface, an internal or external modem, a video adapter, or a sound card.  
         [0058]     Computer and program are closely related. As used hereinafter, phrases, such as “the computer provides” and “the program provides”, are convenient abbreviation to express actions by a computer that is controlled by a program.  
         [0059]     FIGS.  2  to  4  depict flowcharts of an inventive method. Depicted are on either side of the vertical dashed line a first service and a second service respectively. The interactions between the services are depicted by dashed lines running from left to right and vice versa.  
         [0060]     Initially, a first service is started in step  2 . By that, the operating system of the underlying computer is booted. Necessary functionality to provide network access is loaded.  
         [0061]     After that, an IP-address is assigned to the service running on the computer in step  4 . After the IP-address has been assigned, the service broadcasts an announcement message into the network in step  6 . The announcement message comprises information about the service, in particular its IP-address. Furthermore, the name of the service may be comprised.  
         [0062]     A second service, already running and in a wait state depicted by the dots . . . receives the announcement message in step  12 . After reception of the announcement message, the IP-address of the announcing first service is extracted. A confirm message is generated and transmitted to the first service in step  14 . The second service again changes into wait state, listening for new announcement messages.  
         [0063]     After sending the announcement message in step  6 , the first service changes into a wait state  8 . The wait state  8  provides a wait cycle, e.g. a predetermined time the first service waits for an answer, which allows listening for a confirmation message for a predetermined time. In case no confirmation message is received, the announcement message is again broadcasted according to step  6 .  
         [0064]     In case the confirmation message is received, the first service leaves its wait state  8  and stores the received information in step  10 . Within the received information, the IP-address of the second service is included, enabling the first service to access the second service directly. This information is stored in step  10 . After that, the first service and the second service are dynamically configured to the new situation in the environment. Further services may announce themselves to the second service accordingly.  
         [0065]      FIG. 3  depicts a similar flowchart as  FIG. 2 . Like reference number refer to like elements. After steps  2 - 6  have been carried out, the first service goes into wait state  8 . In case the first service receives a confirmation message within a predetermined time, the first service stores the comprised information in step  10 . However, it might happen that no second service answers the broadcast announcement message. In such a case, as depicted in  FIG. 3 , the first service may itself announce as central software component in step  16 , and may act thereafter as central software component. This might be useful in case a new environment is set up. During initiation of the new environment no service is running as central software component. Therefore, lock-ups might be avoided when the first service, not receiving a confirmation message, announces itself as central software component. This service may then act as second service for all further, newly initiated services.  
         [0066]      FIG. 4  depicts a similar method as depicted in  FIG. 2 . In addition, after step  10  a monitoring step  18  is depicted. During this monitoring step  18 , monitoring messages are sent to the central software component, monitoring its availability. These monitoring messages are answered by the central software component to confirm its availability. In such a case, the monitoring state remains unchanged. However, in case a monitoring message is not answered within a predetermined time, the first service changes into a new state, where step  6  is again carried out. This means that a new announcement message is broadcast. In case the monitoring message is not answered by the central software component, the first service tries to contact any other central software component by broadcasting a new announcement message. After that, the method is the same as previously described.  
         [0067]      FIG. 5  depicts a central software component running as second service. In step  20 , the central software component is relocated and changes its-unique identifier. This results in lack of availability of this central software component by other services as they try to contact the central software component by its know unique identifier. To account for this, in step  22  messages are generated and sent to all known distributed software components, to announce the new unique identifier of the central software component. The distributed software components receive this message and store the new unique identifier to address the central software component using the new identifier. After that, the central software component changes into state  24 , where it waits for any requests from distributed software components.