2. Кто я
• Team Lead/Maddevs.io
• Nambataxi.kg
• Nambafood.kg
• 10 лет опыта(Sysadmin, Python/Go)
• https://github.com/meshbird/meshbird
• https://github.com/maddevsio/ariadna
27. Вытекающие задачи
• Собирать больше треков водителей
• Показывать ближайшие анимированные машины на
главном экране
• Хранить промежуточную стоимость на сервере
• Экономить трафик водителю
• Собирать трек раз в секунду
28. Расходы водителя за смену в Бишкеке
• 550 р бензин
• 200 р еда
• 200 р комиссия
• Средний чек – 100р
52. Как хранить
• В памяти
• R-tree
• Карта с водителями (ключ сессия)
• Карта с водителями (ключ номер борта)
53. Какой алгоритм на бэкенде?
• Получили пакет по UDP
• Получаем водителя со стораджа
• Если нет – получаем с Redis
• Проверяем, есть ли все нужные данные
• Делаем set в сторадже
54. Какой алгоритм на бэкенде?
• Если есть – обновляем
• Если нет – инициализируем LRU для координат
• Обновляем инфу в R-tree
68. Как стало в мобильных приложениях
• Получаем местоположение клиента
• Получаем ближайших водителей с маршрутом
• Анимируем каждую машинку
• Обновляем раз в 15 секунд
73. Самый главный слайд
• UDP+Protobuf для экономии трафика
• In-memory
• R-tree для выдачи ближайших водителей
• LRU cache для хранения последних координат
• OSRM для выравнивания треков на дороге
74. План доклада
• Сбор GPS треков раз в секунду
• Пробки от 2ГИС в Бишкеке
• Прочие инструменты
75. Интеграция с 2ГИС
• https://github.com/paulmach/go.geo
• Расчет расстояния от точки до точки
• Удобно было хранить точки
76. План доклада
• Сбор GPS треков раз в секунду
• Пробки от 2ГИС в Бишкеке
• Прочие инструменты
77. А что есть еще?
• https://github.com/nfleet/via
• https://github.com/hailocab/go-geoindex
• https://github.com/azr/kdtree
• https://github.com/maddevsio/ariadna