throbber
I 1111111111111111 11111 1111111111 1111111111 11111 1111111111 1111111111 11111111
`US008499023B 1
`
`c12) United States Patent
`Harris
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 8,499,023 Bl
`Jul. 30, 2013
`
`(54) SERVLET-BASED GRID COMPUTING
`ENVIRONMENT USING GRID ENGINES AND
`SWITCHES TO MANAGE RESOURCES
`
`(75)
`
`Inventor: Lyle T. Harris, Portland, OR (US)
`
`(73) Assignee: Oracle America, Inc., Redwood City,
`CA (US)
`
`( *) Notice:
`
`Subject to any disclaimer, the term ofthis
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 2014 days.
`
`(21) Appl. No.: 11/087,420
`
`(22) Filed:
`
`Mar. 23, 2005
`
`(51)
`
`(2006.01)
`(2006.01)
`
`Int. Cl.
`G06F 15116
`G06F 151177
`(52) U.S. Cl.
`USPC ........................................... 709/201; 709/220
`( 58) Field of Classification Search
`USPC ................ 709/201, 238; 705/26, 30; 713/182
`See application file for complete search history.
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`5,838,916 A * 11/1998 Domenikos et al. .......... 709/219
`5,950,008 A *
`9/1999 van Hoff ....................... 717/139
`6,011,916 A *
`1/2000 Moore et al. .................. 717/104
`6,065,043 A *
`5/2000 Domenikos et al. .......... 709/203
`6,289,105 Bl*
`9/2001 Murota ......................... 380/286
`6,301,267 Bl* 10/2001 Ben-Ami ...................... 370/468
`6,356,937 Bl*
`3/2002 Montville et al.
`............ 709/206
`6,363,398 Bl*
`3/2002 Andersen .
`707/103 R
`6,643,708 Bl* 11/2003 Francis et al.
`................ 709/246
`6,732,101 Bl*
`5/2004 Cook .............................. 707/10
`6,760,752 Bl*
`7/2004 Liu et al. ....................... 709/206
`7,130,891 B2 * 10/2006 Bernardin et al.
`............ 709/218
`7,266,582 B2 *
`9/2007 Stelting ......................... 709/201
`7,293,059 B2 * 11/2007 Pearson ........................ 709/201
`
`8,135,841 B2 *
`.. ..... 709/226
`3/2012 Bozak et al.
`2002/0007453 Al*
`1/2002 Nemovicher ................. 713/155
`2002/0026487 Al *
`2/2002 Ogilvie et al.
`................ 709/206
`2002/0059144 Al*
`5/2002 Meffert et al. .................. 705/51
`2003/0046533 Al *
`3/2003 Olkin eta!. ................... 713/152
`2003/0196080 Al* 10/2003 Karman ........................ 713/150
`2004/0030893 Al *
`2/2004 Kararnchedu et al. ........ 713/168
`2004/0064824 Al *
`4/2004 McNeely et al.
`............. 719/316
`2004/0117661 Al*
`6/2004 Karaoguz et al. ............. 713/201
`2004/0139314 Al*
`7/2004 Cook et al. .................... 713/151
`2004/0143787 Al*
`7/2004 Grancharov et al.
`...... 715/501.1
`2004/0181469 Al*
`9/2004 Saeki .............................. 705/30
`2004/0199633 Al* 10/2004 Pearson ........................ 709/226
`2004/0215590 Al* 10/2004 Kroening .......................... 707 /l
`2005/0021594 Al*
`1/2005 Bernardin et al. ............ 709/200
`2005/0027785 Al
`212005 Bozak et al.
`2005/0027863 Al
`2/2005 Talwar et al.
`(Continued)
`
`WO
`
`FOREIGN PATENT DOCUMENTS
`* 9/1997
`WO 97/04194
`
`Primary Examiner - Guang Li
`(74) Attorney, Agent, or Firm - Marsh Fischmann &
`Breyfogle, LLP; Kent A. Lembke
`
`ABSTRACT
`(57)
`A method for providing a lightweight grid computing envi(cid:173)
`ronment. The method includes providing a web server run(cid:173)
`ning on a computer device and a grid engine on the web server
`that is adapted for processing grid compute requests from
`user programs. The grid engine receives a grid compute
`request from a user program that is processed by the grid
`engine to identify a client program available in the grid and a
`path in the grid to the client program. The method includes
`loading and running the client program with the grid engine to
`generate a client program output for transmittal to the user
`program. The grid compute request includes a URL request
`string including a name of the client program and the path to
`the client program and may also include a name of the com(cid:173)
`puter device hosting the web server and a path to the grid
`engine .
`
`10 Claims, 7 Drawing Sheets
`
`400~
`
`220
`
`222
`
`224
`
`226
`
`Netflix, Inc. - Ex. 1011, Page 000001
`IPR2022-00322 (Netflix, Inc. v. CA, Inc.)
`
`

`

`US 8,499,023 Bl
`Page 2
`
`U.S. PATENT DOCUMENTS
`2005/0044251 Al
`2/2005 Bozak et al.
`2005/0050183 Al
`3/2005 Hansen et al.
`2005/0060237 Al*
`3/2005 Barsness et al. ................ 705/26
`2005/0066056 Al*
`3/2005 Dominic ....................... 709/245
`2005/0080923 Al*
`4/2005 Elzur
`........ 709/238
`
`6/2005 Cho .............................. 709/201
`2005/0120073 Al*
`2005/0246547 Al* 11/2005 Oswald et al. ................ 713/182
`2006/0047850 Al * 3/2006 Singh Bhasin et al. ....... 709/238
`6/2006 Miloushev et al.
`........... 710/242
`2006/0143350 Al*
`
`* cited by examiner
`
`Netflix, Inc. - Ex. 1011, Page 000002
`
`

`

`0 ....
`N
`~o
`~
`:-'
`
`~
`
`2'
`
`~ = ~
`
`~
`~
`~
`
`00 .
`~
`
`,~~~Ill
`
`GRID PACKET
`UNPROCESSED
`
`138
`
`lv ·-:. -
`
`MEMORY
`
`137
`
`112
`
`ENGINE
`GRID
`
`WEB SERVER
`; PUBLIC DOMAIN
`~
`
`13Q
`GRID HOST SYSTEM
`
`I
`186
`
`/""130
`
`,..104
`
`µ-V
`ILJI
`
`PROGRAMS
`
`USER
`
`I
`
`USER DEVICE
`
`~~7i".1v164
`
`_L
`
`110
`
`,)
`
`r
`
`USER SYSTEM/SPACE
`
`'""
`
`100
`
`176
`
`174
`O
`
`1 I
`
`\0 = N w = "'""'
`
`\0
`~
`00
`
`d r.,;_
`
`0 ....
`....
`.....
`rJJ =(cid:173)
`
`('D
`('D
`
`-....J
`
`-------------'
`
`ENGINE
`GRID
`
`I WEB SERVER
`, PRIVATE DOMAIN
`r------------
`150
`
`140
`
`GRID PACKET
`PROCESSED
`
`STREAM
`OUTPUT
`
`II
`
`120
`
`FIREWAW 1--H COMMUNICATIONS
`
`I I' NElWORK
`
`PROXY
`
`192
`
`....,
`RECEIVING SYSTEM
`
`t I
`
`OUTPUT GRID! I H-LJ.-1. 196
`MEMORY
`
`FIG.1
`
`182
`I
`
`178
`I
`
`11
`
`lJ-ll
`
`PACKET
`
`Netflix, Inc. - Ex. 1011, Page 000003
`
`

`

`U.S. Patent
`
`Jul. 30, 2013
`
`Sheet 2 of 7
`
`US 8,499,023 Bl
`
`200
`
`~
`
`221
`
`223
`
`227
`
`GRID HOST1
`
`GRID HOST3
`
`URL REQUEST
`(http://GridHost11GridServleU ... )
`
`URL REQUEST
`~ttp//GridHost3/GridServleU ... )
`URL REQUEST
`(http://GridHost2/GridServleU ... )
`
`URL REQUEST
`(http://GridHost4/GridServleU ... )
`
`FIG.2
`
`Netflix, Inc. - Ex. 1011, Page 000004
`
`

`

`U.S. Patent
`
`Jul. 30, 2013
`
`Sheet 3 of 7
`
`US 8,499,023 Bl
`
`300 '-\
`
`220
`
`222
`
`224
`
`226
`
`URL REQUEST
`(http //GridHost 1/GridServleV ... )
`
`URL REQUEST
`(http://GridHost3/GridServleV ... )
`URL REQUEST
`(http://GridHos12/GridServleV ... )
`
`URL REQUEST
`(http://GridHosl4/GridServleV ... )
`
`232~
`
`236
`
`FIG.3
`
`Netflix, Inc. - Ex. 1011, Page 000005
`
`

`

`U.S. Patent
`
`Jul. 30, 2013
`
`Sheet 4 of 7
`
`US 8,499,023 Bl
`
`400
`
`~
`
`220
`
`222
`
`224
`
`226
`
`230
`
`URL REQUEST
`(http1/GridHost1/GridServleU ... )
`
`234
`
`URL REQUEST
`(http://GridHost3IGridServleU ... )
`
`URL REQUEST
`(http://GridHost4IGridServleU ... )
`
`420
`
`INTER SWITCH
`COMMUNICATION
`
`430
`
`436
`
`210
`
`FIG.4
`
`Netflix, Inc. - Ex. 1011, Page 000006
`
`

`

`U.S. Patent
`
`Jul. 30, 2013
`
`Sheet 5 of 7
`
`US 8,499,023 Bl
`
`500
`
`~
`
`220
`
`222
`
`224
`
`226
`
`230
`
`URL REQUEST
`(http//GndHost1/GndServleU ... )
`
`234
`
`URL REQUEST
`(http://GndHost3/GndServleU ... )
`
`URL REQUEST
`(http://GridHosl4/GridServleU ... )
`
`420
`
`INTER SWITCH
`COMMUNICATION
`
`430
`
`210
`
`562
`
`FIG.5
`
`Netflix, Inc. - Ex. 1011, Page 000007
`
`

`

`U.S. Patent
`
`Jul. 30, 2013
`
`Sheet 6 of 7
`
`US 8,499,023 Bl
`
`600
`
`~
`
`220
`
`222
`
`224
`
`226
`
`230
`
`URL REQUEST
`(http I/GridHost1/GridServleV ... )
`
`420
`
`INTER SWITCH
`COMMUNICATION
`
`URL REQUEST
`URL REQUEST
`(http://GridHosVGridServleV ... ) (httpY/GridHosVGridServleV ... )
`DNS ROUND
`ROBIN
`REQUESTS
`
`562
`
`FIG.6
`
`610
`
`CELL
`PHONE
`
`620
`
`210
`
`Netflix, Inc. - Ex. 1011, Page 000008
`
`

`

`U.S. Patent
`
`Jul. 30, 2013
`
`Sheet 7 of 7
`
`US 8,499,023 Bl
`
`700~
`
`710
`
`714
`
`712
`
`URL REQUEST
`(httpi/GridHos\2/GridServleU ... )
`
`URL REQUEST
`(http://GridHost1/GridServ1eU ... )
`
`GRID FARM (NETWORK)
`
`750
`
`704
`
`COMMUNICATIONS NETWORK
`
`762
`
`752
`
`localion http1/m~ostcom/gnd:
`UserProo.class (User Client Program)
`filel.dat 1Client Program Dalasel)
`
`USER'S NETWORK
`
`FIG.7
`
`Netflix, Inc. - Ex. 1011, Page 000009
`
`

`

`US 8,499,023 Bl
`
`1
`SERVLET-BASED GRID COMPUTING
`ENVIRONMENT USING GRID ENGINES AND
`SWITCHES TO MANAGE RESOURCES
`
`2
`systems, would utilize non-proprietary teclmologies and pro(cid:173)
`gramming languages and standard data transfer and commu(cid:173)
`nication protocols.
`
`BACKGROUND OF THE INVENTION
`
`SUMMARY OF THE INVENTION
`
`1. Field of the Invention
`The present invention relates, in general, to grid computing
`systems and environments, and, more particularly, a servlet(cid:173)
`based method and corresponding system for processing
`requests to grid resources and managing access to grid
`resources and transmission of resource inputs and outputs in
`a lightweight manner that is not specific to a particular grid
`implementation or programming language.
`2. Relevant Background
`In the computer industry, grid computing is growing in
`popularity to address the growing demands for on demand
`processing power and capability. Grid computing is a form of
`distributed computing in which computing resources are
`shared by numerous users and in many cases, the computing
`resources are shared across networks and across a diverse
`geographic area. Grid computing facilitates selection, aggre(cid:173)
`gation, and sharing of computing resources resident in mul(cid:173)
`tiple administrative domains and across geographic areas.
`The sharing may be based upon availability, capability, and
`cost of the resources available in a grid as well as on a user's
`quality of service requirements and users functional
`demands.
`If managed properly, grid computing can result in reduced
`cost of ownership, aggregated and improved efficiency of
`computing, data, and storage resources, and enablement of
`virtual organizations for applications and data sharing. For
`example, in a grid computing environment, all of the dispar(cid:173)
`ate computers and systems in an organization or among orga(cid:173)
`nizations can be organized and managed as a grid to become
`one large, integrated computing system. That single inte(cid:173)
`grated system can then handle problems and processes too
`large and intensive for any single computer of the organiza(cid:173)
`tion or organizations to easily handle in an efficient manner.
`While providing many advantages, grid computing is not
`being used optimally and continues to challenge the comput(cid:173)
`ing industry. Implementation and administration of grid(cid:173)
`based computing is often difficult and cumbersome. Further,
`few standards have been implemented for grid computing and
`many of the implementation and administration environ(cid:173)
`ments or teclmologies are proprietary to a particular com(cid:173)
`pany, such as a software or hardware development company.
`Another problem with grid computing is that programmers
`wishing to use grid resources usually need to learn some
`additional, grid-specific software programming language to
`take full advantage of the grid implementation. To make
`matters worse, the programmer may have to contort or modify
`their program or programs in an undesirable manner to use the
`grid resources. The programmer may also be forced to seg(cid:173)
`ment their data to effectively use the resources which may
`create a difficult task of processing the split data that is
`returned from the grid resources. Additional frustrations are
`caused when the grid environment includes firewalls or
`HTTP proxy servers that can make it hard to establish direct
`connections between user devices and grid resources, such as
`grid-available client programs or services.
`As a result of these problems or limitations with present
`grid computing environments, there remains a need for an
`improved grid computing environments that enhance the abil(cid:173)
`ity of users and programmers to access and effectively use
`resources in a grid. Preferably such a method, and related
`
`10
`
`The present invention addresses the above and other prob(cid:173)
`lems by providing a method and corresponding systems for
`managing a grid computing environment using grid engines
`( e.g., GridServlets) and grid switches. The invention provides
`a grid computing network or system that is a ubiquitous fabric
`that a programmer can plug into to provide their client pro(cid:173)
`gram or device as a grid computing resource. The use of grid
`packets and other data transmission techniques replaces the
`15 "grid" of prior systems with a "packet" computing paradigm.
`The method and system of the invention generally takes
`advantage of easily deployed, self-maintaining, readily
`understood web teclmology and object-oriented program(cid:173)
`ming (such as Java programming or software) to implement a
`20 lightweight grid computing environment or system.
`In one embodiment, the grid computing system utilizes a
`web server or web server teclmology with the addition of
`several special applications and/or objects, such as HttpServ(cid:173)
`lets and associated Java classes, adapted to facilitate the
`25 deployment and execution of a user's software to a grid of
`computer systems. These applications may be labeled "grid
`engines" or "GridServlets" that respond to users' grid com(cid:173)
`puting requests to load and execute client programs ( or
`remotely run such programs) and "grid switches" that act as
`30 front end controllers to provide access to the grid engines and
`client programs (or grid resources). In one embodiment, the
`grid computing system is entirely Java based and in this case,
`the specific architecture of servers in the grid ( or grid servers)
`is not limiting as was the case with prior grid computing
`35 systems. In some embodiments, native code is provided for
`specific architectures in other languages, such as C, C++,
`Fortran, or the like to take advantage of specific hardware
`and/or libraries. By using the method and system of the inven(cid:173)
`tion, implementing grid functionality becomes as easy as
`40 opening a URL connection. In addition, the inventive method
`and system allows grid computing to be accomplished on a
`network such as the Internet, by allowing grid compute
`requests to be made through both firewalls and HTTP proxies,
`thereby eliminating the need for a direct connection between
`45 a requesting user device or program and a client program or
`other grid resource ( as was the case with prior grid computing
`systems).
`More particularly, a method is provided for managing
`resources in a grid computing system. The method includes
`50 providing a web server running on a computer device on a
`digital communications network and providing a grid engine
`on the web server. The grid engine is adapted for processing
`grid compute requests from user programs. The method con(cid:173)
`tinues with the grid engine receiving a grid compute request
`55 from a user program. Then, the grid compute request is pro(cid:173)
`cessed by the grid engine to determine a client program
`among the grid resources and a path in the grid to the client
`program. The method includes loading and running the client
`program on the computer device to generate a client program
`60 output which is then transmitted to the user program.
`In one embodiment, the grid compute request includes a
`URL request string including a name of the client program
`and the path to the client program and may also include a
`name of the computer device hosting the web server and a
`65 path to the grid engine. The client program output may be
`transmitted to the user program as a data stream from the
`opened client program URL. The grid compute request may
`
`Netflix, Inc. - Ex. 1011, Page 000010
`
`

`

`US 8,499,023 Bl
`
`3
`also including a parameter defining a data set and this data set
`is loaded to the web server for processing on by the client
`program run by the grid engine. The grid compute request
`may in some embodiments of the method include a grid
`packet that is a client processing program which can be run or
`processed by the grid engine to process a data set and the
`processed grid packet may be returned to the user program,
`stored for later retrieval by the user program, and/or transmit(cid:173)
`ted to a grid end point device based on information/instruc(cid:173)
`tions in the grid compute request.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`10
`
`4
`to execute Java programs in response to requests made of the
`web server. Users (or user programs) of the grid computing
`system can either load their own particular Java programs via
`a servlet (i.e., the grid engine) and have the results returned to
`them, such as via an InputStream, or they can submit a small,
`packet type program ( or "grid packet") to the grid engine to be
`processed by accessing ( e.g., loaded on the web server host(cid:173)
`ing the grid engine or run remotely) client programs and then
`returned to them, such as in a Java object format or the like.
`In the following discussion, computer and network devices
`( or "elements"), such as the software and hardware devices
`within the system 100, are described in relation to their func(cid:173)
`tion rather than as being limited to particular electronic
`devices and computer architectures and programming lan-
`15 guages. Examples of implementations provided in the Java
`programming language are provided to more efficiently
`describe one useful embodiment of the invention but the
`invention is not limited to the Java prograniming language as
`those skilled in the art will readily understand how the Java(cid:173)
`based examples can be applied in other languages and other
`architectures.
`Further, to practice the invention, the computer and net-
`work devices or elements may be any devices useful for
`providing the described functions, including well-known data
`processing and communication devices and systems, such as
`application, database, web, blade, and entry level servers,
`midframe, midrange, and high-end servers, personal comput(cid:173)
`ers and computing devices including mobile computing and
`electronic devices with processing, memory, and input/output
`30 components running code or programs ("applications",
`"tasks" within such applications, and "services") in any use(cid:173)
`ful prograniming language, and server devices configured to
`maintain and then transmit digital data over a wired or wire(cid:173)
`less communications network. Data storage systems and
`35 memory components are described herein generally and are
`intended to refer to nearly any device and media useful for
`storing digital data such as disk-based devices, their control(cid:173)
`lers or control systems, and any associated software. Data,
`including transmissions to and from the elements of the net(cid:173)
`work 100 and among other components of the network/sys(cid:173)
`tems 100 in "templates" or otherwise, typically is communi-
`cated in digital format following standard communication
`and transfer protocols, such as TCP/IP, Hfrp, HTTPS, FTP,
`and the like, or IP or non-IP wireless communication proto-
`45 cols.
`FIG. 1 illustrates a simplified grid computing network or
`system 100 that is adapted according to one embodiment of
`the invention for effectively for managing resources in a grid
`computing environment. The system 100 may take a variety
`50 of forms to practice the invention and generally, may be
`arrangement of computing and/or electronic devices that are
`communicatively linked by a wired or wireless communica(cid:173)
`tions network 120 ( and network 160, which may be the same
`network such as the Internet as network 120 or a separate
`55 network such as a LAN, WAN, or the like).
`As shown, the system 100 includes a user system or user
`space 104 with a number of user devices 110 linked to a grid
`host system 130 via the communications network 120. The
`user devices 110 may be nearly any computer or electronic
`60 device capable of interfacing with a network 120, such as the
`Internet. As shown, each user device 110 includes a user
`program 112 configured for generating grid compute requests
`and transmitting such requests to the grid host system 130
`over the network 120. The user device 110 may also or alter-
`65 natively be configured to generate and/or to submit a small
`program(s) such as the illustrated grid packet(s) to the grid
`host system 130 for processing (e.g., initially shown as
`
`FIG. 1 illustrates a simplified grid computing system or
`network, adapted for managing access and use of grid
`resources according to an embodiment of the present inven(cid:173)
`tion;
`FIG. 2 illustrates in block diagram form a grid computing
`system (such as may be embodied in the system of FIG. 1)
`illustrating requesting grid resources or grid computing from 20
`a number of grid engines with a user program ( such as the user
`programs of FIG. 1);
`FIG. 3 illustrates a grid computing system similar to the
`system ofFIG. 2 and further including a firewall and/or HTTP
`proxy between the user program and the grid engines (and, 25
`therefore, grid resources or services);
`FIG. 4 shows another grid computing embodiment of the
`invention similar to the system of FIG. 3 and further including
`grid switches controlling access to grid engines (and their
`grid resources);
`FIG. 5 illustrates yet another grid computing system of the
`invention similar to the system of FIG. 4 but further includes
`a grid end point for receiving/storing output streams or grid
`packets from the grid resources ( e.g., client programs or the
`like);
`FIG. 6 illustrates another embodiment of a grid computing
`system according to the present invention that is shown to
`include "mini" grid engines to provide further access to
`resources in a public domain of a grid; and
`FIG. 7 illustrates still another embodiment of a grid com- 40
`puting system of the invention that more fully illustrates data
`flow between a user's network and a grid farm or network
`during operation of an exemplary grid computing system.
`
`DETAILED DESCRIPTION OF THE PREFERRED
`EMBODIMENTS
`
`In brief, the present invention is directed to a method of
`managing or operating a grid computing environment and
`associated grid computing systems that utilizes a grid engine
`or GridServlet configured to launch client programs or other
`resources of a grid.
`In one embodiment, the grid engine acts to process grid
`compute requests that are generated by a user program and
`transmitted over a communications network, such as the
`Internet. The grid compute requests constructed by the user
`program in one embodiment are a Uniform Resource Locator
`(URL) that includes a host name of a server hosting the grid
`engine, a path to the grid engine, a name of a client program
`to run or grid resource to access, a URL path to the client
`program along with any other information or parameters
`needed by the client program (such as the location ofa data set
`to process).
`For example, the method and system of the invention may
`build on web server technology to provide the grid engine. In
`a Java-based implementation, the ability to serve servlets is
`added to the web server to provide the web server the ability
`
`Netflix, Inc. - Ex. 1011, Page 000011
`
`

`

`US 8,499,023 Bl
`
`10
`
`5
`unprocessed grid packets 137 in memory 136 of grid switch
`134). Typically, the results or output from the grid compute
`request are transmitted to the user device 110, such as in an
`OutputStream in a Java-based embodiment.
`In other cases, though, the results may be stored in the grid 5
`host system 130, such as output streams 138 or processed grid
`packets 140 in memory 136 of a grid switch 134 as shown or
`in separate memory of host system 130 (not shown), and such
`storage may be performed until the calling program 112
`retrieves the output or results 138, 140 or in some embodi-
`ments, the results 138, 140 are later transferred to the user
`device 110 (such as based on a polling result indicating the
`user device 110 is able to receive the data over the network
`120). In yet other cases, a receiving system or grid end point
`device 190 is provided on the network 120 in user space 104
`and includes memory 192 to allow the system 190 to act as a
`repository for data output or output grid packets 196 from
`client programs or grid resources 166, 176. In other cases, the
`user program 112 may designate a grid end point to receive
`the output 196 and such end point may be another user pro(cid:173)
`gram 112 on the network 120, a program or servlet provided
`for temporarily storing output 196 for later retrieval by the
`calling user program 112, or the like. As shown, one or more
`firewalls and/or proxies (such as an HTTP proxy or the like)
`132 may be provided on the user device side of the network
`120 to control access to and from the network 120.
`As shown, the grid host system 130 may include one or
`more grid switches 134 in communication with the network
`120 to receive grid compute requests from user program 112
`after the requests are passed through the firewall/proxy 132. 30
`The grid switch 134 processes the grid compute requests to
`determine which web server 144, 152 to route the request, and
`such switching may be performed based on the request con(cid:173)
`tents, based on a DNS round robin process, or other switching
`methodology. Generally, DNS round robin functionality is
`used for load balancing and fault tolerance between the user
`space and the grid switches. Users may reference a grid
`switch 134 (e.g., grid.companyname.com) which may have
`several IP addresses and the IP address returned rotates as
`shown in the following example (which shows two requests
`and shows addresses rotating between requests) through
`available addresses each time the grid switch 134 hostname is
`resolved to an IP address.
`ultra! :/home/lyle $ nslookup www.cnn.com
`Server: ns6.attbi.com
`Address: 63.240.76.4
`Non-Authoritative answer:
`Name: cnn.com
`Addresses: 64.236.24.28, 64.236.16.20,
`64.236.16.84,
`64.236.16.116,
`64.236.24.12, 64.236.24.20
`Aliases: www.cnn.com
`ultra! :/home/lyle $ nslookup www.cnn.com
`Server: ns6.attbi.com
`Address: 63.240.76.4
`Non-authoritative answer:
`Name: cnn.com
`Addresses: 64.236.16.84, 64.236.16.116, 64.236.24.4,
`64.236.24.12,
`64.236.24.20,
`64.236.24.28,
`64.236.16.20, 64.236.16.52
`Each web server 144, 152 is configured to run or act as a
`grid engine (or GridServlet) 146, 154 (whose functions are
`explained in detail below). The grid engine 146, 154 acts in
`some cases to load and run client programs 148, 156 in
`response to grid compute requests routed to them by the grid
`switch 134. The grid engine 146, 154 may also load and/or
`generate program data sets 150, 158 which are processed or
`
`6
`operated on by the running client programs 148, 156. The grid
`engines 146,154 act to control access to grid resources and in
`this regard, are linked to client systems 164, 17 4 in user space
`104 via network 120.
`Each client system 164, 17 4 hosts or makes available one
`or more client program 166 and/or grid resource 176. These
`grid-available client programs 166 and grid resources 176 are
`called or requested by the user programs 112 via grid compute
`requests transmitted to the grid engines 146, 154. As part of
`the grid compute requests the user program 112 can indicate
`a data set or sets that should be utilized by or processed by the
`requested client program or resource 166, 176, and exemplary
`data sets 170, 182 are shown stored in memory 168, 178 on
`client systems 164,174. Of course, the data sets 170,182 may
`15 be provided on nearly any device accessible in the grid com(cid:173)
`puting system 100 and are not required to be provided by
`client systems 164, 17 4. Further, user devices 110, receiving
`system 190, and client systems 164, 174 may be provided in
`separate systems/devices as shown or may be combined into
`20 one, two, or three systems.
`Building on this general explanation of the components of
`an exemplary grid computing system 100, it may now be
`useful to more fully describe several of the more significant
`features of the system 100 to further explain how these fea-
`25 tures provide a lightweight grid computing environment. To
`simplify the description, the following detailed descriptions
`of the features are provided in a Java-based example but,
`again, the concepts described can readily be used with other
`programming languages.
`Regarding first the client programs 166 of the system 100,
`a progranimer or other entity wishing to utilize the grid 100
`writes a grid client program 166 in Java that extends the basic
`capability of an HttpServlet, as will be readily understood for
`a skilled Java progranimer. The programmer then implements
`35 all their grid client software as part of this program 166. As
`discussed above, data such as data sets 170, 182 for the grid
`client program 166 to process is input via HttpServlet mecha(cid:173)
`nisms with a grid compute request from the user program 112
`taking the form in one embodiment of a URL request string
`40 that started the HttpServlet grid client 166. Data to be
`returned to the main calling program 112 is returned via an
`OutputStream 138 from this program 166 (or running client
`program 148, 156) and a corresponding InputStream from the
`calling program 112. An alternative approach is for the user
`45 program 112 to extend and implement a GridPacket Class
`where the user's code is defined inside the extending Class
`and that Class is serialized as a Java object 116 and submitted
`for processing (e.g., unprocessed grid packets 137) by the
`user program 112 to the grid engine 146, 152 and then,
`returned 140 or 196 to the user program 112 or endpoint 190
`when processing is completed. The client programs 116, 176
`are made available to the grid engine 146, 152 via the network
`120 in the grid computing system 100.
`With the grid client programs 166 available on the grid 100,
`55 a user program or controlling program 112 can be written in
`Java and provided on a user device 110 linked to the grid host
`system 130 via network 120. The user program 112 is adapted
`to be able to initiate the grid client programs 166, 176 via or
`on any web server 144, 154 in which a grid engine 146, 156 is
`60 installed (assuming the user program 112 has access to the
`domain 186, 188 in which the grid engine 146, 156 resides as
`is explained below). During operation of the grid computing
`system 100, the user program 112 launches a grid client
`program 166, 176 by constructing a grid compute request. In
`65 one embodiment, the grid compute request is a URL which
`includes the name of the host 130 for the web server 144, 154,
`the path to the grid engine 146, 154, the name of the Java or
`
`64.236.16.52,
`64.236.24.4, 50
`
`Netflix, Inc. - Ex. 1011, Page 000012
`
`

`

`US 8,499,023 Bl
`
`7
`client program 166, 176 to run, the URL path to the Java or
`client program 166, 176 to run, and any other information or
`parameters that the grid client program 166, 176 needs such
`as the location of any data set 170, 182 to process. The
`following is an example of such a grid compute request:
`http://GridHost/
`GridServlet?class= TestRun&classpath=http :/ /MainHost/
`Classes/ &data=filel .dat
`In this example request, the "GridHost" parameter is the
`name of the system 130 that contains the web server 144 or
`152 that is or runs one of the grid engines 146, 154. The
`"/GridServlet" parameter is the path to the GridServlet or grid
`engine 146, 154 that enables the web server 144 or 152 to
`in the system 100. The 15
`function as a grid server
`"class=TestRun" portion or parameter tells the GridServlet or
`grid engine 146, 154 the location or place to load the TestRun
`Java program (class) or client program 166,176 is at the URL
`"http://MainHost/Classes." This location is also the default
`location to look for any other files that are referenced but do
`not have an explicit path defined to them such as "data(cid:173)
`file.dat" which is a parameter defined for the "TestRun" Serv-
`let or client program 166, 176 to load the file "file.dat" as a
`dataset 170, 182 to process. Once the URL or grid compute
`request is constructed in the user program 112, it can be
`opened for reading which will cause execution of the client
`program 148, 156 to begin on the "GridHost" 130 in the above
`example and the results would be provided to the user pro(cid:173)
`gram 112 via an InputStream from the opened URL.
`The grid engine 146, 154 and grid client programs 166, 176
`may also be written to provide real time interactive grid
`computing in the system 100 by adapting the client programs
`166,176 to receive their data set to process as aninputStream
`and to provide the results via an OutputStream 138. The grid
`engines 146, 154 in this example open as many client pro(cid:173)
`grams 166, 176 as necessary and when a compute request to
`process a data set 170, 182 is received from a user program
`112, the grid engine 146, 1

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket