TurtleEggs

From CommonMap

Jump to: navigation, search
development
name
TurtleEggs
related projects
cmarender,TurtleEggs tracker


TurtleEggs is a project name of a global scale map image tile serving grid realized by p2p network among contributors' PC. It reduces central server's scale and data transfer costs very much.

Contents

CommonMap doesn't have large servers like OpenStreetMap

Image:OpenStreetMap Network.png

The above is a OpenStreetMap's Network graph. There are 3 client groups; editors, renderers and users. The server machines are assigned for the 3 groups. They runs 6 powerful servers.

On the other hand, CommonMap cannot run so many servers because the fund and budget are much smaller than OpenStreetMap. CommonMap needs to select distributed computing models, such as tiles@home.

tiles@home succeeds to distribute CPU and memory. It serves the richest map tile images. However, it has a disadvantage. A client makes the new rendered map tiles, uploads the new map tiles and deletes the tiles after uploading. ??? Why does it delete the original tiles? Why doesn't it serve the tiles from the PC?

TurtleEggs

Serving the tiles from a PC is impossible? No. Each P2P network's peers serves information from a general PC. TurtleEggs project is one of such P2P distribution network for map tile images.

Image:TurtleEggs Network.png

The above is the TurtleEggs Network. TurtleEggs network needs one tracking server that recodes which peers have the newest tile. When someone ask to TurtleEggs tracker, it responses a URL of the tile on a peer. This process is implemented by http location header. When a general web browser receives the response, it reconnects to the specified URL and get the tile file.

This is screenshot of firefox showing a page accessing TurtleEggs Tracker. The bottom page is a SlippyMap using the TurtleEggs tracker as the tile server. It shows 2 map tiles on the same page, but the left one is redirected to http://128.195.55.249:3867/tile/10/943/593 and the right one is redirected to http://127.0.0.1:3697/tile/10/944/593 . Both of them are served by TurtleEggs.

TurtleEggs peers are a simple http server. It responses only the requested tiles. TurtleEggs peers worked with a render or a browser program. For the renderer case (it would be cmarender), renderer doesn't upload the tiles. Instead of it, the renderer requests the TurtleEggs tracker to update the tracking data. By the request, a tile server are going to download the newest tiles from the peer. If the download is success, the tracker update the recode as the peer is newest tile holder.

When a peer is closed, the peer sends a request for closing. If all the tile holders are closed, the tile is served from the tile server. So the tile server prepare for all the newest tiles.

If the tile server holds all the tiles, it means TurtleEggs doesn't reduce the costs for storage? Yes. If TurtleEggs successes to reduces the output stream from the server, CommonMap can see other option for the storage, for example using Amazon S3. Amazon S3 costs lower than any other network storage providers but it costs for output stream. Reducing the output stream means reducing the cost.

Development phase

The code name is taken from name of map turtles

phase 0 (false map) HERE!
  • Distributing map tiles among cmarender.
  • Full web browsers can use TurtleEggs.
  • Dividable tile servers.
phase 1 (common map) the illustrated state
  • Distributing map tiles among cmarender and TurtleEggs browser
  • Place Tunnel proxy one on each regions of Earth.
phase 2
  • Developing TurtleEggs proxy tile servers.
  • TurtleEggs for node data using JOSM plugin?
phase 3

For developers and managers

  • There is a developmental pages for TurtleEggs on TurtleEggs
Personal tools