Conventional electronic messaging systems route millions of e-mails per day from senders to recipients. The tasks associated with routing these millions of messages can be distributed among many discrete routing resources (e.g., hardware), such as message servers. As part of this electronic message routing process, the message servers of these electronic messaging systems perform routine checks on each of the many electronic messages to determine if they will modify, delete, archive, or otherwise treat each electronic message before delivery. These checks can include any number of processes, including scanning for malware (e.g., viruses, spyware, worms, and Trojan horses, among others), checking for spam, checking the contents of the message (e.g., keywords), and checking for specific senders or recipients, among others. Each of these process checks can include a number of distinct sub-processes. For example, a spam-checking process may need to apply multiple sub-processes, each of which check for spam in a different manner. Scanning for viruses can also include several processes, as can other checks not discussed in detail here. Although such servers are capable of processing at high speed, there are times when message delivery can be delayed because such servers become swamped with more messages to process than they can handle in a timely fashion at their present processing speed. This happens any time the rate of arrival exceeds the rate of departure for an extended period of time. This slowdown in processing can occur due to any number of different factors. Such slowdowns are problematic for users, who have become accustomed to relatively instantaneous delivery of electronic messaging in various forms, including e-mails, text messages, and the like.
To combat this typical problem, personnel manually monitor conventional electronic messaging systems and attempt to allocate messaging load to available hardware, such as messaging servers. If a particular message server is not functioning properly and cannot deliver messages, then the personnel can identify the problem and take the message server offline. This manual process is time consuming, as it requires that a person physically monitor the status of the message server and take it offline manually. Any messages in the queue at that server must then be manually rerouted to another message server for processing. This manual process is useful, but even if the time required to monitor, identify, and reroute messages is limited to hours, or even several minutes at minimum, these delays can prove to be problematic, particularly for the users whose message stream is interrupted.
Moreover, the act of taking a message server offline is disruptive to message delivery because it removes the capacity, however diminished, of the offline message server from the pool of message servers. Where a message server taken offline is able to function at partial capacity, for example, that partial capacity is a loss to the overall system. By removing this message server from the overall system, delivery is improved for the messages redistributed to other message servers. But the overall system now actually has less overall capacity. Moreover, removing, recovering, and re-adding the message server back to the system are operational steps that are costly and time consuming. As such, an intervention process that automatically ensured the delivery of messages while utilizing whatever usefulness is available in each message server, even those message servers functioning at partial capacity, would be useful.
In addition, often such messaging systems are laboring to maintain messaging flow because of large volumes of unwanted electronic messaging, or spam. Unwanted spam e-mail can account for over 95% of electronic mail traffic. Conventional systems treat all mail similarly, processing both unwanted mail and desirable mail in a first in, first out queue methodology. This methodology makes sense when all e-mail is desirable, as a user would prefer to receive e-mail in the order sent. But where each item of electronic messaging is not desirable, shifting any delivery delay to the undesirable electronic messaging, while maintaining more timely delivery of desirable electronic messaging, would be useful.
Unfortunately, such conventional electronic message delivery systems are unable to adequately maintain message delivery timeliness with such manual interventions and first in, first out queue methodologies.
The following simplified summary provides a basic overview of some aspects of the present technology. This summary is not an extensive overview. It is not intended to identify key or critical elements or to delineate the scope of this technology. This Summary is not intended to be used as an aid in determining the scope of the claimed subject matter. Its purpose is to present some simplified concepts related to the technology before the more detailed description presented below.
Accordingly, aspects of the invention automatically provide control of a message distribution process by monitoring the performance of a series of coordinated processes and by skipping those processes determined not to be processing properly. By skipping processes not processing properly, the message distribution process provides a way for maintaining messaging delivery timeliness. Aspects of the invention provide a way to automatically determine the performance of a message server and alter the flow of messages based upon the performance. By altering the flow of messages, message traffic is controlled and directed to well-performing message servers. Aspects of the invention provide for assigning addresses to a category and routing messages according to the categorization. By routing in this manner, messaging associated with categorized addresses is routed preferentially.
Corresponding reference characters indicate corresponding parts throughout the drawings.
Referring now to
Referring now to
The method 41 also comprises determining, at 45, that at least one of the monitored 43 series of coordinated processes is not processing properly. Such a process can lead to long delays in distribution and routing of electronic messaging, as message servers are either unable to process their messaging load fast enough, or are simply unable to process any more messages because the process stops of the particular process are not processing properly. Any number of tests may be utilized to determine 45 that a process, or more than one process, is not processing properly, as would be understood by one skilled in the art. In one exemplary embodiment, the determining 45 further comprises determining that at least one of the monitored series of coordinated processes is at least one of failing to process and processing for longer than a maximum time limit. In one alternative embodiment, a particular process taking 20 seconds to complete may exceed a maximum time limit of one second for that process. In addition, a process may fail to complete entirely, thereby slowing the message distribution process. According to still another exemplary embodiment, the determining 45 that at least one of the monitored series of coordinated processes is failing comprises determining that the at least one process has failed at least N times. For instance, the process may determine 45 that a process is not processing properly when the process has failed at least 10 times, such as with 10 different messages. As would be appreciated by one skilled in the art, any of the foregoing examples may be adjusted to include more or less stringent tests without departing from the scope of the exemplary embodiments of the present invention.
The method 41 additionally comprises skipping, at 49, the at least one of the monitored 43 series of coordinated processes that is determined 45 not to be processing properly. By skipping 49 the process, the message distribution process can continue to process electronic messaging without long message latency or a complete stoppage of the messaging process.
The method 41 further comprises reinstating, at 53, the at least one skipped 49 process after a skipping period has elapsed. The skipping period begins at the time the process was first skipped. In many cases, the process skipped 49 can process correctly after being reinstated later, such as when a message server 27 is experiencing a smaller amount of electronic messaging traffic. As would be understood by one skilled in the art, the method 41 continues monitoring 43 the active processes both before and after reinstating 53 the at least one skipped process.
In another exemplary embodiment depicted in
In still another exemplary embodiment depicted in
Referring now to
The method 81 further comprises altering, generally indicated at 85, without user intervention, the flow of messages to the at least one message server 27′ based upon the determined 83 performance. As used herein, the phrase “without user intervention” is defined as those actions undertaken automatically, without the influence of a human actor at the time of action. For example, a command undertaken by a computing device based upon stored instructions, but without additional instructions or initialization by a user is an operation occurring without user intervention. In one exemplary embodiment, altering 85 the flow of messages to the at least one message server 27′ comprises enabling, also at 85, a load balancer to alter the flow of messages based upon the determined performance without user intervention. For example, the method can enable a load balancer, without user intervention, to allocate the flow of messages among two or more data centers 35, each comprising two or more message servers 27′, based upon the determined performance. In still another alternative embodiment, the method 81 can enable a load balancer, also at 85, to allocate the flow of messages among the two or more data centers 35 without user intervention, such that each of the data centers exhibits substantially the same overall performance. In these alternative embodiments, the method 81 is applying the electronic messaging load to the data centers according to their performance, thereby maximizing the total output of all the data centers combined. For example, taking the system 21 of
In yet another exemplary embodiment, altering 85 the flow of messages to the at least one message server 27′ comprises enabling a load balancer, without user intervention, to allocate the flow of messages among the two or more message servers based upon the determined performance. In another embodiment, the method 81 can enable a load balancer to allocate the flow of messages among the two or more message servers 27′ without user intervention, such that each of the message servers exhibit substantially the same overall performance. This embodiment is similar to the embodiment discussed immediately above, except that the previous embodiment allocated the flow of messages among the two or more data centers 35, while this embodiment allocates the flow of messages among two or more message servers 27′.
In still another embodiment, the altering 85 the flow of messages to the at least one message server 27′ comprises changing the flow of messages to the message server when the determined 83 performance meets a performance criteria. In one example, altering 85 the flow of messages to the at least one message server 27′ comprises decreasing, at 91, the flow of messages to the message server when the determined 83 performance is at or below an underperforming criteria. In this manner, a message server 27′ that is underperforming receives a decrease in message flow so that it is more capable of handling its message flow. In another alternative embodiment, altering 85 the flow of messages to the at least one message server 27′ further comprises increasing, at 93, the flow of messages to the message server when the determined 83 performance increases from at or below the underperforming criteria to above the underperforming criteria. In this manner, as performance of the message server 27′ increases, the flow of electronic messaging to the server can also be increased. In still another alternative embodiment, altering 85 the flow of messages to the at least one message server 27′ comprises stopping, at 97, the flow of messages to the message server when the determined performance is at or below an unacceptable criteria. In this manner, if the performance of the message server 27′ drops to an unacceptable level, all message flow to the message server stops, whereby the message server has an opportunity to process its current backlog of messages. In yet another alternative embodiment, altering 85 the flow can further comprise restarting, at 99, the flow of messages to the message server 27′ when the determined performance increases from at or below the unacceptable criteria to above the unacceptable criteria. In this manner, as performance of the message server 27′ increases, the flow of electronic messaging to the server restarts. With these different means for altering 85 the flow of electronic messaging, the method 81 can effectively balance the load of electronic messaging to increase overall performance of the system 21.
Referring now to
The method 111 further comprises assigning, at 117, at least a portion of the identified sender addresses to a category. In one exemplary embodiment, the assigning 117 comprises assigning at least a portion of the identified sender addresses to a category according to their desirability as a sender. For example, the assigning 117 can comprise assigning sender addresses of those senders who sent at least N number of messages that no recipient identified as undesirable in a desirable category. Such a test facilitates identifying desirable, non-spam, electronic messaging because the number of messages indicates a high level of communication and the lack of any indication by any recipient that these messages are undesirable normally indicates a highly desirable message. In another exemplary embodiment, the assigning 117 can comprise assigning sender addresses to a category according to a category nomination by one or more recipients. Other forms of data mining (e.g., traffic volume, previously sent messages, etc.) may also be utilized to identify those addresses that should be categorized.
The method 111 further comprises repeating, at 119, the identifying 115 and assigning 117 periodically to revise the categorization of identified sender addresses.
The method 111 further comprises routing, at 123, messages from the identified sender addresses assigned to a category through the message routing resources according to their assigned category. In one exemplary embodiment, routing 123 messages further comprises routing messages from sender addresses assigned to the desirable category through at least one of a different filtering process and a different message routing resource than messages from sender addresses not assigned to the desirable category. For example, the routing 123 messages from sender addresses assigned to the desirable category through at least one of a different filtering process and a different routing resource can comprise routing such messages through at least one of a less rigorous filtering process and one or more message routing resources dedicated to deliver only such messages. For example, one or more message routing resources, such as the first data center 35A in
In another exemplary embodiment, the routing messages further comprises monitoring, at 127, the flow of messages from sender addresses assigned to the desirable category and allocating, at 129, routing resources such that the flow of messages from sender addresses assigned to the desirable category remains above a minimum flow threshold. Here, message flow is monitored to ensure that messages from categorized users, which have been determined to be more important than other messages, remains above a minimum flow threshold. If the message flow does not remain above the minimum flow threshold, the method 111 allows for allocating resources to increase flow. For example, assume the first data center 35A of
In one exemplary embodiment, the method 111 may further comprise identifying, at 133, the addresses of recipients of all messages sent by a set of users and assigning, at 135, each of the identified recipient addresses to the desirable category. This exemplary method may further comprise routing, at 123, messages from sender addresses and recipient addresses assigned to the desirable category through at least one of a different filtering process and a different message routing resource than messages from sender addresses not assigned to the desirable category. In addition to identifying senders, this portion of the method 111 also identifies 133 recipients and assigns 135 them to the desirable category.
Those skilled in the art will note that the order of execution or performance of the methods illustrated and described herein is not essential, unless otherwise specified. That is, it is contemplated by the inventors that elements of the methods may be performed in any order, unless otherwise specified, and that the methods may include more or less elements than those disclosed herein.
When introducing elements of the present invention or the embodiment(s) thereof, the articles “a,” “an,” “the,” and “said” are intended to mean that there are one or more of the elements. The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that there may be additional elements other than the listed elements.
As various changes could be made in the above products and methods without departing from the scope of the embodiments of the invention, it is intended that all matter contained in the above description and shown in the accompanying drawings shall be interpreted as illustrative and not in a limiting sense.
Number | Date | Country | |
---|---|---|---|
60869248 | Dec 2006 | US |