Skip to content
sunilrottoo edited this page Jun 6, 2013 · 3 revisions

RTBkit is an open-source software package that takes much of the hard engineering work out of creating a Real-Time Bidder by breaking the problem down into well-defined components. Its open, service-oriented architecture can be used to assemble a bidder as simple or complex as desired. The RTBkit core connects to exchanges and routes bid requests and data through a configurable set of components which can be extended to implement a customized bidder.

  • Exchange Connectors allow RTBkit-based bidders to plug into any source of bid-request (exchanges, SSP’s or pre-existing bidders)
  • Bidding Agents are where bidding logic is implemented. Agents tell the RTBkit core which bid requests they want to receive (i.e. which targeting filters to apply) and they decide whether/how much to bid and with which ad tag.
  • Augmenters are where data can be added to bid requests before the requests are filtered and dispatched to Agents. An Augmenter can add first or third party data to a bid request, or implement part of a bidding strategy such as clearing-price estimation, frequency capping, blacklisting/whitelist management etc.
  • Data Loggers can subscribe to a stream of event notifications that they can use to create log files, feed reporting systems, feed data into optimization systems etc.

Technology

The RTBkit core is implemented as a set of C++ services which run on Linux and communicate with each other using ZeroMQ, and which expose a set of REST APIs for monitoring and configuration. It is highly optimized and can deal with 20,000 bid-requests per second on a single server. Service discovery is provided by Apache Zookeeper and basic reporting is via Graphite.

Bidding Agents can be implemented in C++ or Javascript at the moment while Augmenters and Data Loggers are supported only for C++, with support for Python, Java and other languages planned for the near future. RTBkit comes with C++ base classes for these components with hooks to implement custom logic.

Clone this wiki locally