Skip to content
Alexandre Jacquin edited this page Dec 3, 2019 · 5 revisions

Navitia Architecture

navitia's simplified architecture

The full version: navitia's architecture

sources

Overview

Navitia is made up multiple components, some are in this repository, some are in others. In this repository we have core services of navitia:

Tyr

Tyr is the webservice used as backoffice for navitia, it handles a lot of things. It is not made to be exposed on internet as there no authentication on it.

It main features are:

  • Users registration
  • Coverages configuration
  • Managing data integration

Tyr manage data integration in tyr but also on mimirsbrunn.

ED

ED is the Data integration subsystem, while Tyr manage the data integration, ED is responsible for doing it. ED is composed of two databases and a few binaries.

The two database use PosgtreSQL with the PostGIS extension. The cities database only contains administrative regions (mostly cities) of the area covered by the services. There is one ED database per navitia's coverage, it contains all theorical data for it:

  • Public transport topology and schedules
  • Geographical data for the coverage such as administrative regions, ways and POIs.

The main binaries are:

  • cities: reads an osm.pbf file to fill the cities database
  • fusio2ed: reads a NTFS to fill the ED database
  • gtfs2ed: reads a gtfs to fill the ED database
  • osm2ed: reads a osm.pbf to fill the ED database
  • ed2nav: reads the ED and cities database to build a data.nav.lz4 that will be read by kraken

These binaries are executed by tyr, and as such must be installed in the PATH of the user executing tyr-worker

Kraken

Kraken is the core of the system. It is in charge of the coverage's data. Kraken provides these functionalities:

  • journey planning for public transport and street network
  • autocompletion
  • schedules
  • data referential
  • disruptions

More technicals details can be found here

Jormungandr

Jormungandr is the front web services, it provides every functionality of Navitia to the outside world. It handles authentication, authorisation and other boring stuff. It has to choose the best backend for every call, in most case there is only one: kraken.