539
edits
No edit summary |
No edit summary |
||
| Line 15: | Line 15: | ||
== Aankondiging == | == Aankondiging == | ||
In het verlengde van FSweekend gaan we een aantal ideeën testen hoe we osm2city landschap met terrasync kunnen verspreiden. Als eerste stap heb ik net een map toegevoegd met als titel Objects_1 waarin de gebouwen van osm2city voor e005n46 tot e010n48. Mensen die de fgfs geïntegreerde terrasync gebruiken zullen (nog) geen verschil opmerken. Bij het gebruik van terrasync. py moet je merken dat bestanden in die mappen worden gedownload, maar ze verschijnen (nog) niet in het landschap. Waarschijnlijk gooien we sommige of alle bestanden in die directory weg zonder voorafgaande kennisgeving, dus vertrouw er niet op en maak geen back-upkopieën. Torsten | In het verlengde van FSweekend gaan we een aantal ideeën testen hoe we osm2city landschap met terrasync kunnen verspreiden. Als eerste stap heb ik net een map toegevoegd met als titel Objects_1 waarin de gebouwen van osm2city voor e005n46 tot e010n48. Mensen die de fgfs geïntegreerde terrasync gebruiken zullen (nog) geen verschil opmerken. Bij het gebruik van terrasync. py moet je merken dat bestanden in die mappen worden gedownload, maar ze verschijnen (nog) niet in het landschap. Waarschijnlijk gooien we sommige of alle bestanden in die directory weg zonder voorafgaande kennisgeving, dus vertrouw er niet op en maak geen back-upkopieën. Torsten http://wiki.flightgear.org/TerraSync#cite_note-1 | ||
== Nieuws == | == Nieuws == | ||
Terrasync is begonnen als een op zichzelf staand rsync-gebaseerd hulpprogramma. Er lijken echter geen goede/robuuste multiplatform bibliotheken beschikbaar te zijn voor ons gebruik. We wilden terrasync direct in de kerncode inbouwen, zodat we het downloaden van tegels (Engels=tiles) beter konden sturen en deze vervolgens direct in de sim laden (versus heeft soms geen zichtbaar gevolg in tegels of een gedeeltelijke vulling van tegels als een extern gereedschap rsync liep). | Terrasync is begonnen als een op zichzelf staand rsync-gebaseerd hulpprogramma. Er lijken echter geen goede/robuuste multiplatform bibliotheken beschikbaar te zijn voor ons gebruik. We wilden terrasync direct in de kerncode inbouwen, zodat we het downloaden van tegels (Engels=tiles) beter konden sturen en deze vervolgens direct in de sim laden (versus heeft soms geen zichtbaar gevolg in tegels of een gedeeltelijke vulling van tegels als een extern gereedschap rsync liep). http://wiki.flightgear.org/TerraSync#cite_note-2 | ||
Zoals sommigen van u waarschijnlijk hebben gemerkt, zijn er ontwikkelingen in de terrasync hoek op het gebied van codering, meestal door James en soms door Torsten. De belangrijkste reden is het protocol om landschap te distribueren nuiet meer via SVN te laten plaatsvinden, maar gemakkelijker te implementeren protocollen in te zetten. Het idee is om HTTP te gebruiken als middel om de bestanden te downloaden die terrasync nodig heeft. Dit zou het veel gemakkelijker moeten maken voor "hosts" om een "mirror" in te zetten, het maakt het waarschijnlijk ook mogelijk om een CDN te gebruiken voor load balancing met positieve gevolgen voor de "client". | Zoals sommigen van u waarschijnlijk hebben gemerkt, zijn er ontwikkelingen in de terrasync hoek op het gebied van codering, meestal door James en soms door Torsten. De belangrijkste reden is het protocol om landschap te distribueren nuiet meer via SVN te laten plaatsvinden, maar gemakkelijker te implementeren protocollen in te zetten. Het idee is om HTTP te gebruiken als middel om de bestanden te downloaden die terrasync nodig heeft. Dit zou het veel gemakkelijker moeten maken voor "hosts" om een "mirror" in te zetten, het maakt het waarschijnlijk ook mogelijk om een CDN te gebruiken voor load balancing met positieve gevolgen voor de "client". | ||
De bedoeling is om, zodra 2016.1 is uitgebracht, over te stappen op HTTP voor TerraSync (in plaats van SVN), omdat dit veel meer mogelijkheden geeft om de code te verspreiden. De cache bestanden zijn klein en weerspiegelen de revisie van elk bestand in de lokale map; ze zijn vergelijkbaar met de gegevens die een echte SVN client opslaat in zijn svn' directory in de root-file. Ik verwacht dat de zuivere HTTP-oplossing enkele gelijkaardige bestanden nodig heeft om de HTTP cache-blokken van bestanden die het downloadt op te slaan - één bestand in de hoofdmap van de structuur of per directory. (Er zijn voordelen en nadelen voor beide.) | De bedoeling is om, zodra 2016.1 is uitgebracht, over te stappen op HTTP voor TerraSync (in plaats van SVN), omdat dit veel meer mogelijkheden geeft om de code te verspreiden. De cache bestanden zijn klein en weerspiegelen de revisie van elk bestand in de lokale map; ze zijn vergelijkbaar met de gegevens die een echte SVN client opslaat in zijn svn' directory in de root-file. Ik verwacht dat de zuivere HTTP-oplossing enkele gelijkaardige bestanden nodig heeft om de HTTP cache-blokken van bestanden die het downloadt op te slaan - één bestand in de hoofdmap van de structuur of per directory. (Er zijn voordelen en nadelen voor beide.) http://wiki.flightgear.org/TerraSync#cite_note-3 | ||
* ondersteuning van de verschillende mogelijkheden in de code zou heel alstig worden, dus de intentie is om alleen de HTTP-methode direct in FlightGear te ondersteunen, ook bekend als 'ingebouwde terrasync' | * ondersteuning van de verschillende mogelijkheden in de code zou heel alstig worden, dus de intentie is om alleen de HTTP-methode direct in FlightGear te ondersteunen, ook bekend als 'ingebouwde terrasync' | ||
| Line 29: | Line 29: | ||
Het overschakelen naar een andere server, zelfs binnen dezelfde FG-sessie, is ook mogelijk en zorgt er ook nu voor dat niet alle eerdere bestanden opnieuw moeten worden gdownload, in tegenstelling tot de SVN-opzet waarbij de server-URL deel uitmaakt van de repositorystructuur. | Het overschakelen naar een andere server, zelfs binnen dezelfde FG-sessie, is ook mogelijk en zorgt er ook nu voor dat niet alle eerdere bestanden opnieuw moeten worden gdownload, in tegenstelling tot de SVN-opzet waarbij de server-URL deel uitmaakt van de repositorystructuur. | ||
* het terrasync /netwerkprotocol/ zal blijven, wat betekent dat u uw eigen externe terrasync systeem kunt schrijven (met gebruik van een breed scala van computertalen, waaronder Python) met behulp van rsync of elk ander mechanisme dat u maar wilt. Mijn hoop is dat dit een goed en onderhoudbaar uitgangspunt biedt voor zeer gevorderde gebruikers, terwijl het ingebouwde HTTP mechanisme eenvoudig en robuust zal zijn (dankzij het feit dat het op hash gebaseerd is) voor 95% van de gebruikers. | * het terrasync /netwerkprotocol/ zal blijven, wat betekent dat u uw eigen externe terrasync systeem kunt schrijven (met gebruik van een breed scala van computertalen, waaronder Python) met behulp van rsync of elk ander mechanisme dat u maar wilt. Mijn hoop is dat dit een goed en onderhoudbaar uitgangspunt biedt voor zeer gevorderde gebruikers, terwijl het ingebouwde HTTP mechanisme eenvoudig en robuust zal zijn (dankzij het feit dat het op hash gebaseerd is) voor 95% van de gebruikers. http://wiki.flightgear.org/TerraSync#cite_note-4 | ||
We hebben al drie kopieen van het complete landschap online, één bij sourceforge en twee bij private servers. De sourceforge computer ontvangt dagelijks updates van de belangrijkste scenery van http://scenery.flightgear.org/ en alle andere mirrors (computers) halen hun gegevens van de sourceforge server. We besloten de vorige methode, om de klant te vertellen over de dichtstbijzijnde mirror, te laten vallen en in plaats daarvan een webservice (http://scenery.flightgear.org/svn-server) te bevragen ten gunste van het gebruik van een stabielere serviceprovider van het internet: het domeinnaamservice (DNS) systeem. | We hebben al drie kopieen van het complete landschap online, één bij sourceforge en twee bij private servers. De sourceforge computer ontvangt dagelijks updates van de belangrijkste scenery van http://scenery.flightgear.org/ en alle andere mirrors (computers) halen hun gegevens van de sourceforge server. We besloten de vorige methode, om de klant te vertellen over de dichtstbijzijnde mirror, te laten vallen en in plaats daarvan een webservice (http://scenery.flightgear.org/svn-server) te bevragen ten gunste van het gebruik van een stabielere serviceprovider van het internet: het domeinnaamservice (DNS) systeem. De fgfs client zal een resource record (RR) type NAPTR (network authority pointerhttps://en.wikipedia.org/wiki/NAPTR_record) bevragen voor de dns naam terrasync.flightgear.org en de gegevens analyseren om de beste terrasync mirror te vinden. Deze gegevens zijn al geconfigureerd en kunnen hier worden bekeken: https://toolbox.googleapps.com/apps/dig/#ANY/terrasync.flightgear.org. | ||
Deze techniek zou ons in staat moeten stellen om veschillende scenery's aan te bieden, uiteindelijk zelfs voor delen van de wereld en dat op een manier die beduidend eenvoudiger zal zijn dan bij SVN het geval zou zijn geweest. Het bespaart ook vele gigabytes op de scenery mirror, omdat niet alle 50.000+ beschikbare revisies continue beschikbaar hoeven te zijn. Ik zal de komende dagen beginnen met het toevoegen van de vereiste code zodat de nieuwe opzet hopelijk voor de 2016.2 release gereed zal zijn. Ik zal een bericht zenden wanneer ik de schakelaar omzet om de nieuwe versie van terrasync in te schakelen. In de tussentijd ziet u mogelijk een aantal "build"fouten of andere hickups van het systeem. Ik beloof u dat ik die fouten zo snel mogelijk op zal lossen. Als u terrafs gebruikt, ontvangt u al uw gegevens van de nieuwe http mirror, hoewel u geen gebruik maakt van de DNS-dienst resolver.http://wiki.flightgear.org/TerraSync#cite_note-5. | |||
De http download methode zal goeddeels op dezelfde manier werken als voorheen, maar nu worden alleen de (eventuele) gewijzigde bestanden gedownload. De svn methode vereist 2x de werkelijke ruimte op de harde schijf als gevolg van de manier waarop svn werkt. Gewoonlijk vereist Git dat je elke versie die ooit is gemaakt downloadt om de nieuwste kopie te krijgen (er zijn werk omwegen voor het geval je gewoon de meest recente versie wilt.) Dus het eindresultaat voor de gemiddelde gebruiker die gewoon wil downloaden om de scenery te gebruiken is dat de http methode in het algemeen sneller en eenvoudiger zal zijn. Het vereenvoudigt ook de code binnen FlightGear behoorlijk en moet de synchronisatie robuuster maken. Zoals eerder gezegd, moet het de taak vereenvoudigen om een scenery mirror op te zetten voor degenen die dat willen. Net als voorheen hebben power users meerdere opties voor het updaten van scenery of mixen en samenvoegen met vhttp://wiki.flightgear.org/TerraSync#cite_note-6erschillende bronnen als ze dat willen. | |||
De techniek van de http repository is veel eenvoudiger dan die van de svn repository en het zal vrij eenvoudig zijn om een lokale mirror op te zetten of stukjes data te downloaden. Met enige nog te ontwikkelen scriptcode (python bijvoorbeeld) is het niet nodig om bestaande data opnieuw te downloaden. Ik weet niet hoe terramaster werkt, maar ik weet zeker dat het gemakkelijk zal zijn aan te passen aan de nieuwe http toegangsmethode. http://wiki.flightgear.org/TerraSync#cite_note-7 | |||
Het doel is om SVN volledig af te stoten en alleen nog de HTTP repository te gebruiken. Ik zou dat doel het liest z.s.m. willen bereiken, omdat we op dit moment twee single-points of failure hebben voor de SVN-service. De eerste is de webdienst http://scenery.flightgear.org/svn-service (draait op een private webserver) en de tweede is de enige SVN-server beschikbaar voor publieke toegang, ook gehost op een private server. Als een van beide wegvalt, is de SVN-terrasync dood. Ik heb geleerd dat het een slecht idee is om niet te voorzien in een terugvalmechanisme. http://wiki.flightgear.org/TerraSync#cite_note-8 | |||
Torsten zond een patch naar SimGear en voegde een aantal debugberichten in de verdachte lus. (ze verschijnen alleen met "--log-level=debug" - voeg ook --log-classe=terrasync toe om de output enigszins beperkt te houden) http://wiki.flightgear.org/TerraSync#cite_note-9 | |||
We hebben nu C++ en Python referentievoorbeelden, beide hopelijk gemakkelijk te gebruiken. De C++ tool vind je hier: https://sourceforge.net/p/flightgear/simgear/ci/next/tree/simgear/io/http_repo_sync.cxx Ook hier zijn verbeteringen welkom. http://wiki.flightgear.org/TerraSync#cite_note-10 | |||
References | |||
Jump up ↑ Torsten Dreyer (Nov 7th, 2016). [Flightgear-devel] ATTN: terrasync changes . | |||
Jump up ↑ Curtis Olson (May 3rd, 2016). Re: [Flightgear-devel] The future of terrasync. | |||
Jump up ↑ James Turner (Jan 14th, 2016). Re: [Flightgear-devel] Launcher changes for 3.8. | |||
Jump up ↑ James Turner (May 4th, 2016). Re: [Flightgear-devel] The future of terrasync. | |||
Jump up ↑ Torsten Dreyer (May 2nd, 2016). [Flightgear-devel] The future of terrasync. | |||
Jump up ↑ Curtis Olson (May 4th, 2016). Re: [Flightgear-devel] The future of terrasync. | |||
Jump up ↑ Torsten Dreyer (May 4th, 2016). Re: [Flightgear-devel] The future of terrasync. | |||
Jump up ↑ Torsten Dreyer (May 4th, 2016). Re: [Flightgear-devel] The future of terrasync. | |||
Jump up ↑ Torsten Dreyer (May 4th, 2016). Re: [Flightgear-devel] FW: The future of terrasync. | |||
Jump up ↑ James Turner (May 5th, 2016). Re: [Flightgear-devel] The future of terrasync. | |||
edits