Distributing pacing results for low latency content serving
Methods, systems, and apparatuses include establishing, by a distributor of a content serving system, a streaming connection with a pacing host of the content serving system. The pacing results are received by the distributor from the pacing host through the streaming connection. The pacing results are stored by the distributor in a local cache memory. The pacing results are streamed by the distributor from the local cache memory to serving hosts.
1 . A method comprising:
establishing, by a distributor of a plurality of distributors of a content serving system, a first streaming connection with a pacing host of the content serving system;
receiving, by the distributor, the pacing results from the pacing host through the first streaming connection;
storing, by the distributor, the pacing results in a local cache memory; and
streaming, by the distributor, the pacing results from the local cache memory to a plurality of serving hosts by:
streaming, by a first layer distributor of the distributor, the pacing results to a plurality of second layer distributors of the distributor; and
streaming, by a second layer distributor of the plurality of second layer distributors, the pacing results to the plurality of serving hosts, wherein the plurality of serving hosts determine content to deliver to a plurality of user devices of the content serving system using the pacing results.
2 . The method of claim 1 , wherein establishing the first streaming connection with the pacing host comprises:
establishing a streaming connection with each of a plurality of shards of the pacing host.
3 . The method of claim 2 , wherein receiving the pacing results from the pacing host comprises:
receiving pacing results subsets from the plurality of shards; and
aggregating the pacing results subsets into the pacing results.
4 . The method of claim 3 , wherein streaming, by the distributor, the pacing results from the local cache memory comprises:
pushing the pacing results to the plurality of serving hosts in response to aggregating the pacing results subsets into the pacing results.
5 . The method of claim 1 , wherein streaming, by the distributor, the pacing results to the plurality of serving hosts comprises:
announcing, by the distributor, a streaming availability to the plurality of serving hosts, wherein streaming the pacing results is in response to establishing second streaming connections with the plurality of serving hosts.
6 . The method of claim 1 , wherein streaming, by the distributor, the pacing results to the plurality of serving hosts further comprises:
amplifying the pacing results using the number of the plurality of serving hosts; and
streaming the pacing results to each of the plurality of serving hosts.
7 . The method of claim 1 , further comprising:
establishing the distributor as a host for the pacing results stored in the local cache memory; and
receiving, by the distributor, a poll from a serving host of the plurality of serving hosts, wherein streaming, by the distributor, the pacing results from the local cache memory to the serving host is in response to receiving the poll from the serving host.
8 . The method of claim 1 , wherein receiving, by the distributor, the pacing results from the pacing host comprises:
sending a poll to the pacing host for the pacing results, wherein receiving, by the distributor, the pacing results from the pacing host is in response to sending the poll.
9 . A system comprising:
at least one memory device; and
a processor, operatively coupled with the at least one memory device, to:
establish, by a distributor of a plurality of distributors of a content serving system, a first streaming connection with a pacing host of the content serving system;
receive, by the distributor, the pacing results through the first streaming connection;
establish, by a plurality of serving host, second streaming connections with the distributor to receive pacing results from the distributor;
stream, by the distributor, the pacing results to the plurality of serving hosts through the second streaming connections by:
streaming, by a first layer distributor of the distributor, the pacing results to a plurality of second layer distributors of the distributor; and
streaming, by a second layer distributor of the plurality of second layer distributors, the pacing results to the plurality of serving hosts,
receive, by the plurality of serving hosts, the pacing results through the second streaming connections;
determine, by a serving host of the plurality of serving hosts, content to deliver to a plurality of user devices of the content serving system using the pacing results; and
cause, by the serving host, the determined content to be delivered to a user device of the plurality of user devices.
10 . The system of claim 9 , wherein establishing the first streaming connection with the pacing host comprises establishing a streaming connection with each of a plurality of shards of the pacing host and wherein receiving the pacing results from the pacing host comprises:
receiving pacing results subsets from the plurality of shards; and
aggregating the pacing results subsets into the pacing results.
11 . The system of claim 9 , wherein streaming, by the distributor, the pacing results to the plurality of serving hosts comprises:
announcing, by the distributor, a streaming availability to the plurality of serving hosts, wherein streaming the pacing results is in response to establishing the second streaming connections with the plurality of serving hosts.
12 . The system of claim 11 , wherein streaming, by the distributor, the pacing results to the plurality of serving hosts further comprises:
amplifying the pacing results using the number of the plurality of serving hosts; and
streaming the pacing results to each of the plurality of serving hosts.
13 . The system of claim 9 , wherein the processor is further to:
receive, by a serving host of the plurality of serving hosts, serving results from a user device of the plurality of user devices, wherein the serving results comprise results of the delivery of the content; and
send the serving results to the pacing host.
14 . The system of claim 13 , wherein the processor is further to:
aggregate the serving results with serving results from a second serving host of the plurality of serving hosts to generate aggregated serving results, wherein sending the serving results to the pacing host comprises sending the aggregated serving results to the pacing host.
15 . The system of claim 14 , wherein the processor is further to:
receive, by the pacing host, the serving results from the serving host;
generate updated pacing results using the serving results; and
stream the updated pacing results to the distributor in response to generating the updated pacing results.
16 . The system of claim 9 , wherein the processor is further to:
establish the distributor as a host for the pacing results; and
send, by the serving host, a poll to the distributor, wherein receiving, by the serving host, the pacing results through the second streaming connections is in response to sending the poll.
17 . A non-transitory computer-readable storage medium comprising instructions that, when executed by a processor, cause the processor to:
establish, by a first layer distributor of a plurality of first layer distributors of a content serving system, a first streaming connection with a pacing host of the content serving system;
receive, by the first layer distributor, the pacing results through the first streaming connection;
establish, by a second layer distributor of a plurality of second layer distributors, a second streaming connection with the first layer distributor to receive pacing results from the first layer distributor;
stream, by the first layer distributor, the pacing results to the second layer distributor;
establish, by a plurality of serving hosts, third streaming connections with the second layer distributor to receive pacing results from the second layer distributor;
receive, by the plurality of serving hosts, the pacing results through the third streaming connections;
determine, by a serving host of the plurality of serving hosts, content to deliver to a plurality of user devices of the content serving system using the pacing results; and
cause, by the serving host of the plurality of serving hosts, the determined content to be delivered to a user device of the plurality of user devices.
18 . The non-transitory computer-readable storage medium of claim 17 , wherein establishing the first streaming connection with the pacing host comprises establishing a streaming connection with each of a plurality of shards of the pacing host and wherein receiving the pacing results from the pacing host comprises:
receiving pacing results subsets from the plurality of shards; and
aggregating the pacing results subsets into the pacing results.