Performing event notification in a database having a distributed web cluster
Summary by NHIP
Distributed web cluster event notification
The method records data changes in a shared table across physically distributed servers belonging to different web clusters. It propagates state updates from one cluster to another via polling or broadcast to synchronize the distributed system.
Claim Score by NHIP
Abstract
A method and apparatus for performing event notification in a system having a distributed web cluster. A change of state is provided to the system. A state change table is updated in the system with the provided change of state. The change of state is propagated from the state change table to the web cluster, through polling, broadcast, or other methods. The web cluster is synchronized to reflect the state change.

Term
Term ended
Expired 23 November 2018, 7.8 years ago.
- Priority and filed
- Granted
- Expired
- Today
6 claims: 5 independent, 1 dependent
- 1A method comprising:providing a first change to a first set of data of a first server;accessing a table from the first server;recording the first change in the table;monitoring the table to determine a second change to a second set of data of a second physically distributed server;providing the second change to the second set of data of the second physically distributed server, wherein providing includes providing the second change to the second set of data of a second physically distributed server belonging to a second web cluster that does not contain the first server;accessing the table from the second server, wherein accessing includes accessing the table from the second server belonging to the second web cluster;and recording the second change in the table, wherein recording includes recording the second change to the second set of data of the second server belonging to the second web cluster in the table.
- 3A machine-readable medium having stored thereon data representing sequences of instructions that when executed cause a machine to:provide a first change to a first set of data of a first server;access a table from the first server;record the first change in the table;monitor the table to determine a second change to a second set of data of a second physically distributed server;provide the second change to the second set of data of the second physically distributed server, wherein the instructions to provide further comprise instructions causing the machine to provide the second change to the second set of data of a second physically distributed server belonging to a second web cluster that does not contain the first server;access the table from the second server, wherein the instructions to access further comprise instructions causing the machine to access the table from the second server belonging to the second web cluster;and record the second change in the table, wherein the instructions to record further comprise instructions causing the machine to record the second change to the second set of data of the second server belonging to the second web cluster in the table.
- 4Broadest claimClaim Score 63, broad(NHIP)A machine-readable medium having stored thereon data representing sequences of instructions that when executed cause a machine to:provide a first change to a first set of data of a first server;access a table from the first server;record the first change in the table;monitor the table to determine a second change to a second set of data of a second physically distributed server belonging to a second web cluster;access a second table from the second server;record the second change in the second table;and monitor the second table to determine a change to data of a server not included in the second web cluster.
- 5A system comprising:a first cluster of servers comprising a first server comprising a first set of data and a second server comprising a second set of data;a second cluster of servers comprising a third server comprising a third set of data and a fourth server comprising a fourth set of data;a first table associated with the first cluster of servers, the first table to record changes in the first cluster of servers and changes in the second cluster of servers;a first event notification system associated with the first server to record changes in the first server in the first table, and to monitor the first table to determine changes in the second server, wherein the first event notification system associated with the first server is a first event notification system internal to the first server;and the system further comprising a third event notification system internal to the third server to record changes in the third server in a second table that records changes in the first and second cluster of servers and to monitor the second table to determine changes in the first server.
- 6A system comprising:a first cluster of servers comprising a first server comprising a first set of data and a second server comprising a second set of data;a second cluster of servers comprising a third server comprising a third set of data and a fourth server comprising a fourth set of data;a first table associated with the first cluster of servers, the first table to record changes in the first cluster of servers and changes in the second cluster of servers;a first event notification system associated with the first server to record changes in the first server in the first table, and to monitor the first table to determine changes in the third server, wherein the first event notification system associated with the first server is a first event notification system internal to the first server;and the system further comprising a third event notification system internal to the third server to record changes in the third server in a second table that records changes in the first and second cluster of servers and to monitor the second table to determine changes in the first server.
Independent claims5
58 paragraphs in 5 sections, as filed
FIELD OF THE INVENTION
This invention relates generally to distributed computing systems, and more particularly to a method and apparatus for performing event notification in a database having a distributed web cluster.
BACKGROUND OF THE INVENTION
Modern computerized search systems can contain vast amounts of data. In order to be useful, they must return search results to a user in a reasonable amount of time. One application for computerized search systems is that of finding geographic entities such as an address, street, area, point, businesses, or list of cities that are located near a given starting point. For example, with a system containing a database of homes and businesses with corresponding addresses or geographical locations within a city, a user may want to locate banks, automated teller machines (ATMs), or restaurants which are close to a specific address or business within the city. Because the user may be waiting for the results of the search in real-time, the search results must be returned very quickly. In addition, the results should preferably be presented in an ordered format according to the usefulness to the user. For example, some businesses might have a sale or special offering which should be presented to the user before other businesses which do not have a sale or special.
To improve the access speed to information through public data networks such as the Internet, database information may be copied or “mirrored” across one or more physically distributed servers, known as web clusters. The servers may be widely separated geographically and may contain multiple independent data paths which are separated from those of other servers.
With a distributed data network having multiple data servers, there is a problem in updating and maintaining consistent information on all of the servers. For example, if new information is uploaded to one server, the information must also be distributed to and synchronized with the other mirror servers within the network. In some prior art systems, update information is broadcast to the mirror servers once a day. While this approach may be acceptable for information which does not generally change very rapidly, such as static links to web sites, it leads to server inconsistencies and unacceptable delays for time-critical information such as stock quotes or news reports.
Therefore, there is a need for a way to update time-critical information in a database having multiple servers in a distributed web cluster.
SUMMARY OF THE INVENTION
The present invention provides a method and apparatus for performing event notification in a system having a distributed web cluster. A change of state is provided to the system. A state change table is updated in the system with the provided change of state. The change of state is propagated from the state change table to the web cluster, through polling, broadcast, or other methods. The web cluster is synchronized to reflect the state change.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example and may be better understood by referring to the following description in conjunction with the accompanying drawings, in which like references indicate similar elements and in which:
FIG. 1 is a system diagram which shows a computer hardware environment compatible with the present invention;
FIG. 2 is a system diagram which shows a distributed web cluster environment compatible with the present invention;
FIG. 3 is an internal diagram of a web server compatible with the present invention;
FIG. 4 is an internal diagram of an event notification system compatible with the present invention;
FIG. 5 is a flowchart which shows a method for performing event notification in a database having a distributed web cluster compatible with the present invention.
DESCRIPTION OF AN EMBODIMENT OF THE PRESENT INVENTION
In the following description of an embodiment, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration a specific embodiment in which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the present invention. A preferred embodiment of the present invention, described below, enables a remote computer system user to execute a software application on a network file server.
In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be evident, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate description.
The present invention provides a method and apparatus for performing event notification in a system having a distributed web cluster. A change of state is provided to the system. A state change table is updated in the system with the provided change of state. The change of state is propagated from the state change table to the web cluster, through polling, broadcast, or other methods. The web cluster is synchronized to reflect the state change. Any type of message or event may be sent to the distributed web including but not limited to state information, lock out commands, additions, modifications, or deletions of information content, web pages, banner ads, or calendar events.
FIG. 1 illustrates one embodiment of a computer system <b>100</b> which implements the principles of the present invention. Computer system <b>100</b> comprises a processor <b>105</b>, a storage device <b>110</b>, and a bus <b>115</b>. The processor <b>105</b> is coupled to the storage device <b>110</b> by the bus <b>115</b>. In addition, a number of user input/output devices, such as a keyboard <b>120</b> and a display <b>125</b>, are also coupled to the bus <b>115</b>. The processor <b>105</b> represents a central processing unit of any type of architecture, such as CISC, RISC, VLIW, or hybrid architecture. In addition, the processor <b>105</b> could be implemented on one or more chips. The storage device <b>110</b> represents one or more mechanisms for storing data. For example, the storage device <b>110</b> may include read only memory (ROM), random access memory (RAM), magnetic disk storage mediums, optical storage mediums, flash memory devices, and/or other machine-readable mediums. The bus <b>115</b> represents one or more buses (e.g., AGP, PCI, ISA, X-Bus, VESA, etc.) and bridges (also termed as bus controllers). While this embodiment is described in relation to a single processor computer system, the invention could be implemented in a multi-processor computer system.
In addition to other devices, one or more of a network <b>130</b>, a TV broadcast signal receiver <b>131</b>, a fax/modem <b>132</b>, a digitizing unit <b>133</b>, a sound unit <b>134</b>, and a graphics unit <b>135</b> may optionally be coupled to bus <b>115</b>. The network <b>130</b> and fax modem <b>132</b> represent one or more network connections for transmitting data over a machine readable media (e.g., carrier waves). The digitizing unit <b>133</b> represents one or more devices for digitizing images (i.e., a scanner, camera, etc.). The sound unit <b>134</b> represents one or more devices for inputting and/or outputting sound (e.g., microphones, speakers, magnetic storage devices, optical storage devices, etc.). The graphics unit <b>135</b> represents one or more devices for generating <b>3</b>-D images (e.g., graphics card).
FIG. 1 also illustrates that the storage device <b>110</b> has stored therein data <b>136</b> and software <b>137</b>. Data <b>136</b> represents data stored in one or more of the formats described herein. Software <b>137</b> represents the necessary code for performing any and/or all of the techniques described with reference to FIGS. 3-6. It will be recognized by one of ordinary skill in the art that the storage device <b>110</b> preferably contains additional software (not shown), which is not necessary to understanding the invention.
FIG. 1 additionally illustrates that the processor <b>105</b> includes decode unit <b>140</b>, a set of registers <b>141</b>, and execution unit <b>142</b>, and an internal bus <b>143</b> for executing instructions. It will be recognized by one of ordinary skill in the art that the processor <b>105</b> contains additional circuitry, which is not necessary to understanding the invention. The decode unit <b>140</b>, registers <b>141</b> and execution unit <b>142</b> are coupled together by internal bus <b>143</b>. The decode unit <b>140</b> is used for decoding instructions received by processor <b>105</b> into control signals and/or microcode entry points. In response to these control signals and/or microcode entry points, the execution unit <b>142</b> performs the appropriate operations. The decode unit <b>140</b> may be implemented using any number of different mechanisms (e.g., a look-up table, a hardware implementation, a PLA, etc.). While the decoding of the various instructions is represented herein by a series of if/then statements, it is understood that the execution of an instruction does not require a serial processing of these if/then statements. Rather, any mechanism for logically performing this if/then processing is considered to be within the scope of the implementation of the invention.
The registers <b>141</b> represent a storage are on processor <b>105</b> for storing information, including control/status information, integer data, floating point data, and packed data. It will be understood by one of ordinary skill in the art that one aspect of the invention is the described instruction set for operating on packed data. According to this aspect of the invention, the storage area used for storing the packed data is not critical. The term data processing system is used herein to refer to any machine for processing data, including the computer systems(s) described with reference to FIG. <b>1</b>.
As shown in FIG. 2, the present invention is compatible with a distributed database including one or more web clusters. Multiple web clusters <b>201</b>, <b>203</b> may each contain multiple web servers <b>205</b>, <b>207</b>. Each of the web servers <b>205</b>, <b>207</b> have access to a centralized state change table <b>209</b>, <b>211</b>. The state change table <b>209</b>, <b>211</b> is used to synchronize the web servers <b>205</b>, <b>207</b> with each other and with those within each of the web clusters <b>201</b>, <b>203</b>. In one embodiment of the present invention, the web servers <b>205</b>, <b>207</b> determine that there is a new event or change of state by periodically polling the state change table <b>209</b>, <b>211</b>. It will be recognized by one of ordinary skill in the art that methods of determining a new event or change of state other than polling are compatible with the present invention, such as checking the state change table for a new event each time a request for information is performed by the web server <b>205</b>, <b>209</b>, or sending an event notification trigger message from the state change table <b>209</b>, <b>211</b> to the web server <b>205</b>, <b>209</b> each time a new event is added to the state change table <b>209</b>, <b>211</b>.
As shown in FIG. 3, a web server <b>301</b> typically implements a memory cache to hold the most frequently accessed information in memory. This allows the web server <b>301</b> to more quickly retrieve the information than if it was stored on a fixed storage device such as a hard disk drive or CD ROM drive. However, when an update is made to the information within the database contained on the fixed storage device, the web server <b>301</b> must flush the information contained in the memory cache in order eliminate possible inconsistencies between memory and disk. Without first flushing the cache, any update to the information within the database will not be visible when external requests for information are made by users and other servers. In one embodiment of the present invention, separate memory caches are used for banner ads <b>305</b> and calendar events <b>307</b>. When information such as a banner ad or a page content item is modified or added through the event notification system <b>303</b>, each production web server <b>301</b> automatically flushes its banner ad memory cache <b>305</b> or calendar events cache <b>307</b> accordingly. It will be recognized by one of ordinary skill in the art that many other well-known memory cache structures, such as a single set associative cache or other multiple caches implementing any one of a number of cache algorithms such as a least recently used (LRU) algorithm, may be used with the present invention without loss of generality.
FIG. 4 describes an event notification structure compatible with the present invention. An event notification system <b>401</b> preferably implements a periodic watch module <b>403</b>, a notification list <b>405</b>, and a dispatch list <b>411</b>. The watch module <b>403</b> monitors the state change table <b>407</b>, <b>409</b> to determine any change in state or any new notification message. The notification list <b>405</b> records notification events in state change table <b>407</b>, <b>409</b>. The dispatch list <b>411</b> is used for transmitting and synchronizing banner ads through the banner ad memory cache <b>413</b> or the calendar events cache <b>415</b> accordingly.
In one embodiment of the present invention, the state change table <b>209</b>, <b>211</b>, <b>407</b>, <b>409</b> is updated as described below.
1. Set up a configuration file for each application which points to an eventnotify table.
2. Create the eventnotify table on a database server.
In one embodiment of the present invention, an example configuration file may contain the following information:
# Event notification (e.g. page content flush, banner ad flush). By using SQLServerName for EventNotifyServerName,
# we automatically use development\production values without requiring an explicit local.txt entry.
!EventNotifyServerName: XXSQLSERVERNAMEXX
!EventNotifyName: abi
!EventNotifyTable: abi.eventnotify
In one embodiment of the present invention, an example core configuration file may contain the following information:
# Event notification (e.g. page content flush, banner ad flush), also requires setting of
# EventNotifyServerName, EventNotifyName, and EventNotifyTable.
# To disable event notification, set EventNotifyPollingInterval to zero
# or unset any of the other event notify settings.
!EventNotifyPollingInterval: 1
In the above example, the polling interval is set to one minute. It will be recognized that it is also possible to eliminate polling through the use of database triggers. The application program interface (API), described below, can remain the same even if polling is eliminated in the Core implementation.
In one embodiment of the present invention, event notification without polling may be implemented as described below:
\\ Generic, application-generated event notification virtual void eventNotify(const char*name, const char*argument);
This method may be called whenever an event happens. The name of the event is a string that defines the event, and the second argument is a modifier for the event. The set of event strings may be defined as constants in a header file.
In one embodiment of the present invention, an event is invoked as described below:
\\ Generic, application-generated event notification. Use eventNotify for this machine only,
\\ and productionNotify for all machines.
void eventNotify(const char*name, const char*argument=“ ”);
void productionNotify(const char*name, const char*argument=“ ”)
It will be recognized that eventNotify only distributes the event for the local server. It is also possible to use productionnotify, which sends the event to all servers. After a call to productionNotify, all servers will preferably act upon the event within one minute, assuming that there is load on the server and the timeout is checked after each request. For example, banner ads should be flushed whenever a banner ad is modified or added. In one embodiment of the invention, this is implemented as described below:
\\ Flush banner ads theContextApp.productionNotify(EVENT_FLUSHBANNERAD);
In the banner ad server, which may preferably be a persistent object, a flush banner event is preferably monitored using a virtual C++ method and the cache flushes in response as described below:
void
BannerAdMgr::eventNotify(const char*name, const char*argument)
{
if (!strcmp(name, EVENT_FLUSHBANNERAD)) { flushContext( );
}
}
In one embodiment of the present invention, a method for performing event notification in a database having a distributed web cluster is shown in FIG. <b>5</b>. At step <b>501</b>, the event notification system queries the state change table for a maximum event serial number. This gives the last event generated prior to startup. At step <b>503</b>, the state change table is queried for any events whose serial number exceeds that of the last processed event. This gives any new events since the last check. If at step <b>505</b> there are no events, control passes to step <b>509</b>, where the system waits for a fixed amount of time and then returns control to step <b>503</b>. Otherwise, at step <b>507</b> each new event is dispatched to modules listed in a registry and control passes to step <b>509</b>.
While the invention is described in terms of preferred embodiments in a specific system environment, those of ordinary skill in the art will recognize that the invention can be practiced, with modification, in other and different hardware and software environments within the spirit and scope of the appended claims.
Contents5
6 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6
Every citation, both waysCites: the store holds 9 of 10
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2010106915A1 | Cited by | United States of America | Pre-grant |
| US9865010B2 | Cited by | United States of America | Applicant |
| US7797306B1 | Cited by | United States of America | Applicant |
| US9697547B2 | Cited by | United States of America | Applicant |
| US7610386B1 | Cited by | United States of America | Search report |
| US7558846B2 | Cited by | United States of America | Applicant |
| US6865601B1 | Cited by | United States of America | Search report |
| US2006241996A1 | Cited by | United States of America | Pre-grant |
| US9762692B2 | Cited by | United States of America | Applicant |
| US2006291434A1 | Cited by | United States of America | Pre-grant |
| US8589251B2 | Cited by | United States of America | Applicant |
| US7529805B2 | Cited by | United States of America | Applicant |
| US8229814B2 | Cited by | United States of America | Applicant |
| US9171003B2 | Cited by | United States of America | Applicant |
| US2008086573A1 | Cited by | United States of America | Pre-grant |
| US8108623B2 | Cited by | United States of America | Applicant |
| US9660993B2 | Cited by | United States of America | Search report |
| US8713186B2 | Cited by | United States of America | Applicant |
| US2004078464A1 | Cited by | United States of America | Pre-grant |
| US7853643B1 | Cited by | United States of America | Applicant |
| US7818370B2 | Cited by | United States of America | Applicant |
| US2002035621A1 | Cited by | United States of America | Pre-grant |
| US9992279B2 | Cited by | United States of America | Applicant |
| US9542708B2 | Cited by | United States of America | Applicant |
| US7602756B2 | Cited by | United States of America | Applicant |
| US7318107B1 | Cited by | United States of America | Applicant |
| US10474653B2 | Cited by | United States of America | Applicant |
| US9960964B2 | Cited by | United States of America | Search report |
| US7669177B2 | Cited by | United States of America | Applicant |
| US8332280B2 | Cited by | United States of America | Applicant |
| US8027892B2 | Cited by | United States of America | Applicant |
| US2014123228A1 | Cited by | United States of America | Pre-grant |
| US2015236902A1 | Cited by | United States of America | Pre-grant |
| US7664847B2 | Cited by | United States of America | Applicant |
| US7836162B2 | Cited by | United States of America | Search report |
| US2009292877A1 | Cited by | United States of America | Pre-grant |
| US7698276B2 | Cited by | United States of America | Applicant |
| US2011196940A1 | Cited by | United States of America | Pre-grant |
| US10924573B2 | Cited by | United States of America | Applicant |
| US2009292759A1 | Cited by | United States of America | Pre-grant |
| US2004002958A1 | Cited by | United States of America | Pre-grant |
| US2007276842A1 | Cited by | United States of America | Pre-grant |
| US2005240665A1 | Cited by | United States of America | Pre-grant |
| US2004260800A1 | Cited by | United States of America | Pre-grant |
| US7209916B1 | Cited by | United States of America | Applicant |
| US10218806B2 | Cited by | United States of America | Applicant |
| US9413588B2 | Cited by | United States of America | Applicant |
| US7624126B2 | Cited by | United States of America | Search report |
| US7130895B2 | Cited by | United States of America | Search report |
| US7853579B2 | Cited by | United States of America | Applicant |
| US6947992B1 | Cited by | United States of America | Search report |
| US6944623B2 | Cited by | United States of America | Search report |
| US2005038772A1 | Cited by | United States of America | Pre-grant |
| US7360202B1 | Cited by | United States of America | Applicant |
| US8589275B2 | Cited by | United States of America | Applicant |
| US2004002972A1 | Cited by | United States of America | Pre-grant |
| US9865010B2 | Cited by | United States of America | Applicant |
| US7516167B2 | Cited by | United States of America | Search report |
| US10091335B2 | Cited by | United States of America | Applicant |
| US7177859B2 | Cited by | United States of America | Applicant |
| US2005038833A1 | Cited by | United States of America | Pre-grant |
| US7747717B2 | Cited by | United States of America | Search report |
| US2004002988A1 | Cited by | United States of America | Pre-grant |
| US2002059465A1 | Cited by | United States of America | Pre-grant |
| US2008071859A1 | Cited by | United States of America | Pre-grant |
| US6651141B2 | Cited by | United States of America | Applicant |
| US8255485B2 | Cited by | United States of America | Applicant |
| US2007156656A1 | Cited by | United States of America | Pre-grant |
| US8335762B2 | Cited by | United States of America | Applicant |
| US8666903B2 | Cited by | United States of America | Applicant |
| US7487230B2 | Cited by | United States of America | Applicant |
| US2004267824A1 | Cited by | United States of America | Pre-grant |
| US7509304B1 | Cited by | United States of America | Applicant |
| US6965938B1 | Cited by | United States of America | Search report |
| US10979499B2 | Cited by | United States of America | Applicant |
| US4972367A | Cites | United States of America | Search report |
| US5287453A | Cites | United States of America | Search report |
| US5490270A | Cites | United States of America | Search report |
| US5826253A | Cites | United States of America | Search report |
| US5884325A | Cites | United States of America | Search report |
| US5926816A | Cites | United States of America | Search report |
| US5999947A | Cites | United States of America | Search report |
| US6098093A | Cites | United States of America | Search report |
| US6381635B1 | Cites | United States of America | Search report |
| International Search Report PCT/US99/27848, Nov. 23, 1999. | Non-patent | – | Applicant |
4 members in 3 offices
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 19889998 | United States of America | A | |
| US19980198899 | – | – | – |
Members4
| Document | Office | Kind | |
|---|---|---|---|
| WO0031667A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU1920700A | Australia | A | |
| US2002083030A1 | United States of America | A1 | |
| US6466949B2This record | United States of America | B2 |
16 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Lapse for failure to pay maintenance feesLapsedLAPS | LAPS | |
| Maintenance fee reminder mailedREMI | REMI | |
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| Fee payment procedurePAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication, DOCDB
- 6466949
- Publication, EPODOC
- US6466949
- Application
- 9198899
- Application, DOCDB
- 19889998
- Application, EPODOC
- US19980198899
Titles
- English
- Performing event notification in a database having a distributed web cluster
Classification
- CPC, 4
- G06F16/27
- G06F16/275
- G06F16/2358
- Y10S707/99952
- IPC, 1
- G06F17 30
- USPC, 6
- 001001000
- 707999010
- 707999200
- 707999201
- 707E17005
- 709203000