Not applicable.
Not applicable.
Not applicable.
A communications network may include nodes connected by links that enable communication between users. Each node in a network has a unique identifier (e.g., an Internet Protocol (IP) address) that enables data or connections to be routed to the correct recipient. Communications networks commonly rely on statically configured connectivity and routing, which can be manual, error prone, and rigid. Additionally, communications networks may require communication across different locales (e.g., across a wide area network). This cross-locale traffic can increase communication costs and decrease network performance, for example by increasing system latency.
In one embodiment, the disclosure includes a method for managing information stored to a local cache. Social networking information and/or collaboration history information for a user is obtained and is used to identify potential targets of communication for the user. The local cache is updated based at least in part on the identified potential targets of communication.
In another embodiment, the disclosure includes an apparatus for managing information stored to a local cache. The apparatus comprises an analytics engine component and an updating component. The analytics engine component is configured to determine metrics for potential targets of communication using social networking information and/or collaboration history information, and the updating component is configured to add or remove information corresponding to at least one of the potential targets from the local cache using the metrics.
In yet another embodiment, the disclosure includes an apparatus for managing information stored to a local cache. The apparatus comprises a processor that is configured to determine a potential communication target for a user, calculate a probability value that represents a likelihood that the user will communicate with the potential communication target, and update the local cache based at least in part on the calculated probability value.
These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims.
For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
It should be understood at the outset that, although an illustrative implementation of one or more embodiments are provided below, the disclosed systems and/or methods may be implemented using any number of techniques, whether currently known or in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents. While certain aspects of conventional technologies have been discussed to facilitate the present disclosure, applicants in no way disclaim these technical aspects, and it is contemplated that the present disclosure may encompass one or more of the conventional technical aspects discussed herein.
Disclosed herein are systems and methods that enable predictive caching in a distributed communication system. In one embodiment, social network and collaboration history information are utilized to determine what communication routes are most likely to be required, and a local cache can then store the needed routing information. For example, communications may be more likely to occur between users that are linked in a social network or between users that have collaborated in the past. Accordingly, social network and collaboration history information can be used to predict what routing information is most likely to be needed at a local cache. This may be beneficial in reducing system latency and cross-locale communications (e.g. communications across a wide area network) by reducing the amount of routing information that needs to be obtained from remote sources. In another embodiment, social network and collaboration history information are utilized to distribute users in a communications system. For instance, users that are linked in a social network or have a history of collaborating may be associated with a same node (e.g., a same local server). Therefore, users that are more likely to communicate with each other can be associated with a same node, and this may also be beneficial in reducing system latency and cross-locale communications. Additionally, embodiments may reduce overall use of system resources, thereby increasing the scalability of a multi-node system.
Each node 111, 112, 113, 114, 115, 121, 122, 123, 124, 125, 131, 132, 133, 134, and 135 is optionally an active electronic device that is attached to the distributed communication system 100 and is capable of sending, receiving, or forwarding information over a communications channel. Some examples of nodes include data circuit-terminating equipment (DCE) such as a modem, hub, bridge, or switch, and data terminal equipment (DTE) such as a digital telephone handset, a printer, a host computer, a router, a workstation, or a server. In one particular embodiment, for illustration purposes only and not by limitation, a node comprises a Unified Communication Application Server. However, embodiments are not limited to any particular type of node. System 100 connects nodes 111, 112, 113, 114, 115, 121, 122, 123, 124, 125, 131, 132, 133, 134, and 135 together using links that enable telecommunication between nodes, and each node 111, 112, 113, 114, 115, 121, 122, 123, 124, 125, 131, 132, 133, 134, and 135 in system 100 has a unique address such that messages or connections can be routed to the correct node.
Each group of nodes is associated with multiple users. For instance, in
System 100 also includes a wide area network (WAN) 140 that enables communications across the locales. For instance, WAN 140 enables a communication 141 between nodes 113 and 121, and a communication 142 between nodes 113 and 131. In an embodiment, communications across WAN 140 may be reduced by utilizing social network and collaboration history information to predict which communications are most likely to occur. For example, if user 118 is linked to user 128 in a social network or if user 118 has collaborated with user 128 in the past, user 118′s local node 113 can cache user 128′s routing information in its local cache such that the routing information does not need to be obtained from a remote source.
Social network information 210 may be used directly to manage information stored to a local cache 230 and/or to distribute users across local nodes 240. Additionally, one or more metrics may be derived from social network information 210. Some examples of metrics that may be derived from social network information 210 include, but are not limited to, cluster coefficients and list connected weights. The derived metrics illustratively provide an indication of which users in a social network are linked together. In one particular embodiment, cluster coefficients are used to distribute users across local nodes 240, and list connected weights are used to manage information stored to a local cache 230. Embodiments are not however limited to any particular implementation and any combination of direct social network information 210 and/or derived metrics can be used to manage information stored to a local cache 230 and/or distribute users across local nodes 240.
Collaboration history information 220 may also be used directly to manage information stored to a local cache 230 and/or to distribute users across local nodes 240. Additionally, one or more metrics may be derived from collaboration history information 220. Some examples of metrics that may be derived from collaboration history information 220 include, but are not limited to, predicted loads and likelihoods of communications. The derived metrics illustratively provide an indication of which users have communicated with each other. For example, the derived metrics can indicate which users communicate with each other frequently and which users communicate infrequently or not at all. In one particular embodiment, predicted loads are used to distribute users across local nodes 240, and likelihoods of communications are used to manage information stored to a local cache 230. Embodiments are not however limited to any particular implementation and any combination of direct collaboration history information 220 and/or derived metrics can be used to manage information stored to a local cache 230 and/or distribute users across local nodes 240.
Local cache 230 may also store other information. In the specific example shown in
Latency metric 236 represents a contribution to an overall system latency. In one embodiment, latency metric 236 is based on an amount of time required to retrieve routing information and a likelihood that the information will be needed. For example, if it would take a long time to retrieve routing information and it is predicted that the routing information will be needed (e.g. if the routing information has been used frequently in the past), then the latency metric 236 may have a higher value. Conversely, if it would take a short amount of time to retrieve routing information and/or it is predicted that the routing information is less likely to be needed (e.g., if the routing information has been used infrequently in the past), then the latency metric 236 may have a lower value.
Last used metric 238 represents how recently information in the cache was used, and frequency metric 240 represents how frequently information in the cache is used. The last used metric 238 may correspond to an amount of time since the data was last used. For example, routing information that has been used more recently may have a lower value for the last used metric 238 than routing information that has been used less recently. Similarly, routing information that has been used more frequently may have a higher value for the frequency metric than routing information that has been used less frequently.
Weight metric 234, latency metric 236, last used metric 238, and frequency metric 240 can be utilized to manage the data stored to local cache 230. For example, the weight metric 234, last used metric 238, and/or frequency metric 240 can be used to predict a likelihood that data will be needed in the future. Local cache 230 can retain data that is more likely to be used and/or is associated with a higher latency metric 236. Local cache 230 can evict data that is less likely to be used and/or is associated with a lower latency metric 236. Accordingly, the metrics can be used to manage cache data such that the overall system latency is reduced and cross-locale communications are reduced.
The user source list and the information from block 406 are then inputted into an extraction and filtering component at block 408. The output from the extraction and filtering component includes a set of information that identifies potential communication targets per a user (e.g., a list of potential communication targets for user uxa). Block 411 schematically illustrates an example of a set of potential communication targets per a user. In block 411, the user is represented as the person in the center, and his or her potential communication targets form the circle surrounding the person.
In an embodiment, potential communication targets are determined for multiple different users of system 400. At block 412, the potential communication targets for the multiple different users are merged together by a merging component. The merged information is used to generate a weighted aggregate target list per locale at block 414. Block 416 schematically illustrates an example of a weighted target list. In block 416, the potential communication targets are represented by the dots that are inside the circle, and users of system 400 at other locales are represented by the dots outside the circle. The arrows between the users and the targets represent what targets are associated with each user. Targets that are associated with more users are optionally associated with a higher weight, and targets that are associated with fewer users are optionally associated with a lower weight. The weighted aggregate target list per locale at block 414 is then outputted to an analytics engine and knowledge base component at block 418.
Social network information and/or collaboration history information for the user at block 419 are also outputted to the analytics engine and knowledge base component at block 418. The social network information and/or collaboration history information can be obtained from any of the sources discussed above or any other possible sources. The information at block 419 may be the same or different than the information at block 406 depending upon the particular configuration of the system.
Additionally, latency information at block 422 may also be outputted to the analytics engine and knowledge base component at block 418. In one embodiment, the latency information may include an average latency estimation for communications between two different locales (e.g., between locales “x” and “y,” where “x” is a locale of a user, and “y” is a locale of a potential target of the user). The latency information can be determined using any methods or components. For instance, the latency information can be determined by utilizing network topology analysis at block 424.
The analytics engine and knowledge base component at block 418 utilizes the social network information and/or collaboration history information from block 419, the weighted aggregate target list per locale from block 414, and/or the latency information from block 422 to generate a sorted predictive target list and metrics at block 420.
The analytics engine and knowledge base component can use any method to generate the sorted predictive target list and metrics. Blocks 422, 424, 426, and 428 within block 418 illustrate one possible way to determine the sorted predictive target list and metrics. At block 422, a set of potential targets is obtained. Each target is associated with a contact and a locale. For example, in
At block 426, a predictor component determines likelihoods (e.g., probabilities) that within a particular time, that any user in one locale will communicate with a target contact in another locale. For example, in
Based on the likelihoods and the latency information, the analytics engine and knowledge base component determines a latency reduction metric at block 428. As discussed above, a latency metric optionally represents a contribution to an overall system latency. In one embodiment, the latency metric is based on an amount of time required to retrieve routing information and a likelihood that the information will be needed. For example, if it would take a long time to retrieve routing information and it is predicted that the routing information will likely be needed, then the latency metric may have a higher value. Conversely, if it would take a short amount of time to retrieve routing information and/or it is predicted that the routing information is less likely to be needed, then the latency metric may have a lower value. Latency metrics may be determined for each potential target (e.g., for each target shown in block 422).
The analytics engine and knowledge base component at block 418 is not limited to the particular methods and metrics described above. For instance, in the embodiment described above, a latency metric is determined that can be used to reduce an overall system latency. However, in another embodiment, an overall system latency may not be reduced. Instead, potential targets may be associated with a priority metric. For example, an important contact may have a higher priority metric than a less important contact. Accordingly, the analytics engine and knowledge base component may use metrics and methods that reduce latency based on priority metrics of contacts and not based on reducing an overall system latency. Thus, embodiments of the present disclosure are not limited to any particular methods and metrics, and the analytics engine and knowledge base component can use any methods and metrics to optimize any system parameter as desired.
At block 420, a sorted predictive target list and metrics are generated. In the example shown in
The sorted predictive target list and metrics from block 420 and cache eviction policies from block 430 are inputted into a cache updating component 432. The cache eviction policies include criteria for removing information from a cache. Some examples of cache eviction policies include, but are not limited to, removing information that has a lower impact on reducing latency, removing information that has a lower connected weight, removing information that is used less recently, and removing information that is used less frequently.
The cache updating component at block 432 utilizes the sorted predictive target list and the cache eviction policies to update a local cache at block 434. For instance, the cache updating component may add information to the local cache that may reduce latency, has a higher connected weight, was used more recently, has a higher priority, or is used more frequently. Also for instance, the cache updating component may remove information from the local cache that has a lower impact on reducing latency, has a lower connected weight, was used less recently, has a lower priority, or is used less frequently. Accordingly, system 400 can be used to manage what information is stored by a local cache, and system 400 can be configured to manage the cache to reduce an overall system latency, prioritize certain contacts, or achieve other criteria as desired.
As has been described above, embodiments of systems and methods provide predictive caching in a distributed communication system. In one embodiment, social network and collaboration history information are utilized to determine what communication routes are most likely to be required, and a local cache can then store the needed routing information. Accordingly, social network and collaboration history information can be used to predict what routing information is most likely to be needed at a local cache. This may be beneficial in reducing system latency and cross-locale communications (e.g. communications across a wide area network) by reducing the amount of routing information that needs to be obtained from remote sources. In another embodiment, social network and collaboration history information are utilized to distribute users in a communications system. For instance, users that are linked in a social network or have a history of collaborating may be associated with a same node (e.g., a same local server). Therefore, users that are more likely to communicate with each other can be associated with a same node, and this may also be beneficial in reducing system latency and cross-locale communications. Additionally, embodiments may reduce overall use of system resources, thereby increasing the scalability of a multi-node system. Embodiments are not however limited to any particular benefits or features and may include any one or more of the features described above or shown in the figures.
The schemes described above may be implemented on any general-purpose network component, such as a computer or network component with sufficient processing power, memory resources, and network throughput capability to handle the necessary workload placed upon it.
The secondary storage 504 is typically comprised of one or more disk drives or tape drives and is used for non-volatile storage of data and as an over-flow data storage device if the RAM 508 is not large enough to hold all working data. The secondary storage 504 may be used to store programs that are loaded into the RAM 508 when such programs are selected for execution. The ROM 506 is used to store instructions and perhaps data that are read during program execution. The ROM 506 is a non-volatile memory device that typically has a small memory capacity relative to the larger memory capacity of the secondary storage 504. The RAM 508 is used to store volatile data and perhaps to store instructions. Access to both the ROM 506 and the RAM 508 is typically faster than to the secondary storage 504.
At least one embodiment is disclosed and variations, combinations, and/or modifications of the embodiment(s) and/or features of the embodiment(s) made by a person having ordinary skill in the art are within the scope of the disclosure. Alternative embodiments that result from combining, integrating, and/or omitting features of the embodiment(s) are also within the scope of the disclosure. Where numerical ranges or limitations are expressly stated, such express ranges or limitations should be understood to include iterative ranges or limitations of like magnitude falling within the expressly stated ranges or limitations (e.g., from about 1 to about 10 includes, 2, 3, 4, etc.; greater than 0.10 includes 0.11, 0.12, 0.13, etc.). For example, whenever a numerical range with a lower limit, R1, and an upper limit, Ru, is disclosed, any number falling within the range is specifically disclosed. In particular, the following numbers within the range are specifically disclosed: R=R1+k*(Ru−R1), wherein k is a variable ranging from 1 percent to 100 percent with a 1 percent increment, i.e., k is 1 percent, 2 percent, 3 percent, 4 percent, 5 percent, . . . , 70 percent, 71 percent, 72 percent, . . . , 95 percent, 96 percent, 97 percent, 98 percent, 99 percent, or 100 percent. Moreover, any numerical range defined by two R numbers as defined in the above is also specifically disclosed. The use of the term about means +10% of the subsequent number, unless otherwise stated. Use of the term “optionally” with respect to any element of a claim means that the element is required, or alternatively, the element is not required, both alternatives being within the scope of the claim. Use of broader terms such as comprises, includes, and having should be understood to provide support for narrower terms such as consisting of, consisting essentially of, and comprised substantially of. Accordingly, the scope of protection is not limited by the description set out above but is defined by the claims that follow, that scope including all equivalents of the subject matter of the claims. Each and every claim is incorporated as further disclosure into the specification and the claims are embodiment(s) of the present disclosure. The discussion of a reference in the disclosure is not an admission that it is prior art, especially any reference that has a publication date after the priority date of this application. The disclosure of all patents, patent applications, and publications cited in the disclosure are hereby incorporated by reference, to the extent that they provide exemplary, procedural, or other details supplementary to the disclosure.
While several embodiments have been provided in the present disclosure, it may be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.
In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and may be made without departing from the spirit and scope disclosed herein.