Neuimplementierung des Abos
Verfasst: 31.12.2023, 19:32
Auf dem neuen Server gibt es eine Neuimplementierung des Abos. Die Idee ging mir schon lange durch den Kopf, aber es war ein gehöriger Aufwand, da die Standard Renderingsoftware von Open Street Map so etwas nicht unterstützt und ich mir erst meine eigene Version davon basteln mußte. Der deutlichste Vorteil des neuen Abos ist, daß man jetzt sowohl den klassischen RWK Kartenstil als auch den neuen traditionellen Topokartenstil über das Abo herunterladen kann. Evtl. kann das Abo auch auf Zoomlevel 17 erweitert werden, das muß ich mir noch ansehen.
Das alte Abo hat die Kacheln bis Zoomlevel 16 permanent im voraus neu berechnet. Über den Abozugang wurden diese Vorratskacheln dann heruntergeladen, ohne eine Neuberechnung auslösen und den Server für ein paar Stunden damit lahmzulegen. Das hat funktioniert, hatte aber ein paar Nachteile. Der größte war daß es schlecht skaliert, es waren keine Erweiterungen möglich wie Vergrößerung der Karte, Erweiterung um einen Zoomlevel oder Bereitstellung eines zweiten Kartenstils. Das Neuberechnen der Kacheln hat so schon mehr als 2 Monate gedauert, in denen der Server durchgehend am Anschlag war. Und die Festplatte für die Vorratskacheln war auch schon gut voll und konnte keinen zweiten Kartenstil aufnehmen. Die meisten der Vorratskacheln hat dabei natürlich nie jemand abgerufen.
Es schwebte mir schon lange vor, stattdessen zwei Warteschlangen einzurichten. Eine für die Online-User, die möglichst schnell bedient wird, und eine für die Abo-Downloads, die zum Zug kommt wenn die Online-User gerade nichts abfragen. So kann man eine Blockade des Servers durch Massendownloads verhindern, die Abo-Kacheln werden aber bei Bedarf auch neu berechnet und sind "frischer" als mit den Vorratskacheln. Die Rechenkapazität wird für benötigte Kacheln eingesetzt und nicht für welche die nie abgerufen werden. Die Idee ist schon einige Jahre alt, aber leider hat eine Recherche ergeben, daß die OSM Rendersoftware so etwas nicht unterstützt. Es gibt zwar eine Betriebsart "Massendownload", aber in dieser Betriebsart kennt kein Prioritätenmanagement.
Für die Neuimplementierung durfte ich also das Apache-Modul für die Auslieferung von Tiles umbasteln und selbst bauen. Dabei habe ich die Logik und Prioritäten des Massenmodus für meine Bedürfnisse umgestellt. (Gemäß der GPL kann ich meine Version von mod_tile gerne zur Verfügung stellen, den meisten Anwendern wird sie aber nichts bringen, da der alte Massenmodus dabei entfernt/überschrieben wurde.) Jetzt hat der Renderserver folgende drei Prioritäten:
1. Erst- oder Neuberechnung für Online-User. Neu berechnet werden Kacheln, die älter sind als der letzte Datenbank-Import (ca. alle 4 Tage)
2. Erst- oder Neuberechnung für aktive Abos. Neu berechnet werden Kacheln, die älter sind als 30 Tage. (Dieser Wert kann je nach Erfahrung noch angepaßt werden).
3. Neuberechnung von Hintergrundkacheln nach dem Import. Die Zoomlevel bis Zoom 12 werden direkt nach dem Import in der Nacht neu berechnet, für DACH auch bis Zoom 13.
Für die beiden Kartenstile gibt es zwei unterschiedliche Abo URLs, mehr dazu auf der Abo-Seite.
Jetzt hoffe ich daß das Ganze reibungslos funktioniert und muß mal beobachten wie es sich in der Praxis verhält. Ich hoffe daß dann noch weitere Verbesserungen wie ein weiterer Zoomlevel im Abo oder frischere Abo-Kacheln drin sind.
Das alte Abo hat die Kacheln bis Zoomlevel 16 permanent im voraus neu berechnet. Über den Abozugang wurden diese Vorratskacheln dann heruntergeladen, ohne eine Neuberechnung auslösen und den Server für ein paar Stunden damit lahmzulegen. Das hat funktioniert, hatte aber ein paar Nachteile. Der größte war daß es schlecht skaliert, es waren keine Erweiterungen möglich wie Vergrößerung der Karte, Erweiterung um einen Zoomlevel oder Bereitstellung eines zweiten Kartenstils. Das Neuberechnen der Kacheln hat so schon mehr als 2 Monate gedauert, in denen der Server durchgehend am Anschlag war. Und die Festplatte für die Vorratskacheln war auch schon gut voll und konnte keinen zweiten Kartenstil aufnehmen. Die meisten der Vorratskacheln hat dabei natürlich nie jemand abgerufen.
Es schwebte mir schon lange vor, stattdessen zwei Warteschlangen einzurichten. Eine für die Online-User, die möglichst schnell bedient wird, und eine für die Abo-Downloads, die zum Zug kommt wenn die Online-User gerade nichts abfragen. So kann man eine Blockade des Servers durch Massendownloads verhindern, die Abo-Kacheln werden aber bei Bedarf auch neu berechnet und sind "frischer" als mit den Vorratskacheln. Die Rechenkapazität wird für benötigte Kacheln eingesetzt und nicht für welche die nie abgerufen werden. Die Idee ist schon einige Jahre alt, aber leider hat eine Recherche ergeben, daß die OSM Rendersoftware so etwas nicht unterstützt. Es gibt zwar eine Betriebsart "Massendownload", aber in dieser Betriebsart kennt kein Prioritätenmanagement.
Für die Neuimplementierung durfte ich also das Apache-Modul für die Auslieferung von Tiles umbasteln und selbst bauen. Dabei habe ich die Logik und Prioritäten des Massenmodus für meine Bedürfnisse umgestellt. (Gemäß der GPL kann ich meine Version von mod_tile gerne zur Verfügung stellen, den meisten Anwendern wird sie aber nichts bringen, da der alte Massenmodus dabei entfernt/überschrieben wurde.) Jetzt hat der Renderserver folgende drei Prioritäten:
1. Erst- oder Neuberechnung für Online-User. Neu berechnet werden Kacheln, die älter sind als der letzte Datenbank-Import (ca. alle 4 Tage)
2. Erst- oder Neuberechnung für aktive Abos. Neu berechnet werden Kacheln, die älter sind als 30 Tage. (Dieser Wert kann je nach Erfahrung noch angepaßt werden).
3. Neuberechnung von Hintergrundkacheln nach dem Import. Die Zoomlevel bis Zoom 12 werden direkt nach dem Import in der Nacht neu berechnet, für DACH auch bis Zoom 13.
Für die beiden Kartenstile gibt es zwei unterschiedliche Abo URLs, mehr dazu auf der Abo-Seite.
Jetzt hoffe ich daß das Ganze reibungslos funktioniert und muß mal beobachten wie es sich in der Praxis verhält. Ich hoffe daß dann noch weitere Verbesserungen wie ein weiterer Zoomlevel im Abo oder frischere Abo-Kacheln drin sind.