1. A method for managing the traffic load of a delivery node being in a state BLOCKED or UNBLOCKED, comprising the steps of:
determining that the traffic load of the delivery node is within a pair of upper and lower limits; and
changing the state of the delivery node upon the determination that the traffic load of the delivery node is within the pair of upper and lower limits;
wherein changing the state is changing from UNBLOCKED to BLOCKED or from BLOCKED to UNBLOCKED.
2. The method of claim 1 wherein only new session requests are blocked when the delivery node is in the BLOCKED state and wherein current sessions continue to be served by the delivery node when the delivery node is in the BLOCKED and UNBLOCKED states.
3. The method of claim 2 wherein the delivery node is part of a cluster of delivery nodes sharing a cumulative traffic load and wherein new session requests are distributed to delivery nodes in an UNBLOCKED state.
4. The method of claim 1 further comprising the steps of determining that the state of the delivery node is UNBLOCKED and that the traffic load of the delivery node is above the lower limit and changing the state of the delivery node.
5. The method of claim 1 further comprising the steps of determining that the state of the delivery node is BLOCKED and that the traffic load of the delivery node is below the upper limit and changing the state of the delivery node.
6. The method of claim 1 wherein the step of determining is executed at time intervals comprised within 100 to 500 milliseconds.
7. The method of claim 1 wherein the traffic load is determined by measuring used bandwidth or processor load.
8. The method of claim 1 wherein the pair of upper and lower limits are configurable parameters that can vary according to operating conditions, time of day, day of week and wherein the time intervals is a configurable parameter that can vary according to average content size, usage patterns, time of day, day of week, speed of the delivery node or speed of communication links to the delivery node.
9. The method of claim 8 wherein the pair of upper and lower limits are percentage values expressed in terms of a percentage of a maximum traffic load which the delivery node can serve, said percentages being in the range comprised within 15% to 35% for the lower limit and 30% to 50% for the upper limit.
10. A delivery node comprising a processor and memory, said memory containing instructions executable by said processor for managing the traffic load of the delivery node which is in a state BLOCKED or UNBLOCKED, whereby said delivery node is operative to:
determine that the current traffic load of the delivery node is within a pair of upper and lower limits; and
change the state of the delivery node upon the determination that the traffic load of the delivery node is within the pair of upper and lower limits;
wherein the state is changed from UNBLOCKED to BLOCKED or from BLOCKED to UNBLOCKED.
11. The delivery node of claim 10 wherein only new sessions requests are blocked when the delivery node is in the BLOCKED state and wherein current sessions continue to be served by the delivery node when the delivery node is in the BLOCKED and UNBLOCKED states.
12. The delivery node of claim 11 wherein the delivery node is part of a cluster of delivery nodes sharing a cumulative traffic load and wherein new session requests are distributed to delivery nodes in an UNBLOCKED state.
13. The delivery node of claim 10 whereby said delivery node is further operative to determine that the state of the delivery node is UNBLOCKED and that the traffic load of the delivery node is above the lower limit and change the state of the delivery node.
14. The delivery node of claim 10 whereby said delivery node is further operative to determine that the state of the delivery node is BLOCKED and that the traffic load of the delivery node is below the upper limit and change the state of the delivery node.
15. The delivery node of claim 10 wherein the determination is executed at time intervals comprised within 100 to 500 milliseconds.
16. The delivery node of claim 10 wherein the traffic load is determined by measuring used bandwidth or processor load.
17. The delivery node of claim 10 wherein the pair of upper and lower limits are configurable parameters that can vary according to operating conditions, time of day, day of week and wherein the time intervals is a configurable parameter that can vary according to average content size, usage patterns, time of day, day of week, speed of the delivery node or speed of communication links to the delivery node.
18. The delivery node of claim 17 wherein the pair of upper and lower limits are percentage values expressed in terms of a percentage of a maximum traffic load which the delivery node can serve, said percentages being in the range comprised within 15% to 35% for the lower limit and 30% to 50% for the upper limit.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A computer-implemented method comprising:
identifying a requested account holder of a messaging platform associated with one or more temporal account features, each temporal account feature associated with a temporal account weight calculated based on engagement data representing past engagements by account holders with messages present in the message streams of other account holders, the engagement data associated with timestamps, the temporal account features determined based in part on the timestamps;
identifying a set of candidate messages each associated with one or more temporal message features;
for each candidate message of the set of candidate messages:
accessing temporal message weights for the temporal message features associated with the candidate message, the temporal message weights calculated based on the engagement data representing past engagements by account holders with messages, the temporal message features determined based in part on the timestamps of the engagement data; and
determining, by a processor, a value representing a likelihood of engagement with the candidate message by the requested account holder, the likelihood of engagement based at least on the temporal message weights and the temporal account weights; and
selecting at least one of the set of candidate messages for inclusion in a message stream of the requested account holder based on the determined values.
2. The method of claim 1, wherein the temporal message features comprise a fatigue feature, the fatigue feature based on a fatigue score between the requested account holder and the candidate message.
3. The method of claim 2, wherein the fatigue score is determined based on a weighted combination of exponential decay factors, each exponential decay factor corresponding to an impression between the requested account and the candidate message, each exponential decay factor based on time elapsed since the impression between the requested account and the candidate message.
4. The method of claim 2, wherein the fatigue score is determined based on a weighted combination of impressions, each impression weighted based on at least one of: an engagement between the requested account holder and the candidate message and a lack of engagement between the requested account holder and the candidate message.
5. The method of claim 2, wherein the fatigue score is determined based on impressions between the requested account and other messages authored by the account that authored the candidate message.
6. The method of claim 1, wherein at least one of the temporal account features represents an inferred attribute of the requested account holder, the inferred attribute based on engagement data meeting temporal criteria.
7. The method of claim 6, wherein the engagement data meeting temporal criteria comprise engagement data drawn from at least one of a recurring time period and a recent time period.
8. The method of claim 6, wherein the inferred attribute of the requested account holder is at least one of: a location, an interest, a device type used to access the messaging platform, and a software type used to access the messaging platform.
9. The method of claim 1, wherein at least one of the temporal account features represents an inferred attribute of the requested account holder, the inferred attribute based on engagement data meeting temporal criteria.
10. The method of claim 1, wherein determining the value representing the likelihood of engagement comprises:
accessing cross temporal weights for cross temporal features between the requested account holder and the candidate message, the cross temporal weights calculated based on the engagement data representing past engagements by account holders with messages and based on timestamps of the engagement data; and
determining the value representing the likelihood of engagement based in part on the cross weights.
11. The method of claim 10, wherein at least one of the temporal cross features has a value based on a current time and a temporal account feature associated with a recurring time period comprising the current time.
12. The method of claim 1, wherein the past engagements include engagements performed by subscribing accounts subscribed to receive messages from the requested account holder.
13. The method of claim 1, wherein the past engagements include engagements performed by publishing accounts that the requested account holder is subscribed to receive messages from.
14. The method of claim 1, wherein the past engagements include engagements performed by subscribing accounts subscribed to receive messages from publishing accounts that the requested account holder is subscribed to receive messages from.
15. A non-transitory computer-readable storage medium comprising instructions executable by a processor, the instructions for:
identifying a requested account holder of a messaging platform associated with one or more temporal account features, each temporal account feature associated with a temporal account weight calculated based on engagement data representing past engagements by account holders with messages present in the message streams of other account holders, the engagement data associated with timestamps, the temporal account features determined based in part on the timestamps;
identifying a set of candidate messages each associated with one or more temporal message features;
for each candidate message of the set of candidate messages:
accessing temporal message weights for the temporal message features associated with the candidate message, the temporal message weights calculated based on the engagement data representing past engagements by account holders with messages, the temporal message features determined based in part on the timestamps of the engagement data; and
determining a value representing a likelihood of engagement with the candidate message by the requested account holder, the likelihood of engagement based at least on the temporal message weights and the temporal account weights; and
selecting at least one of the set of candidate messages for inclusion in a message stream of the requested account holder based on the determined values.
16. The computer-readable medium of claim 15, wherein the temporal message features comprise a fatigue feature, the fatigue feature based on a fatigue score between the requested account holder and the candidate message.
17. The computer-readable medium of claim 15, wherein at least one of the temporal account features represents an inferred attribute of the requested account holder, the inferred attribute based on engagement data meeting temporal criteria.
18. The computer-readable medium of claim 15, wherein at least one of the temporal account features represents an inferred attribute of the requested account holder, the inferred attribute based on engagement data meeting temporal criteria.
19. The computer-readable medium of claim 15, wherein instructions for determining the value representing the likelihood of engagement comprise instructions for:
accessing cross temporal weights for cross temporal features between the requested account holder and the candidate message, the cross temporal weights calculated based on the engagement data representing past engagements by account holders with messages and based on timestamps of the engagement data; and
determining the value representing the likelihood of engagement based in part on the cross weights.
20. The computer-readable medium of claim 15, wherein the past engagements include engagements performed by subscribing accounts subscribed to receive messages from publishing accounts that the requested account holder is subscribed to receive messages from.