Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Реклама со 
скоростью света 
Сергей Жемжицкий
Агенда 
• Предыстория 
• Проработка решения 
• Цифры 
• Архитектура 
• Нюансы
Требования RTB 
visitors publishers 
advertisers 
100 ms 
20 ms 
30 ms 
10.000+ rps
Роль DMP в экосистеме RTB 
Data Data 
Data 
Bidder
Критерии выбора 
• Линейная масштабируемость 
• Шардинг “из коробки” 
• Распределенность 
• Репликация 
• Низкое время отк...
Снова этот NoSQL…
Функциональность 
Aerospike Cassandra CouchBase Mongo Redis 
Масштабируемость 
Шардинг 
Репликация 
Время отклика 
Точка о...
Литература
Инструменты и материалы 
• nginx 1.2.x 
– ngx-hFp-redis 
– lua-nginx-module 
– lua-resty-mongol 
– ngx-aerospike 
• aerosp...
Официальные данные
Неофициальные данные 
Nginx Redis Mongo Aerospike, b Aerospike, nb 
Latency, 50% 1.35 2.68 6.70 8.93 2.64 
Latency, 75% 1....
Меряем Nginx 
WRK • Без логирования 
NGINX 
• Без плагинов 
• С CPU Affinity
Относительность измерений 
L., ms., 50% L., ms., 75% L., ms. 90% L., ms. 99% T., r/s 
1.35 1.46 1.64 1.90 68851
Меряем Redis 
Node 1 
Shard 1 
Slave 2 
WRK 
Node 2 
Shard 
2 
Slave 
3 
Node 3 
Shard 
3 
Slave 
1 
NGINX
Результаты Redis 
L., ms., 50% L., ms., 75% L., ms. 90% L., ms. 99% T., r/s 
2.68 3.10 3.25 3.90 34769
Результаты Redis
Меряем Mongo 
WRK 
NGINX :: MONGOS 
Node 1 
mongod :: cfg 
mongod :: repl 
mongod :: repl 
mongod :: repl 
Node 2 
mongod ...
Результаты Mongo 
L., ms., 50% L., ms., 75% L., ms. 90% L., ms. 99% T., r/s 
6.70 8.22 10.22 15.46 14220
Результаты Mongo
Меряем Aerospike 
Node 1 
Chunk 1 
Replica 2 
WRK 
Node 2 
Chunk 2 
Replica 3 
Node 3 
Chunk 3 
Replica 1 
NGINX
Результаты Aerospike 
L., ms., 50% L., ms., 75% L., ms. 90% L., ms. 99% T., r/s 
8.93 14.99 26.83 106.48 3402
Результаты Aerospike
… еще результаты Aerospike 
Cores 50 75 90 99 Rps Ngx CPU Ngx, pks As, CPU As, pks 
4 8.22 10.22 15.46 14 K 3402 7 8 K 1 1...
…случайно выстрелили в ногу 
nginx 
+ blocking I/O
Libevent in aСтcрtоiиoмn 
р (апкеотпу 
ытка 2) 
Node 1 
Chunk 1 
Replica 2 
WRK 
Node 2 
Chunk 2 
Replica 3 
Node 3 
Chunk...
… ну наконец-то … 
L., ms., 50% L., ms., 75% L., ms. 90% L., ms. 99% T., r/s 
2.64 3.09 3.27 4.05 35746
… ну наконец-то …
Можно стрСотиротиьм 
ракету
Что иметь ввиду? 
• Неблокирующий I/O 
• Все, что можно сделать локально – делать 
локально 
• Быть ленивым (уметь пользов...
Спасибо за вопросы! 
s.zhemzhitsky@cleverdata.ru
Upcoming SlideShare
Loading in …5
×

Реклама со скоростью света (DMP-платформа), Сергей Жемжицкий (Clever Data)

1,923 views

Published on

Доклад Сергея Жемжицкого на HighLoad++ 2014.

Published in: Internet
  • Be the first to comment

Реклама со скоростью света (DMP-платформа), Сергей Жемжицкий (Clever Data)

  1. 1. Реклама со скоростью света Сергей Жемжицкий
  2. 2. Агенда • Предыстория • Проработка решения • Цифры • Архитектура • Нюансы
  3. 3. Требования RTB visitors publishers advertisers 100 ms 20 ms 30 ms 10.000+ rps
  4. 4. Роль DMP в экосистеме RTB Data Data Data Bidder
  5. 5. Критерии выбора • Линейная масштабируемость • Шардинг “из коробки” • Распределенность • Репликация • Низкое время отклика
  6. 6. Снова этот NoSQL…
  7. 7. Функциональность Aerospike Cassandra CouchBase Mongo Redis Масштабируемость Шардинг Репликация Время отклика Точка отказа Требовательность Мониторинг
  8. 8. Литература
  9. 9. Инструменты и материалы • nginx 1.2.x – ngx-hFp-redis – lua-nginx-module – lua-resty-mongol – ngx-aerospike • aerospike 2.x • redis 2.6.x • mongodb 2.4.x • wrk • nmon • Intel® Core™ i7-920 Quad-Core • 48 GB RAM • 1 Gbit/s NICs (*) • 512 bytes msg * 200 Mbit/s guaranteed
  10. 10. Официальные данные
  11. 11. Неофициальные данные Nginx Redis Mongo Aerospike, b Aerospike, nb Latency, 50% 1.35 2.68 6.70 8.93 2.64 Latency, 75% 1.46 3.10 8.22 14.99 3.09 Latency, 90% 1.64 3.25 10.22 26.83 3.27 Latency, 99% 1.90 3.90 15.46 106.48 3.95 Throughput, tps 68851 34769 14220 3402 35746 CPU, Web, % 29 20 70 7 33 Network, Web, kp/s 71 71 37 8 71 CPU, Db, % - 6 25 1 6 Network, Db, kp/s - 12 21 1 12
  12. 12. Меряем Nginx WRK • Без логирования NGINX • Без плагинов • С CPU Affinity
  13. 13. Относительность измерений L., ms., 50% L., ms., 75% L., ms. 90% L., ms. 99% T., r/s 1.35 1.46 1.64 1.90 68851
  14. 14. Меряем Redis Node 1 Shard 1 Slave 2 WRK Node 2 Shard 2 Slave 3 Node 3 Shard 3 Slave 1 NGINX
  15. 15. Результаты Redis L., ms., 50% L., ms., 75% L., ms. 90% L., ms. 99% T., r/s 2.68 3.10 3.25 3.90 34769
  16. 16. Результаты Redis
  17. 17. Меряем Mongo WRK NGINX :: MONGOS Node 1 mongod :: cfg mongod :: repl mongod :: repl mongod :: repl Node 2 mongod :: cfg mongod :: repl mongod :: repl mongod :: repl Node 3 mongod :: cfg mongod :: repl mongod :: repl mongod :: repl Shard 1 Replica Set 1 Shard 2 Replica Set 2 Shard 3 Replica Set 3
  18. 18. Результаты Mongo L., ms., 50% L., ms., 75% L., ms. 90% L., ms. 99% T., r/s 6.70 8.22 10.22 15.46 14220
  19. 19. Результаты Mongo
  20. 20. Меряем Aerospike Node 1 Chunk 1 Replica 2 WRK Node 2 Chunk 2 Replica 3 Node 3 Chunk 3 Replica 1 NGINX
  21. 21. Результаты Aerospike L., ms., 50% L., ms., 75% L., ms. 90% L., ms. 99% T., r/s 8.93 14.99 26.83 106.48 3402
  22. 22. Результаты Aerospike
  23. 23. … еще результаты Aerospike Cores 50 75 90 99 Rps Ngx CPU Ngx, pks As, CPU As, pks 4 8.22 10.22 15.46 14 K 3402 7 8 K 1 1 K 8 7.89 15.16 92.4 89.8 6028 10 13 K 1 2 K 12 4.76 8.74 103.1 121.6 10233 15 20 K 2 3 K 16 3.91 6.21 99.6 111.3 13178 22 26 K 3 6 K 24 2.13 2.87 4.68 76.81 25744 21 60 K 5 10 K 32 2.01 2.60 4.42 81.29 28925 25 70 K 6 11 K 64 2.54 3.66 112.4 118.1 26468 27 70 K 6 11 K
  24. 24. …случайно выстрелили в ногу nginx + blocking I/O
  25. 25. Libevent in aСтcрtоiиoмn р (апкеотпу ытка 2) Node 1 Chunk 1 Replica 2 WRK Node 2 Chunk 2 Replica 3 Node 3 Chunk 3 Replica 1 LIBEVENT :: LIBEVHTP
  26. 26. … ну наконец-то … L., ms., 50% L., ms., 75% L., ms. 90% L., ms. 99% T., r/s 2.64 3.09 3.27 4.05 35746
  27. 27. … ну наконец-то …
  28. 28. Можно стрСотиротиьм ракету
  29. 29. Что иметь ввиду? • Неблокирующий I/O • Все, что можно сделать локально – делать локально • Быть ленивым (уметь пользоваться чужими результатами) • Все врут
  30. 30. Спасибо за вопросы! s.zhemzhitsky@cleverdata.ru

×