Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)
"Геолокация в Badoo", Андрей Воликов (Badoo)
-
Upload
badoo-development -
Category
Technology
-
view
13.419 -
download
4
Transcript of "Геолокация в Badoo", Андрей Воликов (Badoo)
![Page 1: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/1.jpg)
Использование геолокациив Badoo
Андрей Воликов 17.06.2016
![Page 2: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/2.jpg)
Badoo это:
66
80
300Mпользователей
200стран
300инженеров
8075%мобильные приложения
![Page 3: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/3.jpg)
Почему тема важна для вас:
✦ Узнаете какие возникают проблемы при работе с геоданными
✦ Мы - делали ошибки, вы - сможете их избежать
✦ Геолокация - это интересно!
![Page 4: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/4.jpg)
Каков план:
✦ Проблемы добычи координат
✦ Проблемы хранения и обработки координат
✦ Использование геолокации на примере наших фич
![Page 5: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/5.jpg)
Проблемы добычи координат
![Page 6: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/6.jpg)
Что такое геопозиция
✦ latitude
✦ longitude
✦ altitude
✦ accuracy
![Page 7: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/7.jpg)
Как добыть координаты
✦ Источников много: gps, wifi, gsm
✦ Мобильные платформы сделали все за нас?
![Page 8: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/8.jpg)
Проблема: уговорить пользователей
20%молчуны
25%web 55%
присылают координаты
![Page 9: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/9.jpg)
Проблема: жор батареи
![Page 10: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/10.jpg)
Проблема: все врут
✦ Недостаточно точные координаты
✦ Слишком частые координат
✦ Координаты из будущего✦ Координаты из прошлого
✦ Невалидные координаты✦ Подозрительные
координаты
![Page 11: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/11.jpg)
Проблема: разные платформы
✦ Жесткий контроль
✦ Frequent locations
✦ 200 координат в день
✦ Свобода для программиста
✦ Зоопарк
✦ 475 координат в день
✦ 185 координат в день ✦ 0.03 координаты в день
![Page 12: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/12.jpg)
2 700 000 000точек в день
Результат: обрабатываем
![Page 13: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/13.jpg)
Проблемы хранения и обработки координат
![Page 14: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/14.jpg)
Проблема: координаты устаревают
![Page 15: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/15.jpg)
Проблема: неравномерное распределение
![Page 16: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/16.jpg)
Проблема: высокая нагрузка
![Page 17: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/17.jpg)
Простое решение: глобус
✦ Разные по площади элементы
✦ Поиск на границах областей не дает нужных результатов
✦ Не решает проблемы неравномерного распределения
✦ Сложно решать проблемы нагрузки на одну ноду
![Page 18: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/18.jpg)
Рабочее решение: триангуляция
✦ Одинаковые по площади элементы
✦ Решает проблему поиска на границах разбиения
✦ Не решает проблемы неравномерного распределения
✦ Cложно решать проблемы нагрузки на один треугольник
![Page 19: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/19.jpg)
Оптимальное решение: Google S2
✦ Используется Google, Foursquare, Uber
✦ Иерархическая модель - возможность объединения ячеек в кластера
✦ Каждый квадратный сантиметр может быть представлен в виде int 64
✦ Разбиение Земли на одинаковые по площади куски
✦ Библиотеки для всех популярных языков
![Page 20: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/20.jpg)
Примеры использования геолокации
![Page 21: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/21.jpg)
Задачи:
✦ Определить город по координатам
✦ Система пересечений пользователей
![Page 22: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/22.jpg)
Определить город по координатам
![Page 23: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/23.jpg)
Нужна база центров городов и контуров
✦ Скачать бесплатно
✦ Купить (25$ - 1500$)
✦ Купить и допиливать ($$)
● Ручная модерация● Open street map
● Google maps150 000
Городов с контурами
![Page 24: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/24.jpg)
Стратегия определения города
✦ Проверяем попадают ли координаты внутрь какого-нибудь контура
✦ Ищем ближайшую границу города
✦ Ищем ближайший центр города
![Page 25: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/25.jpg)
Пересеченияпользователи находились на расстоянии 50 метров в интервале времени не более 5 минут
![Page 26: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/26.jpg)
✦ Список пересечений за 48 часов✦ Храним все пересечения за 90
дней
![Page 27: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/27.jpg)
Как это сделать?
✦ Подготовка координат
✦ Доставка координат в демон
✦ Обработка в демоне
✦ Сохраняем в хранилище
✦ Актуализируем данные
✦ Удаляем старые пересечения
![Page 28: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/28.jpg)
Обработка координат
PHP
Filter QueueInterpolation PHP
PHP
Daemon
![Page 29: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/29.jpg)
Daemon
PHP
PHP
Queue In
Queue Out
Processor
GC
Filter
![Page 30: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/30.jpg)
Храним пересечения в базе
✦ Поддерживаем много пересечений для пары пользователей
✦ Сохраняем все пересечения, показываем только интересные
✦ Eventual consistency
✦ Постепенно чистим старые записи
![Page 31: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/31.jpg)
Результат: создаем
250 000 000пересечений в день
![Page 32: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/32.jpg)
✦ Теперь вы знаете с какими проблемами мы столкнулись и как их решили
✦ Вы сможете обрабатывать миллиарды координат если правильно подготовитесь
✦ Вам будет проще создавать новые, классные геофичи
На посошок:
![Page 33: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/33.jpg)
Ссылки
✦ GeoIndex триангуляция
✦ Google’s S2, geometry on the sphere, cells and Hilbert curve
✦ Google's S2 Library presentation
✦ https://tech.badoo.com/
✦ https://habrahabr.ru/company/badoo/
![Page 34: "Геолокация в Badoo", Андрей Воликов (Badoo)](https://reader034.fdocument.pub/reader034/viewer/2022042723/586f91021a28ab54768b7ac3/html5/thumbnails/34.jpg)
Ой, всё...