company_banner

Будьте в центре внимания!

    Миссия компании Badoo — помочь людям найти новых знакомых по всему миру. Для этого на нашем сайте существует множество инструментов и сервисов, позволяющих пользователю выделиться среди других и повысить свою популярность. Одним из них является сервис Spotlight, в русской версии — “Центр внимания”. Он присутствует почти на всех страницах нашего сайта и представляет собой блок из 12 фотографий. Концепция сервиса такова, что пользователь видит фотографии ближайших к нему географических соседей. Он может отправить заявку, чтобы среди них появилась и его фотография на первом месте слева. Тогда все остальные сдвигаются вправо, а последний выбывает.


    Как устроен этот, на первый взгляд, нехитрый сервис, читайте далее...

    На сегодняшний день Badoo поддерживает более 30 языков, включая языки с направлением письма справа налево (RTL языки: иврит, арабский и др.). Эта поддержка не ограничивается лишь переводом текстовых материалов, а включает в себя еще и оптимизацию элементов интерфейса. Наши веб-технологи постарались, чтобы Spotlight не стал исключением. В случае с RTL языками он отражен зеркально, а фотографии движутся справа налево.

    Для каждой страны определяются центральные города, к которым примыкают все остальные, образуя округа. Центральными городами становятся те, чье население превышает заданный порог, определяемый эмпирическим путем для каждой страны. Округа обычно пересекаются между собой, и пользователь из одного округа может попасть одновременно в несколько других. Согласно алгоритму изначально осуществляется поиск ближайшего округа, вычисляется расстояние до него — D. Затем мы находим все остальные округа, расстояние до которых не более D + X км, что также настраивается индивидуально для каждой страны.

    Некоторые центральные города задаются вручную, например на островах. Округа для всех населенных пунктов выбираются исключительно в рамках стран, в которых они расположены. Город на границе не попадет в округ чужой страны, хотя технически нам ничто не мешает делать это в рамках каждого континента. Ниже вы можете увидеть визуализацию округов Франции:


    С технической стороны основной частью сервиса Spotlight является программа на С — демон, который принимает заявки, распределяет по округам и осуществляет ротацию пользователей. На наших серверах одновременно работает несколько демонов Spotlight, распределяя между собой нагрузку. Каждый из них отвечает за свой набор стран и группу пользователей определенной сексуальной ориентации. Последнее является еще одним достоинством сервиса, т.к. пользователи видят только тех, кто им интересен, а не всех подряд. В качестве примера ниже приведена таблица:


    Молодой человек из Парижа, который хочет познакомиться с девушкой, попадет на сервер №1. При этом в блоке фотографий он будет видеть мужчин и женщин из столичного округа с такими же интересами.

    Попасть в Spotlight могут только те, у кого имеется хотя бы одна фотография, одобренная нашими модераторами, но мы постарались сделать этот процесс максимально быстрым и незаметным. Даже если пользователь только что загрузил свою фотографию, она отправится на ускоренную внеочередную модерацию. Пройдет не более минуты как он увидит себя на первом месте среди других фото. Если пользователь удалит фото, это сразу же отразится в сервисе — среди всех его фотографий будет найдена первая подходящая на замену. Для всех текущих заявок постоянно проверяется актуальность фотографий и профиля. Например, если пользователь нарушит правила сайта и будет заблокирован, то его заявка будет удалена.

    Изначально Spotlight был основан на Memcache, а в качестве постоянного хранилища заявок использовалась база MySQL. Front-end сервиса на JavaScript за обновлениями обращался напрямую к Memcache через специальный модуль для веб-сервера nginx. За обработку заявок полностью отвечали PHP-скрипты, которые обрабатывали очереди в БД и обновляли данные в Memcache. Тогда пользователи группировались исключительно по странам и сексуальной ориентации, поэтому видели людей сразу со всех городов своей страны. Чтобы сделать сервис более быстрым и гибким, а также расширить функционал, было решено написать специальный демон на С.

    Одной из интересных задач, которые нам предстояло решить, была балансировка количества мужчин и женщин в Spotlight. Во многих городах мужчины по ряду причин гораздо активнее пользуются сервисом, чем девушки. Нужно было сбалансировать соотношение девушек и молодых людей так, чтобы количество первых было не менее 25%. Для этого ввели приглашения бесплатно воспользоваться сервисом.

    На каждой странице, где есть Spotlight и текущий пользователь подходит под определенные требования, мы вычисляем количество свободных мест, недостающих до 25%. Если есть нужное количество свободных мест, мы показываем приглашение пользователю женского пола. Трудность задачи состоит в том, что количество приглашений ограничено (мы не можем одновременно всему сайту показать приглашения), к тому же пользователь может раздумывать некоторое время и впоследствии отказаться от услуги.

    Первое, что приходит в голову — проверять при каждом запросе наличие свободных мест. Если они есть, то показывать приглашение. Предположим, что у нас есть 10 мест и мы начинаем приглашать всех подходящих пользователей, которых может оказаться, допустим, 1000 в один момент времени, и все они согласятся. И тогда в следующую минуту пользователи сайта увидят на странице пулеметную очередь из фотографий. Поэтому необходимо вести учет свободных мест и правильно обрабатывать одновременные запросы. Для этого используется Memcache.


    Алгоритм следующий:
    1. При каждом запросе страницы со Spotlight мы получаем список существующих заявок. Берем статистику по количеству пользователей (М\Ж), на основании которой определяем количество возможных бесплатных приглашений.
    2. Если пользователь подходит под определенные критерии, пробуем сразу же занять место в сервисе. Сохраняем не количество свободных, а количество занятых мест, делая инкремент ключа used_slots_<area_id> в Memcache. Таких ключей получается ровно столько, сколько существует доступных округов. Если значение этого ключа больше количества свободных мест, то уменьшаем значение обратно на единицу и не показываем приглашение. Ключ хранится в течение 30 секунд и отвечает, по сути, за частоту балансировки.
    3. Если удалось забронировать место, показываем пользователю приглашение и ставим ему соответствующий флаг в сессию. Ждем решения пользователя.
    4. В случае отказа пользователя делаем декремент.
    Вполне возможна ситуация, когда пользователь закроет страницу, не совершив никакого действия. В этом случае у нас останется выданное, но не реализованное приглашение. Это не представляет никакой проблемы, поскольку балансировка происходит достаточно часто — как только истекает ключ в Memcache.

    Суть сервиса Spotlight как платной услуги заключается в том, чтобы пользователь получил то внимание, за которое заплатил. Чем крупнее населенный пункт, тем больше находится желающих использовать сервис. Но, с другой стороны, выше конкуренция за время, в течение которого фотография пользователя будет находится в самом центре внимания. Сервис не даст фотографии быстро исчезнуть, но и не будет стоять на месте, если заявок слишком мало. Таким образом достигается баланс между потраченными средствами и количеством пользователей, которые смогут найти друг друга и захотят познакомиться.

    Александр Treg Трегер, разработчик Badoo.
    Badoo
    252,00
    Big Dating
    Поделиться публикацией

    Похожие публикации

    Комментарии 64

      +5
      Вообще забавно, как человеческие отношения раскладываются на язык математики / цифр / технологий ;)

      Между тем как это чьи-то радости и печали. Мир меняется…
      • НЛО прилетело и опубликовало эту надпись здесь
          +4
          Это очень похоже на контекстную рекламу :-) Можно по аналогии улучшить и этот сервис и брать деньги за клики. Сделать функцию описывающую прибыльность каждого человека и дискриминировать пользователей, которые приносят меньше $/показ!
            +2
            Лучше не дискриминировать, а поощрять тех кто приносит больше :D
            0
            похожа на advanced мордоленту у мамбы :)
              +1
              Собственно не похожа, а полная копия. Вот я и не понимаю. в чем собственно уникальное достоинство?
                0
                А ты на ленту мамбы смотрел из разных городов или с одного? А из деревни Иваново пробовал? А если ты находишь на одинаково расстоянии до двух городов крупных (деревенька твоя)… гео штуки полезны, на мамбе ты не можешь поискать в окресностях своего города, только точно.
                  0
                  Я чувствую в вашем голосе большое количество экспрессии. Геотаргетинг? Крууууто… Но в чем уникальность? Где тут я должен сказать «Ах!»?

                  Просто столько текста я прочитал в ожидании интересной фичи, а в итоге меня постигло разочарование. Ибо все, что описано, смог бы реализовать даже я — не программист. Простая математика, простой геотаргетинг и все такое.

                  Поэтому статья — простой маркетинг + привлечение посетителей. Увы.
                    0
                    Вы не поверите — в корпоративных блогах все статьи простой маркетинг и привлечение посетителей.
                    0
                    вообще-то на мамбе можно поискать в окрестностях своего города. опция «кто рядом» в поиске.
                +3
                Как раньше без интернета люди находились, ума не приложу
                  +1
                  Первый раз я женился — знакомились по LAN мессенжеру (10 лет прожили :) ), второй раз — по Skype знакомились :P

                  Ох мир… Но женщины все замечательные. Просто old-shashion way уже не так хоршо работает — ограничивает пространство и круг поиска ;)
                    0
                    p.s. fashion :) иногда автозамена на маке приносит сюрпризы…
                      0
                      Возможно. Печаль в том что люди перестают видеться в живую. Я даже не про свою вторую половину, а про друзей, знакомых. Все общение становиться виртуальным. Но вирт не замена тактильным ощущениям.
                        0
                        Не думаю. Даже наоборот — намного лучше стало.

                        Что такое общение в обычной жизни? Гости / чай / кофе / покрепче / рестораны / спорт совместный (из всего разве что последнее реально хорошо)

                        Зато если постоянно поддерживать контакт в онлайне, можно 2-3 раза в году собираться с интересными тебе люьми (по настоящему интересными) и вместе где-то оттягиваться (для меня это Альпы, Колорадо горы, путешествия)…

                        Вон с одним товарищем (не видел его полгода но переписываемся на фейсбуке) забили стрелку в ГонКонге или Шанхае и весело оттянемся ;)
                    0
                    Я повторяю свой вопрос, заданный в прошлый раз, но обойденный вниманием. Почему, когда я вбиваю у вас любой из своих адресов, показываются результаты? Т.е. вы без моего ведома зарегистрировали несколько аккаунтов «от меня»?
                      0
                      Как удалиться?
                        +2
                        Вы знаете, я может быть заинтересованное лицо — но я ввел в Google «badoo delete account» и тут же первая же страница выдала ссылку на страницу с описанием как это сделать

                        eu1.badoo.com/help/

                        Если емейлы реально ваши — то восстановить пароль не проблема, да? Пришел пароль, зашли, удалились.

                        В чем проблема-то? Вы времени больше потратили на написание комментариев на habrahabr :D
                          0
                          Не к той части фразы вы придрались. Вопрос был скорее откуда они у них? У меня есть второстепенные ящики для регистрации на сервисах, которым я не очень доверяю. При общении я их не использую, т.е. только при регистрации. Насчет удаления — да, есть возможность, тут наверно я перегнул палку
                            0
                            Ну нету в badoo регистрации мертвых ящиков ;) Зачем систему нагружать мертвым шлаком-то?

                            Возможно, где-то все же вы засветили ваш ящик.

                            Например — есть очень нехорошие люди, которые заводят ботов делать свои грязные дела. Проблема ботов — всемирная и актуальная для всех проектов.

                            Ботов регят как раз на «левые» адреса, которые как раз могут брать из баз продаваемых спамерами (которые воруются как раз из всяких форумов / регистраций на сайтах. а зачастую даже не воруются а сливаются владельцами).

                            Бороться — боремся, но борьба эта будет вечной — AI все умнеют, ботоводы — тоже. Правда и мы умнеем ;)))
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                Ну почему-же, я выше описал… Ботоводы например — слили где-то базу регистраций и регят поддельные аккаунты.
                                  0
                                  Я про Badoo узнал с хабра. И проверил вообще случайно
                                    0
                                    Вы свой вопрос сами перечитайте… из него ничего не понятно, кто знает и про что. Я так подозреваю, что вы вбиваете ваш ящик в систему — посмотрите кто еще есть на Баду, а там рисуется ваш же емаил и иконка — это не значит что вы есть в баду, это формат отображения. Вбейте емаил адрес того кто точно зарегистрирован, а лучше еще с фоткой, увидите разницу. Это то что вы пытались узнать? Если нет, опишите подробнее что и куда вы забиваете.
                                      0
                                      Я уже удалил, через восстановление.
                                        0
                                        Лютобешенно плюсую!
                            –2
                            Предыдущий коммент: habrahabr.ru/company/badoo/blog/133162/#comment_4420537
                            В службе поддержки молчат
                              +1
                              Поработаю за службу поддержки

                              eu1.badoo.com/help/

                              1) Как удалить мой профиль?
                              Если вы на самом деле хотите удалить ваш профиль на Badoo, войдите в аккаунт и откройте раздел «Настройки». Затем выберите ссылку «Удалить профиль», находящуюся слева и следуйте инструкции. Если вы хотите получить дополнительную информацию, посетите раздел Конфиденциальность.

                              2) Я забыл(а) пароль. Что делать?
                              Всего лишь перейдите по ссылке Забыли пароль? на Войти страницу и следуйте простой инструкции, чтобы восстановить его.
                            +2
                            Мне Badoo запомнился агрессивной саморекламой и регистрацией. Помнится была волна (вроде в facebook), когда все подряд почему-то оказались в этом сервисе зарегистрированы. То ли через какой-то провокационный вопрос, то ли как-то ещё. И я был счастлив, что смог тогда заблокировать его на FB. Так что сейчас даже открывать их сайт не хочу, противно.
                              0
                              Скажите, а по улицам ездить не противно? ТВ смотреть? Радио слушать? ;)

                              Все хотят чтобы не было рекламы — я тоже хочу.

                              Но в данный момент ситуация такая, что реклама — один из механизмов движения человечества вперед, ибо форсирует множество других процессов (в тч напрямую — мировой товарно-денежный оборот)

                              Психология же человека — «хочу все и нахаляву», мы все в той или иной степени этому подвержены ;)
                                +3
                                Нет-нет. Я ни в коем случае не про это. Я про нечистоплотную технологию регистрации всех, кому нормальные люди только спам посылают. :-) Сервисов знакомства много. И остальные не трогают меня до тех пор, пока я хотя бы по банеру по своей воле не нажал. А в Badoo многие не смогли разобраться какие надо выполнить телодвижения не что бы удалить профиль, а что бы профиль перестал спамить!

                                Собственно, погрузиться в эмоциональный фон, оставшийся от первого знакомства с Badoo, рекомендую пойти по ссылке, которая в комментах выше. Там в комментариях очень неплохо заметно какой отклик вызвал этот сервис в период первоначальной раскрутки. Может они уже и изменились, но я сам к ним не пойду и другим не советую.
                                  –1
                                  Вы знаете — я работаю в этой компании (с самого начала).

                                  Можете верить, можете не верить — но ничего нечистоплотного не делалось — все в пределах стандартных методов раскрутки, которые используют почти все интернет проекты крупные на начальных этапах.

                                  Откровенно говоря, достаточно активное продвижение на facebook мне самому не нравилось — возможно это реально на грани для некоторых, но при этом сам по себе сервис уже стольким помог найти вторые половинки (или развлечения временные — каждому свое), что я реально спокойно к этому отношусь.

                                  Только моих знакомых человек 5 познакомились / обженились через Badoo — и хорошо себе живут, детей наживают и тд :)
                                    +3
                                    А может они не хотели детей. Шутка ))
                                      0
                                      Проблему регенерации homo sapiens надо решать ;)))

                                      Учитывая что проект ориентирован в тч на Европу (в которой проблемы с рождаемостью явные) — опять же, работаем на благо человечества :P
                                        0
                                        Хм. Не знал про демографический кризис в Европе. Думал граждане из постсоветского пространства компенсируют недостаток рождаемости
                                          0
                                          Кризис ;(

                                          Европа плавно вымирает фактически.

                                          Граждане-то может и компенсируют, только вот не Россияне к сожалению тоже.

                                          Коэффициент смертности превышает коэффициент рождаемости, особенно для белых / обеспеченных / с образованием.
                                      0
                                      Значит мы оба не в состоянии оценивать объективно: я сужу только по надводной части айсберга, когда Badoo вторгался через fb в моё личное пространство, а вы инсайдер кампании. :-)
                                        0
                                        Разумно ;)

                                        Засим — можно просто попробовать сервис дабы реальное мнение составить.
                                        Да и нет уже суперактивности на фейсбуке, это был один из эпизодов — посмотрели, поняли желания пользователей, подтюнили.
                                          0
                                          Нет потребности с девочками знакомиться — уже трое детей и так есть. А с мальчиками, только если за линукс поговорить, а не в каком-то другом смысле.
                                            0
                                            Badoo — не сайт знакомств в смысле дейтинга — это ошибка многих.

                                            Это в т.ч. общение по интересам, много и «мальчиков» (совсем даже прямой ориентации) там знакомится…

                                            Особенно если в разных странах. Например — занимаешься каким-то спортом, едешь в новую страну — почему не найти в ней сразу людей кто это-же делает? На фейсбуке-то будет намного сложнее.
                                              0
                                              Значит вам есть над чем работать в плане рекламы. Подобная мысль мне в голову не приходила, а деление серверов на гетеросексуальные и другие ещё больше утвердило неоднозначность цели знакомств.

                                              Удачи!
                                                0
                                                Вся жизнь — совершенствование ;)
                                                0
                                                Не в плане критики, а раз уж вы настаиваете на таком позиционировании: какой из сервисов Баду заточен на это? Тот же «Центр внимания» исключительно для знакомств. Как мне быстро найти единомышленников желающих пообщаться на определённую тему?
                                                  0
                                                  Гхм. Вообще-то нажать на поиск…

                                                  eu1.badoo.com/search/

                                                  I want:

                                                  куча идей, можно написать свое (да хоть прыгнуть с парашютом)

                                                  Другой разговор, что все равно большинство людей на любом сайте в итоге хотят далеко не с парашютом прыгать ;)
                                  +1
                                  Присоединяюсь к заминусованным вопросам «какого чёрта меня зарегистрировали». В поиске по адресу электронной почты нахожу все свои три адреса. Но при попытке восстановить пароль — «неверный адрес». Как это понимать?
                                    0
                                    Вы про «one contact found»?

                                    Ну попробуйте ввести любой, совершенно левый адрес (случайный набор символов).

                                    p.s. Паранойя — она до определенных пределов должна быть ;)
                                      +1
                                      А смысл тогда? Что за контакт, который фаунд? Просто выглядит так, что это существующая учётная запись.
                                        –1
                                        Сам не знаю — возможно бага, возможно просто наши не очень удачно написали (а на самом деле просто на этот адрес отправлен запрос) — я уточню по возможности.

                                        Импорт — это не поиск _зарегистрированных_ на badoo, это поиск вообще людей ;)
                                          0
                                          Ок, спасибо за объяснение, стало спокойнее.
                                            0
                                            Тут, к слову, есть социальная проблема. Знаю женщин, которые вводят email`ы своих мужей на сайтах знакомств, чтобы проверить не сидят ли они там. Если уж тут айтишники не видят разницы, то те точно будут считать своё детективное расследование успешным.
                                              +3
                                              Так пусть считают :)

                                              Это же прекрасно! Потом — скандал. Муж показывает что «найден» любой емейл и таким образом железобетонно отмазывается, зато точно уже в курсе что жена его пасти пытается. А на все следующие попытки можно отвечать «ага, это как с баду было?»

                                              p.s. шутка, но в каждой шутке… :)))
                                            0
                                            Страница, которую вы используете предназначена для 2 вещей
                                            — поиск ваших друзей, которые уже зарегистировались на баду
                                            — пригласить ваших друзей, которые еще не зарегистрированы на баду

                                            Фраза «X contact(s) found» — показывает количество контактов, которые вы нам прислали для проверки. Далее эти контакты показываются в списке и если кто-то уже на Баду, он будет иметь статус «Уже на Badoo». Всех остальных вы можете пригласить на сайт.
                                            Вобщем, на Баду зарегистрированы только те контакты, у которых в списке указан соответствующий статус.

                                            PS
                                            согласен, текст наверное неудачный
                                              0
                                              Теперь совсем понятно, спасибо!
                                        0
                                        У вас SID в гете, мне ссылочку прислали, я и залогинился.
                                        В саппорт писал — реакция нулевая.
                                          0
                                          Только что перепроверил — не работает. Опубликуйте такую ссылку, посмотрим, сможет ли кто-нибудь кроме вас по ней зайти.
                                            0
                                            Мне собеседница прислала ссылку на чей-то профиль, там был sId в гете — я перешел и увидел, что панель справа не моя
                                            Так же смог зайти в сообщения

                                            Я был залогинен под собой
                                              0
                                              Спасибо за информацию, наш отдел тестирования перепроверит данную возможность.
                                                0
                                                Возможно, вы и ваша собеседница имели одинаковый внешний IP? :)

                                                Во многих движках проверка этим ограничивается (а для всяких AOL-ов, меняющих IP на каждый запрос, приходится и дополнительно их подсети пробивать).

                                                А если еще и User-Agent одинаковый, то я даже и не знаю, как вас технически различить (раз в URL был sid — значит, либо куки выключены, либо это переход по первой ссылке когда с куками ничего еще непонятно).
                                                  0
                                                  ип разный, агент тоже
                                                  есть вероятность, что кука перезаписалась из гета ))
                                                    0
                                                    Ну если там никаких проверок (IP и т.д.) нету — тогда да, явно так и было :)
                                            –4
                                            Найс у вас реклама ребят в вк. Выдавать себя за новый проект Павла Дурова — это так оригинально. Горите в огне :)
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                              0
                                              Хм после часа пользования появился какой-то удаленный друг. Никого не добавлял. Тем более не удалял…
                                                0
                                                Здорово!

                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                Самое читаемое