Skip to content

Latest commit

 

History

History
35 lines (28 loc) · 3.52 KB

File metadata and controls

35 lines (28 loc) · 3.52 KB

Differences Between Prebid Server Go and Java

January 24, 2019

The sister Prebid Server projects are both busy and moving forward at different paces on different features. Sometimes a feature may exist in one implementation and not the other for an interim period. This page tracks known differences that may persist for longer than a couple of weeks.

Feature Differences

  1. PBS-Java supports Currency conversion. PBS-Go has it implemented, but disabled by default(still under dev) issue 280, issue 760. PBS-Java PR 22
  2. PBS-Java supports IP-address lookup in certain scenarios around GDPR. See https://github.com/rubicon-project/prebid-server-java/blob/master/docs/developers/PrebidServerJava_GDPR_Requirements.pdf
  3. PBS-Java supports InfluxDB, Graphite and Prometheus, PBS-Go supports InfluxDB and Prometheus as metrics backend.
  4. PBS-Java has Circuit Breaker mechanism for database, http and geolocation requests. This can protect the server in scenarios where an external service becomes unavailable.
  5. PBS-Java supports ext.prebid.cache.{bids,vastxml}.returnCreative field to control creative presence in response (true by default).
  6. PBS-Java supports checking the latest currency rates details, for example update time. This information is exposed via /currency-rates endpoint on admin port.
  7. PBS-Java has a specific host-cookie and uids cookie processing for all endpoints, that sets uids.HOST-BIDDER from host-cookie if first is absent or not equal to second.
  8. PBS-Java has a specific /cookie-sync behaviour, that sets /setuid as usersync-url for host-bidder if host-cookie specified but uids.HOST-BIDDER undefined or differs.

Minor differences

  • PBS-Java removes null objects or empty strings (e.g. in Go /auction response bid object will have field hb_cache: "" whereas in Java it will be absent; also digitrust: null in PBS Go is not there in PBS Java). PBS-Go Issue 476
  • All adapters have been ported to use OpenRTB directly in PBS-Java. PBS-Go Facebook AudienceNetwork adapter Issue 211
  • Java and Go adapter internal interface returns currency in different ways:
    • in PBS-Go, the adapter sets BidResponse.currency, which is outside of each TypedBid.
    • in PBS-Java, the adapter set BidderBid[N].currency.
  • PBS-Go use "60 seconds buffer + {bid,imp,mediaType}TTL" approach to determine caching TTL period.
  • PBS-Java has different names for system metrics. For example instead of active_connections it uses vertx.http.servers.[IP]:[PORT].open-netsockets.count. See Metrics for details.

GDPR differences

  • PBS-Java supports geo location service interface to determine the country for incoming client request and provides a default implementation using MaxMind GeoLite2 Country database.
  • Different checking of purpose IDs (1 - Storage and access of information, 3 - Ad selection, delivery, reporting):
    • for /auction endpoint: in PBS-Java - doesn't support GDPR processing.
    • for /openrtb2/{auction,amp} endpoint: in PBS-Java - 1 and 3 (for each bidder from request); in PBS-Go - doesn't support GDPR processing.
    • for /cookie_sync endpoint: in PBS-Java - doesn't support GDPR processing; in PBS-Go - only 1 checked.
  • PBS-Java allows bidder to enforce GDPR processing. This information available in bidder meta info.