DE:
Gestern habe ich es geschafft das "RisingMapBackend" mit meinem code aus dem Prototypen zum laufen zu bringen. Ich habe den output gestern nicht mehr geprüft aber es hat ca. 500MB Kartenmaterial erzeugt aus meinen lokalen Dateien (Alle Zoomstufen von 0 bis 4, wobei 4 Ausgangsstufe ist). Das aktuelle Prozessmanagement gefällt mir noch nicht und ich werde dies als nächstes überarbeiten. Aktuell gibt es einen Master Prozess der für jedes Kartenteil einen eigenen Kindprozess für die Verarbeitung startet, bis zu 10 gleichzeitig. Da aber die einzelnen Prozesse so schnell sind, erzeugt diese einen ziemlichen overhead und ich werde den Master so ändern, das er eine feste Anzahl an MapRenderern startet was man in der Konfigurationsdatei einstellen kann. Der Master wird dann die ankommenden Kartendaten einfach in rotation an die Renderer senden. (Der Master speichert die roh-map files lokal, sendet dem Renderer die Koordinaten und den Dateinamen (hash des inhalts) und der Renderer löscht die Datei nach dem bearbeiten wieder)
Der FakeAPIClient macht jetzt beim ersten start eine vollständige Synchronisation und überwacht dann den map Ordner auf Änderungen. Das Funktioniert soweit einwandfrei.
Der FakeAPIServer muss sich jetzt nur noch die aktuellen Kartendaten merken, damit er auch nach einem neustart den aktuellen Stand aller MapTiles kennt und nicht bei einer vollständigen synchronisation zum Beispiel schon vorhandene neuere Kartenteile überschreibt.
EN:
Yesterday i had some time and managed to get the "RisingMapBackend" running with my prototype code. I did not check the results yet but it generated ~ 500MB map data out of my local map files (all zoom levels from 0 to 4 where 4 is origin map tile). I don't like my current process management of the backend and will change it next. Currently there is a master process that spawns a child which computes a single tile and then exits for each tile. Up to 10 processes spawn at the same time but the single process of one tile is so fast that creating a new child on every tile is a huge overhead. I will change the master to spawn a fixed number of childs that can be set in the config file. Then the master will rotate the incoming map tiles to the childs via IPC. (the master saves the file locally, the child takes coordinates and map file name and deletes the file after computing).
The FakeAPIClient now makes a fullsync at first startup and then watches the map directory, this is working fine.
The FakeAPIServer now has to remember all current map data, so that he in case of a restart can reload them. The map-tile-data is needed in case some client sends a fullsync with older map tiles then someone else already uploaded.