[JT] Jochen Topf's Blog
Fri 2012-06-29 11:16

Tile Server Software

Nearly everybody setting up an OSM tile server uses either the Apache/mod_tile/renderd or the Apache/mod_tile/Tirex combination. The renderd software has been around for while. When we needed something more flexible two years ago, Frederik Ramm and I created Tirex. To keep the development work needed small and make it easier to switch from renderd, Tirex uses the same Apache/mod_tile frontend as renderd. We had plans to add different frontends, but they never materialized. Apache/mod_tile is difficult to configure and not very flexible, but it does its job well enough. I wrote a proof-of-concept frontend using node.js, but that was never taken up either.

There are lots of small issues, but both the renderd and the Tirex systems work reasonably well. But they both have one big problem: They only work on a single host. Tirex has some support for running it on several systems that are each responsible for only part of the tiles and then sync tiles to other servers for backup. But this is a far cry from a system that is really distributed. When designing the Tirex system we knew about this problem, but decided that it would take too many development resources to build a really distributed system and we could live without it for the time being. But OSM has grown in the meantime and for the Multilingual Maps project that has to run “Wikipedia scale” it is obvious that a system that runs on a single hosts only will not do.

One option would, of course, be to extend Tirex. But currently I am looking at another option: When MapQuest started supporting OpenStreetMap they needed a distributed tile server. Not finding anything out there they decided to write their own. Their MapQuest Render Stack was released as Open Source in February 2012. There is barely any documentation, but there are about 20,000 lines of clean C++ source code (even with some comments!) plus some python code. The software has a very nice distributed design without any single point of failure (using ZeroMQ). After fighting my way through the autoconf mess and with a lot of help from Matt Amos, the principal author, I got it to run. There is still a lot I don’t know about this software, but it looks promising as a base for the Multilingual Maps project.

Comments can be directed to the Multilingual maps wiki page.

Tags: multilingual maps · openstreetmap · rendering