US20080133693A1
2008-06-05
12/015,693
2008-01-17
A cluster of data caching servers that provide UseNet service to customers. The cluster of data caching servers cache articles and data requested by customers after retrieving the articles and data from a backend server/server farm. The cluster of data caching servers are adapted to share their cache memories with the other clustered servers in the cluster such that, if an article is requested by a client and the article has already been stored in one of the clustered server's cache memories, there is no requirement to retrieve all the requested article from the backend server.
Get notified when new applications in this technology area are published.
H04L67/288 » CPC main
Network arrangements or protocols for supporting network services or applications; Architectures; Arrangements Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
G06F16/9574 » CPC further
Information retrieval; Database structures therefor; File system structures therefor; Details of database functions independent of the retrieved data types; Retrieval from the web; Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
G06F15/167 IPC
Digital computers in general ; Data processing equipment in general; Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs; Interprocessor communication using a common memory, e.g. mailbox
This application for patent claims the benefit of priority from, and hereby incorporates by reference the entire disclosure of, co-pending U.S. Provisional Application for patent Ser. No. 60/414,204, filed Sep. 26, 2002.
1. Technical Field of the Invention
The present invention relates to Usenet servers, and more specifically, the present invention relates to the storage and retrieval of articles in a UseNet system.
2. Description of Related Art
UseNet server systems provide news services to clients. Conventionally, UseNet backend servers have been located remotely from the service providers that provide news services requested by clients. Thus, due to the remote location of the Usenet backend servers, news services have traditionally been slow and require a large amount of bandwidth between the UseNet service provider and the UseNet backend servers. This set up is both expensive and inefficient. Thus, what is needed is a UseNet server capable of providing news services at an increased speed with reduced costs.
An embodiment of the present invention provides a UseNet server system that operates as a pass-through caching Network News Transfer Protocol (NNTP) front-end system. No data or metadata need pass through the UseNet server system except as a result of a client request. In response to client requests, the system will first check servers in a local cluster of servers to determine if the requested data is available. If the requested data is available on a server in the local cluster of servers, then the UseNet system will connect to the server and retrieve the requested data. Otherwise, the UseNet system will determine which of a given number of unique backend server farms to connect to process the request in order to retrieve the requested data. When the requested data is passing from the backend server to the client, the UseNet system may cache the data and meta data within the local cluster of servers at the same time.
In certain embodiments, on a given host, any backend or cluster server connections established as a result of a request for data are maintained and reused by other processes within the local server, as they are needed. Depending on the configuration, an exemplary UseNet system can provide a different subset of groups and retention dates based on the source IP of the client and on other authentication information provided by the client.
In further embodiments, the authentication, authorization, and accounting are handled by a Secure Sockets Layer (SSL) encrypted Transmission Control Protocol (TCP) session back to an authentication server. An authentication server is a separate server that handles authentication processes related to the UseNet services. Cached articles can be stored in a compressed format in the local cluster servers. The cached articles can also remain in a compressed format when transferred between two servers. An exemplary UseNet server system can transparently handle most failures of the backend/cluster servers. In addition, the use of raw (non-mirrored) disks is possible through failure detection and mitigation of further use by the UseNet server system. Storage of data on the raw disks is done by using time-stamped buckets to provide needed retention and overwriting of cached articles based on the age of the data. Recycling of a previously used bucket into a new time frame does not wipe or erase the existing data until it is physically overwritten with new data.
In still further embodiments, a UseNet server system can be run in such a fashion that substantially none of the UseNet server software is stored on the server hardware. The software itself can be retrieved via a secure SSL connection using a Challenge Handshake Authentication Protocol (CHAP) based authentication technique to ensure that only authorized servers or systems may retrieve the software.
Embodiments of the exemplary clustered local servers allow the aggregation of multiple NNTP servers. The clustering of local servers enhances scalability because each clustered server is substantially the same operationally. In addition, connection, caching, and passing, of articles between the clustered UseNet servers reduce the connect/authenticate load on the backend servers. Through over-the-network compression between server clusters (backend server farms and clustered servers), the system can conserve additional network bandwidth above mere caching. Further, since the articles are already cached in the clustered local UseNet servers in a compressed format, there is no CPU time spent on decompressing from the cluster system and further no CPU time spent on recompressing on the local system as it caches the article.
Embodiments may have an advantage of only reading from the master servers on-demand, such that data is transferred from a backend server farm to a remote cluster of UseNet servers only if the data was requested by a client connected to the remote cluster of UseNet servers. The caching, clustering, and on-demand nature of exemplary software of the present invention enables a provision of service to a remote cluster of UseNet servers located at a client's location with assurances that the traffic the client will receive is less than or equal to a full feed.
The disclosed invention will be described with reference to the accompanying drawings, which show important sample embodiments of the invention and which are incorporated in the specification hereof by reference, wherein:
FIG. 1 is a block diagram of an exemplary UseNet server system.
FIG. 2 is diagram depicting an exemplary UseNet geographic configuration.
FIG. 3 is a flowchart illustrating exemplary steps for initializing the system of the present invention; and
FIG. 4 is a flowchart illustrating exemplary steps for enabling the clustering and caching process provided by the system of the present invention.
The numerous innovative teachings of the present application will be described with particular reference to the exemplary embodiments. However, it should be understood that these embodiments provide only a few examples of the many advantageous uses of the innovative teachings herein. In general, statements made in the specification of the present application do not necessarily delimit any of the various claimed inventions. Moreover, some statements may apply to some inventive features, but not to others.
Referring to FIG. 1, an exemplary UseNet server system 10 is shown in a block diagram. Customers or Clients 12A-12E are connected to the UseNet server system 10 via standard NNTP connections. The customers 12 can be a few to any number of customers who are connected to the Internet, an Internet Service Provider (ISP), or by another means for connecting to a UseNet service.
A local cluster of servers (Gigacluster) 16 is established having a plurality of local servers (GC servers) 18A-18n. Each GC server 18 can be a commodity server or substantially a standard server having memory, processor(s), and hard drives. It is understood that one or more of the GC servers 18A-n may have additional components or upgraded devices when compared with the other GC servers. For example, the different GC servers 18A-n each may different speed microprocessors, larger or faster hard drives, upgraded electronics, etc when compared to each other. Although FIG. 1 only depicts three GC servers 18A-n there can be substantially any number of GC servers 18A-n operating within the Gigacluster 16. Each GC server 18 is connected or in electrical or optical communication 19 with each one of the other GC servers 18A-n.
The Gigacluster 16 is connected to or is adapted to be in electrical or optical communication with various backend servers 22A-n. In general a Gigacluster 16 is connected via a TCP/IP connection(s) 24 to the backend servers 22A-n. Each backend server 22 may each be a plurality of servers such that backend server 22A represents two or more servers (i.e., a server farm). The backend servers 22A-n may be located in locations that are distant or remote from the other backend servers 22A-n. Also each backend server may be located distant or remote from the Gigacluster 16. For example, backend server 22A may be located in Austin, Tex., backend server 22B may be located in Baltimore, Md., and backend server 22C may be located substantially in London, England. Other backend servers or backend server farms 22A-N may be located anywhere in the world.
There may also be additional Gigaclusters 16Ⲡthat are connected to one or more of the backend servers 22A-n. The additional Gigaclusters 16Ⲡmay be remotely located from both the backend servers 22A-n and the Gigacluster 16. A backend server may also be a Gigacluster.
The backend servers 22A-n receive and store articles for many UseNet user groups. The size of the data storage space required in each of the backend servers 22A-n depends on the amount of UseNet article retention that is desired. At the present time, a single day's worth (24 hours) of UseNet articles fills, on the average, approximately 750 to 1,000 Gigabytes of storage space on the backend servers 22A-n. In order to increase the retention to more than one day's worth of UseNet article postings, the size of the backend storage space on the backend servers 22A-n must increase according to the number of days or the amount of time retention is desired. Furthermore, embodiments of the present invention allow each UseNet client to specify the amount of retention time or the amount of retention space desired for their UseNet groups. For example, some UseNet user groups or Use Net clients may want to have a month's worth of retention for their specific UseNet user group(s), others may want more or less retention time or storage space.
As the activity of the UseNet increases so does the number of UseNet articles and postings. To date activity on the UseNet has increased steadily since the UseNet's beginnings. It is expected that the storage requirements on the backend servers 22A-n will increase from the present 750 Gigabytes per day to more than 1000 Gigabytes per day for each backend server (farm) over the next year. The backend servers 22A-n will require continuous storage upgrades in order to provide enough article retention time that satisfies customers, clients, and UseNet users. The output bandwidth from the backend server 22A-n necessary on the TCP/IP connections 24 between the Gigacluster 16 and backend servers 22A-n becomes insufficient to handle the necessary data rate of more than 200 to 300 Mbps. Thus, as the amount of data storage is increased on at least one of the backend servers 22A-n, then the amount of data that needs to be transferred between the backend servers 22A-n and a Gigacluster 16 also increases due to the growing needs of users and clients. As a result, the data connection between each of the backend servers 22A-n and the Gigacluster becomes a limiting factor. All of the necessary data cannot be transferred over the TCP/IP connection 22 resulting in data retrieval delays. The end result on the UseNet is delays to the client and user. The present day backend servers cannot move the amount of data requested by today's UseNet users in a timely fashion. It is noted that each backend server (farm) 22A-n generally stores substantially the same information as the other backend servers or the backend servers are divided up into several server farms each containing a subset of the same information.
Exemplary embodiments of the present UseNet server system use the servers (GC servers 18A-n) in the Gigacluster 16 to store or cache articles that were recently requested by a customer 12 and that were retrieved from a backend server 22. By retrieving articles from one or more backend servers 22A-22n, the Gigacluster 16 and its associated GC servers 18A-n transparently aggregate multiple backend servers 22A-n, wherein each backend server is responsible for a distinct subset of UseNet groups.
Furthermore, by caching data retrieved from the back end servers and having the cached data available to customers upon request, the GC servers 18A-n reduce the load on the backend servers 22A-n and the TCP/IP buses' 24 bandwidth between the backend servers 22A-n and the Gigacluster 16.
Each GC server 18 is in communication 19 with the other GC servers 18A-n within the Gigacluster 16. The GC server 18A-n may communicate with each other using one or more various or a combination of different technologies including, but not limited to hard-wired technologies, network technologies, wireless technologies, optical technologies, satellite technologies, and other types of networking technologies and protocols. The GC servers 18A-n may utilize an ethernet 19 or other form of electronic communication within their cluster 16. The electronic communication 19 between the GC servers 18A-n also allows the GC server 18A-n, when the appropriate backend server is contacted via the TCP/IP connection 24, to retrieve the article or data from a backend server 22.
When a connection to a backend server 22A or to another GC server 18B connection is made by a GC server 18A, the GC server 18A retains and maintains the connection so it can be reused as needed in the future for additional movement of stored articles or data to a customer 12. Retaining and maintaining connections between the various servers (backend and GC server 18A-n) saves time and conserves the various CPU's resources necessary for creating and breaking down any given data communication connection between servers.
New UseNet articles or new data tends to be read or downloaded by customers much more often than older UseNet articles or data. By storing or caching recently retrieved articles or data in the GC server 18A-n when they are being retrieved from the backend, then, in general, newer or more popular articles are being stored on the GC server 18A-n. The result of storing the retrieved articles in the GC server 18A-n is that retrieval of the more popular or frequently read articles and data do not use the bandwidth of TCP/IP connections 24 or the backend servers 22A-n after the frequently requested article or data has been retrieved from the backend once. The technique decreases the time required to retrieve popular or frequently requested articles. This technique of caching previously retrieved articles on the GC server 18A-n also decreases and/or completely removes the delay seen by the customer when retrieving data from UseNets having inadequate TCP/IP bandwidth between the UseNet Servers and their associated backend servers.
Due to the limitations of the backend servers 22A-n being able to push data to the customers via the TCP/IP connections 24, the GC server 18A-n with the cached or stored articles increase the throughput. The concern of any UseNet system is how much data in a given amount of time can be provided to the customers.
A backend server 22A-n and a GC server 18 are somewhat different types of servers. A backend server 22A, for example, may be very heavy in storage space and be able to move about 200 Megabits per second over a TCP/IP connection 24 to the Gigacluster 16. The storage space of a backend server is unusually expensive because of the storage capacity and the high quality of the drives. The large storage capacity and high quality are required due to the amount of usage the drives endure. A backend server 22A or farm of servers 22A may have anywhere from twelve terabytes to at least 40 terabytes of disk space. In a present day backend server farm 22 requires about 750 to 1000 Gigabytes of disk space (storage) to store a single day's work of UseNet data. It is understood that the storage space on the servers may be hard drive, disk, optical, holographic, tape, magnetic, bubble, solid state or any other applicable storage media. As UseNet usage continues to grow additional hard drives must be added to the backend server or server farm just to maintain the same amount of article retention time. As a result, backend servers tend to be one of the most expensive types of servers. Backend servers are heavyweights when it comes to storage capacity, but are lightweights when it comes to being able to move all their stored data around. One can say that the ratio of data capacity to the amount of data that can be moved per second is a large number. For the smaller example backend server discussed above, the ratio is 4000 Gigabytes to 200 Megabits/second. Thus, there is a 20,000:1 relationship of storage of customer traffic. This ratio will increase with the size of the backend server 22 or server farm 22.
On the other hand, each GC server 18 can, in general, be a commodity server. In the present day, a commodity server or standard general use server is much less expensive than a storage-capacity-heavy backend server. In the present day, a commodity server can move data at about 200 Mbps (similar to a backend server). A present day commodity server has between about one half of a terabyte to two and a half terabytes of disk memory. Thus the ratio of data capacity to the amount of data that can be moved per second is a smaller and more balanced ratio of 2.5 terabytes to 200 Mbps (12500:1) than the ratio of an exemplary backend server. This is a much lower ratio than the backend server's ratio of 20,000:1. Thus, a GC server 18 is more capable of quickly finding data in its memory and moving all or a large percentage of the data stored in memory over time than a backend server 22.
An exemplary Gigacluster 16 is formed such that each GC server 18 has about 2.5 terabytes of storage and each GC server 18 offers about 200 Mbps of data throughput to the many customers using the UseNet. If there are, for example, 20 GC servers 18A-n in the Gigacluster 16, then collectively there is 50 terabytes of storage for storing cached articles and data. Furthermore, the GC server 18A-n collectively have the capacity of moving 200 Mbps times 20 servers equaling about 4000 Mbps (4 Gbps) of data to the customers.
Since the GC server 18 is caching or storing articles or data not found in any of the other GC server 18A-n within the Gigacluster 16, the new or most popular articles and data tend to be stored in the GC server 18A-n after being retrieved from the backend. Thus, the GC server 18A-n can provide, when requested, the popular or new articles to the customers 12 without querying the backend servers 22A-n. This exemplary technique of clustering the GC server 18A-n frees up bandwidth between the Gigacluster 16 and the backend servers 22A-n.
To further increase the efficiency of an exemplary UseNet system, the articles or data can optionally be transmitted in a compressed format when transferred between servers. The articles stored in the GC servers' cache can be stored in the same compressed format as they were transferred in. Sending and storing articles in a compressed format saves transmit and receive time, decreases the amount of storage space required for each article, provides a savings in CPU processing time in both the transmitting and receiving server, and uses less bandwidth of the connection between servers.
Another important aspect of an embodiment of the present invention is how retention of stored articles and data is maintained by the GC server 18A-n as well as the backend servers 22A-n. Exemplary embodiments may provide different views of the UseNet to different customers depending on the UseNet service required by the client or customer. For example, an exemplary UseNet system is able to provide a view of or access to only preselected UseNet group's articles or data. That is, if there are five thousand separate UseNet groups, a customer or client may only have access to 100 of them.
Furthermore, an exemplary UseNet system may provide different amounts of retention access to different clients or customers. One customer may have access to the full article and data retention maintained by the exemplary UseNet system. Another customer may have access to a lesser amount of article and data retention.
An exemplary UseNet system offers the design and implementation of multiple redundant backend servers 22A-n and networks. Thus, the failure of any single backend server is contained and transparently handled by a smooth failover of connectivity within a backend selection code mechanism.
An exemplary UseNet system does not necessarily need to operate as a primary news-server and further does not need to take a constant feed of articles from any source. Instead, the UseNet system may be located at a client location. When deployed in a client's location, in a client's network facility the GC server 18A-n may be deployed as a secondary cache which connect into the core systems through the in-house primary cache systems located in the primary network facility.
An exemplary UseNet system uses an article and data storage mechanism, in the form of software, on each GC server 18 and each backend server that is commonly referred to as Just a Bunch of Disks (JBOD). JBOD implies that each article cache within each GC server 18 does not have a redundancy copy of the cached articles. However, because of the ability of any GC server 18 to access an article from another GC server 18 in the Gigacluster 16 via the ethernet 19 or access the backend servers 22A-n for an article via the TCP/IP connection 24, then if a storage (i.e., hard drive, solid state memory) failure occurred in one GC server 18A, then the GC server 18A can continue to function by contacting its Gigacluster peers (the other GC server 18A-n in the Gigacluster 16) or the backend servers 22A-n to obtain articles requested by a customer 12.
Each memory device or hard drive for storing articles and data are logically divided into smaller sized data storage units called spools. The spools are further assigned (on a dynamic basis) to store articles and data dated within a constant time interval; when the spools are assigned a time interval, then the spools are said to be assigned to that time interval's âbucketâ.
Once a spool is assigned to a specific time-interval's bucket, the spool will only allow articles that fall within the specific time-interval to be stored in the spool's drive space.
If an article arrives for which there are no spools to store the article (the time interval's bucket is empty or all spools in the bucket are full) then the server containing the spool will attempt to recycle a spool from the oldest bucket in the same server.
When a spool is recycled from one time-interval bucket to a newer time-interval bucket the articles stored in that spool for the old time-interval bucket are not lost until they are physically overwritten by new incoming articles.
Hard drives, by their very nature, are commonly failed hardware components. Further, each GC server 18 employed provides no software or hardware mirroring that protects the articles cached in a GC server 18. To prevent a failed hard drive from affecting the performance of an exemplary UseNet system, each GC server 18 continually monitors for read/write failures through normal operations on each drive. When an allowed threshold of failures for a drive has been reached, the GC server 18 or a master server will tag, in a metadata file, the fact that the drive has failed and all further access to that drive will immediately cease. The drive is treated as if it never existed.
When a hard drive is replaced, a detection method is employed by which the specific device can be re-enabled.
Each GC server 18 employs the use of a number of metadata pieces of information that would not allow proper system functionality if that data were to be lost by a sudden loss of a hard drive. For this metadata, each GC server 18 employs the use of software mirroring to protect from the failure of the GC server's hard drives.
Remotely deployed Gigaclusters 16Ⲡand/or GC server 18A-n utilize a boot floppy at the location of the system's bootable kernel. There is little or no software stored on the actual deployed systems. The system software is specifically not located on any floppy or hard drive in any deployed GC server 18. The software is obtained via an SSL connection back to a distribution server where the remote system is authenticated and authorized to retrieve the software. The software is then stored in a memory-only file system in an effort to prevent the theft of the software itself.
The configuration file for the system is also retrieved on a system-by-system basis via a remote SSL based distribution system. The configuration file is generated on the fly and signed for authenticity using a DSA signature algorithm.
FIG. 2 provides a diagram depicting an exemplary UseNet geographical configuration. The exemplary use of cached data and articles within spools on each GC server 18 with a Gigacluster 16 provides economic savings to the UseNet system provider. FIG. 2 depicts a first Gigacluster 20 located in a first geographical location Texas1. A first backend server/server farm 22 is located in substantially the same geographical location as first Gigacluster 20. A second Gigacluster 26 is located in a second geographical location called Texas2. A third Gigacluster 32 is located in a third geographical location called New York. As such, the first, second and third Gigacluster 20, 26 and 32 are distant from each other. Also, the second and third Gigaclusters 26 and 32 are geographically distant from the first backend server/server farm 22.
A TCP/IP connection is adapted to connect the plurality of Gigaclusters 20, 26, 32 to each other and to the first backend server 22 via, for example, the internet or a worldwide computer system (not specifically shown). Each of the three exemplary Gigaclusters is part of a UseNet provider's UseNet system. Gigacluster 20 uses the first backend server 22 for retrieving articles and data not located in the individual Gigacluster 20. Gigacluster 26 uses the Gigacluster 20 for retrieving articles and data not located in the Gigacluster 26. Gigacluster 32 uses the Gigacluster 26 for retrieving articles and data not located in the Gigacluster 32.
Assuming that each Gigacluster 20,26, 32 has been operating in substantially a steady state for a period of time, then the GC server 18A-n within each of the separate Gigaclusters will have cached the most popular and most recent articles and data.
At present, the TCP/IP 24 connection rate between each of the Gigaclusters and the backend server 22 is about 120 Mbps (Megabits per second). If the Gigaclusters did not cache the most requested articles at each geographical location, then they would have to share the 120 Mbps TCP/IP connection to receive each and every article requested by the customers.
If each Gigacluster can push about 2 Gbps (Gigabits per second) to each Gigacluster's associated clients and customers, then the TCP/IP connection could never keep up with the needs of each Gigacluster. Furthermore, a long haul TCP/IP connection becomes costly to the UseNet provider when the TCP/IP bandwidth is used to its maximum extent.
In the exemplary embodiment, and via experimentation on the part of the inventors, it was discovered that the use of caching in the GC server 18A-n of each Gigacluster of a UseNet system greatly decreased the need (and the cost) of using a TCP/IP connection to retrieve client requested articles from a backend server. In fact, in greater than 20% of the requests by customers, the GC servers 18A-n, of a given Gigacluster, did not have to use the TCP/IP connection to retrieve an article or data from the backend servers 22A-n. Instead, one or more of the GC servers 18A-n within the given Gigacluster had the requested article or data in cache and was able to provide it to the requesting GC server 18, which in turn provided the requested article or data to the customer.
In exemplary embodiments of the present invention and as a result of experimental operations of an embodiment of the present invention, the percentage of requested articles and data found in cache on the GC server 18A-n in a Gigacluster operating in a steady state ranged from at least 20% to about 90%. In other words, the cache storage of the clustered GC server 18A-n within a given Gigacluster have a cache hit ratio of about 20 to 90 percent when operating in steady state. A cache hit ratio can be defined as the amount of articles and data that can be provided to the customers of a Gigacluster via the GC server 18A-n compared to the amount of articles and data that can be retrieved from the Gigacluster. This excellent cache hit ratio greatly decreases the costs of using a TCP/IP connection to a backend server farm, increases the efficiency of the UseNets system, and decreases the wait time UseNet customers experience during peak operating hours of a UseNet.
Exemplary embodiments of the present invention have provided both unexpected results and have answered a long need for a solution to keeping UseNet system costs under control without diminished service to customers and clients in the form of delays to their UseNet article requests. Furthermore, exemplary embodiments of the invention are enjoying immediate commercial success in that the UseNet service that has recently begun employing one or more embodiments of the present invention has become more profitable and has found their UseNet service in higher demand by customers because of the new level of service offered at a competitive price.
Referring now to FIG. 3, to initialize an exemplary UseNet system, at step 100, configuration files for each GC server 18 are read and validated for correctness and authenticity using DSA signature algorithm. At step 110, various subsystems are initialized. For example, if a GC server 18 is configured to use SSL for authentication, an SSL key can be loaded and certified into memory, and SSL contexts can be initialized. If any part of the initialization fails, an error can be logged and the process terminates. As another example, JBOD (cyclical) spool metadata can be initialized if cyclical spools are configured in the system. To initialize JBOD spool metadata, each GC server 18 can run a test to determine if the cyclic spool shared memory metadata is already configured. If not, the metadata from the cyclic spools can be read into a shared memory segment, verifying each spool with a checksum. If the checksum fails, the spool can be initialized as a new spool. Further updates to the cyclic spool metadata can be written to both shared memory and disk. All reads of metadata are preferably from the shared memory segment, for speed purposes.
Thereafter, at step 120, the system can install signal handlers for various error conditions and termination requests. At step 130, the system can create listening sockets for NNRP services. Thereafter, at step 140, the Gigacluster can wait for and accept a new connection from the various listening sockets. At step 150, the new connection forks a new process (The Child). The Parent process waits for the termination of The Child, and then closes the newly accepted socket and restarts the socket accept loop at step 140. The Child Process forks (creating The Grandchild) and immediately exits. The Grandchild closes all listening socket descriptors, and at step 160, initializes the customer or client by initializing various settings for a generic, unauthenticated session and using the IP address from which the session was created to authenticate the customer or client. Thereafter, at step 170, the Grandchild executes software for handling the connection.
To authenticate the customer or client, the system compares the IP address of the customer or client to a list of âalways allowed chainersâ addresses, and upon match, sets a session cookie and session tag to both read âchainerâ, sets permissions to allow READING and indicates NO-IDLE-TIMEOUT during client command reading. If no username and password is provided, the system generates a connection authentication request with just the IP address of the customer or client. Otherwise, the authentication request includes the IP address of the customer or client, as well as the username and password provided by the customer or client. If the GC server 18 is not already connected to the centralized authentication server, the GC server 18 connects to the authentication server.
Next, the GC server 18 negotiates SSL parameters if the configuration indicates SSL requirements. On any error or failure to connect, the process terminates. If no errors occur, the GC server 18 sends a request to the authentication server and reads the response. If a GC server failure is detected in the transaction with the authentication server and the connection has not already been retried, the system disconnects from the authentication server and attempts to reconnect. If the second attempt fails, the process terminates. If authentication is not successful, the GC server 18 returns a message to the client indicating such. Otherwise, the GC server 18 records the returned cookie and tag along with the username and IP address of the session for future use in accounting procedures.
Referring now to FIG. 4, at step 170, to handle the connection, at step 200, the GC server 18 determines the allowed idle time when waiting for a command from the customer or client. At step 205, if the idle time expires before a command is read, the process terminates at step 210. If the idle time does not expire before receipt of a command, at step 215, the GC server 18 reads a single command from the customer or client socket. At step 220, if the command is invalid, at step 225, the system responds with â500 syntax error or unknown commandâ and restarts the connection handling process. At step 230, if the command requires authentication and, at step 235, the customer or client is considered unauthenticated, at step 240, the system responds with â480 authentication requiredâ and restarts the connection handling process.
At step 245, if the command requires that a Use group be selected and, at step 250, no group has been selected by the remote client, at step 255, the system responds with â412 no group selectedâ and restarts the connection handling process. At step 260, if the command requires permission and, at step 265, that permission is not granted to the customer or client, at step 270, the GC server 18 responds with an appropriate error and restarts the connection handling process.
Otherwise, at step 275, the GC server 18 records a snapshot of the total bytes transferred to-date during this session (âbytesâ). At step 280, using âGCâClient Dispatch Tableâ shown below, the system executes the specified logic depending upon which command has been specified by the customer or client, as shown in more detail below. After execution of the specified logic, at step 285, the system captures a new snapshot of the bytes transferred and logs the command executed, the number of bytes transferred for the command, and the calculated rate of transfer. This process is repeated for the duration of the session connection.
At the termination of the session, if there is no authentication cookie recorded for this customer or client connection, the process terminates. However, if the cookie is a âchainerâ, the GC server 18 zeroes out the counters for the session and terminates the process. If there is an authentication tag associated with the connection and there were some amount of bytes delivered to the customer or client, the GC server 18 determines whether a connection to the centralized authentication server is active. If so, the GC server 18 generates an accounting packet necessary to associate the used bandwidth to the account information for the client. If successful, the GC server 18 logs this information in a âreal-timeâ logfile indicating that the account was handled in real-time. Otherwise, the GC server 18 logs the information in a âpost-processedâ logfile for processing at a later point in time by external processes. Also, if the connection to the authentication server is active, the GC server 18 sends a disconnect message with the cookie, IP, user, and tag of the connection.
The following is an exemplary client dispatch table. Exemplary process flows for each command are shown in more detail below.
| GC - Client Dispatch Table |
| Command | Flow to Execute | |
| ARTICLE | GC - Client Command ARTICLE | |
| AUTHINFO | GC - Client Command AUTHINFO | |
| BODY | GC - Client Command BODY | |
| DATE | GC - Client Command DATE | |
| GROUP | GC - Client Command GROUP | |
| HEAD | GC - Client Command HEAD | |
| HELP | GC - Client Command HELP | |
| LAST | GC - Client Command LAST | |
| LIST | GC - Client Command LIST | |
| LISTGROUP | GC - Client Command LISTGROUP | |
| MODE | GC - Client Command MODE | |
| NEWGROUPS | GC - Client Command NEWGROUPS | |
| NEWNEWS | GC - Client Command NEWNEWS | |
| NEXT | GC - Client Command NEXT | |
| POST | GC - Client Command POST | |
| STAT | GC - Client Command STAT | |
| XHDR | GC - Client Command XHDR | |
| XOVER | GC - Client Command XOVER | |
| XPAT | GC - Client Command XPAT | |
| QUIT | GC - Client Command QUIT | |
GCâClient Initialization
GCâAuthentication System Initialization
GCâClient Authenticate
GCâAuth Fini
GCâTerminate Process
GCâClient Command DATE
GCâClient Command HELP
GCâClient Command MODE
GCâClient Command NEWNEWS
GCâClient Command XPAT
GCâClient Command QUIT
GCâClient Command AUTHINFO
GCâClient Command GROUP
GCâClient Command LAST
GCâClient Command NEXT
GCâClient Command STAT
GCâClient Command NEWGROUPS
GCâClient Command POST
GCâClient Command LISTGROUP
GCâClient Command LIST
GCâMulti-Server LIST ACTIVE
GCâRetrieve Cached List
GCâPost Header Filter
GCâChop Xover Method
GCâPump Xover Method
GCâSuck Xover Method
GCâClient Command Xover
GCâClient Command XHDR
GCâChop Article Method
GCâActual Chop Article
GCâClient Command ARTICLE
GCâClient Command BODY
GCâClient Command HEAD
GCâCluster Find Article
GCâFind Backend
GCâGet Cached Article
GCâCache Article
GCâArticle I/O Error
GCâGet Next Cyclical Spool
GCâCheck Cyclical Spool
GCâAdvance Cyclical Spool
GCâSoftware Start for âgc_clusterâ
GCâSoftware Start for âgc_cachesockdâ
As will be recognized by those skilled in the art, the innovative concepts described in the present application can be modified and varied over a wide range of applications. Accordingly, the scope of patented subject matter should not be limited to any of the specific exemplary teachings discussed, but is instead defined by the following claims.
1. A UseNet server system comprising:
a backend server for storing articles;
a first communication link connected to said backend server;
a cluster of servers, connected to said first communication link, wherein each server in said cluster of servers is adapted to be in communication with the other servers in said cluster of servers, and wherein at least one of said servers in said cluster of servers is adapted to store retrieved articles from said backend server when said articles are requested by a customer;
a second communication link adapted to provide article requests from at least a first customer to said cluster of servers and adapted to provide at least one of said retrieved articles to said at least one customer; and
said UseNet server system further adapted to retrieve stored articles from said at least one server in said cluster of servers when a first requested article has been previously requested by a second customer and is stored in said at least one server in said cluster of servers.
2. The UseNet server system of claim 1, wherein a second server of said cluster of servers is adapted to retrieve said first requested article from said at least one of said servers in said cluster of servers when said customer requested article has already been requested from said backend servers due to a previous customer request for said first requested article.
3. The UseNet server system of claim 1, wherein said retrieved articles stored in said at least one server in said cluster of servers are each stored for a period of time until more storage space is required.
4. The UseNet server system of claim 1, where said retrieved articles stored in said at least one server in said cluster of servers are stored in a memory device that is divided into smaller sized data storage units wherein each data storage unit is dynamically assigned a time interval such that only articles originally posted within said dynamically assigned time interval are stored in each said storage unit.
5. The UseNet server system of claim 1, wherein said customer requests for articles can be fulfilled by retrieving said requested articles from said at least one server in said cluster of servers for about 20 to 90 percent of said customer requests for articles.
6. The UseNet server system of claim 1, wherein said first communications link is a TCP/IP communication session.
7. The UseNet server system of claim 1, wherein said communications link uses a Network News Transfer Protocol (NNTP).
8. The UseNet server system of claim 1, wherein each said server in said cluster of servers is adapted to be in communication with the other servers in said cluster of servers via a network connection.
9. The UseNet server system of claim 8, wherein said network connection comprises at least one of an wired connection, a wireless connection, an optical connection, and a satellite connection or link.
10. The UseNet server system of claim 1, wherein the second communications link is a TCP/IP session.
11. The UseNet server system of claim 1, wherein the second communications link uses a Network News Transfer Protocol (NNTP).
12. The UseNet server system of claim 1, wherein said each server in said cluster of servers is a commodity server.
13. The UseNet server system of claim 1, wherein said backend server and said cluster of servers are geographically distant from each other.
14. An article or data storage and retrieval system comprising:
a plurality of servers forming a server cluster, each said server of said plurality of servers having storage space for storing articles and data;
a communication network allowing each one of said plurality of servers to communicate with each other;
a backend server comprising storage space for storing articles, said backend server being in communication with said server cluster via a first communication link;
a first server of said plurality of servers adapted to accept a request for a first article from a customer;
said first server, via said communication network, queries said plurality of servers for said first article;
if said first article is found in one of said plurality of servers storage space, said first article is provided to said first server for delivery to said customer; and
if said first article is not found in one of said plurality of server, said first server requests said first article from said backend server.
15. The system of claim 14, wherein said backend server provides said first article to said first server for delivery to said customer and wherein said first server stores said first article in said first server's storage space.
16. The system of claim 14, wherein said storage space of each one of said plurality of servers combined provides less article retention then said storage space of said backend server.
17. The system of claim 14, wherein when said first server queries said plurality of servers for said first article, said first article is found in one of said plurality of servers at least 20 percent of the time.
18. The system of claim 14, wherein said communication network comprises at least one of a wired connection, a wireless connection, an optical connection, and a satellite connection or link.
19. The system of claim 14, wherein said first communication link is a TCP/IP session.
20. The system of claim 14, wherein said backend server is geographically separated from said plurality of servers.
21. The system of claim 14, wherein each said memory space of each said server of said plurality of servers is logically divided in smaller sized storage units such that each said storage space is assigned a time interval for storing articles originally posted on a UseNet within said time interval.
22. The system of claim 21, wherein said backend server provides said first article to said first server for delivery to said customer and said first server stores said first article in a first storage space that is assigned a time interval that includes a date of said first article.
23. The system of claim 21, wherein said backend server provides said first article to said first server for delivery to said customer and wherein said first server attempts to store said first article in a first storage space such that, if there are only time interval storage spaces having time intervals newer than a date of said first article, then said first article is not stored in said first server.
24. The system of claim 21, wherein said backend server provides said first article to said first server for delivery to said customer and wherein said first server attempts to store said first article in a first storage space such that, if there are only time interval storage spaces having time intervals older than a date of said first article, then storage space having the oldest time interval is reassigned a time interval that includes said date of said first article and said first article is stored therein.
25. A method for providing news services comprising:
providing a local network cluster of news servers;
caching data and metadata related to news services with said news servers in said local network cluster;
receiving a request for news services form a client associated with said local network cluster;
determining whether said requested news services are available from said news servers in said local network cluster;
if so, retrieving said requested news services from said news servers in said local network cluster and providing said requested news services to said client directly from said local network cluster; and
if not, creating a session to one of at least one backend server(s) to retrieve said requested news services.
26. The method of claim 25, wherein said requested news services are retrieved from said one backend server in a compressed format.
27. The method of claim 25, further comprising:
storing said retrieved requested news service;
providing said retrieved requested news service to said client; and
storing said retrieved requested news service in at least one of said news servers.