PathCraft — это модульный, открытый исходный код, движок маршрутизации, написанный на Go, разработанный для понимания, расширения и развертывания без привязки к поставщику. Он функционирует как многоразовая библиотека, приложение CLI, HTTP-сервер и встраиваемый движок. Основная философия отдает приоритет корректности над сырой производительностью, подчеркивая читаемость и удобство сопровождения благодаря четкой архитектуре. Выбранный технологический стек использует производительность, простоту и возможности параллелизма Go. Структура PathCraft представляет собой модульный монолит, разделяющий код на отдельные модули, такие как /internal, /graph, /osm, /gtfs и /pkg/pathcraft/engine для публичного API. Пешеходный маршрутизатор использует пользовательскую реализацию поиска A* в сочетании с эвристикой расстояния Хаверсина. Маршрутизация общественного транспорта использует алгоритм RAPTOR, работающий непосредственно с данными расписания для эффективного поиска пути. Публичный API движка — это структура Engine, которая координирует процессы маршрутизации, избегая деталей, специфичных для алгоритмов. Принципы разработки включали чистые и детерминированные основные алгоритмы, тестируемость и избежание преждевременной абстракции. PathCraft в настоящее время поддерживает разбор OSM, маршрутизацию A*, интерфейс CLI и прием GTFS. Проект направлен на интеграцию пешеходного + транзитного транспорта, маршрутизацию, зависящую от времени, и бенчмаркинг производительности в будущем. Автор узнал о важности простого старта, инвестирования в инструменты, документирования как практики проектирования, и о том, что управление данными представляет собой самые большие проблемы.
dev.to
Building PathCraft: An Open-Source Routing Engine in Go
Create attached notes ...
