Zephyrnet-logo

Sneller rsync bouwen vanaf Scratch In Go

Datum:

beeld

Voor een snelle bestandsoverdracht tussen twee computers is SCP een prima programma om te gebruiken. Voor complexere, grote of regelmatige back-ups is rsync de beste tool. Het is sneller, efficiënter en bruikbaar in een breder scala van omstandigheden. Ondanks al zijn voordelen vond [Michael Stapelberg] dat het één grote zwakte had: het is een tool geschreven in C. [Michael] is filosofisch gekant tegen programma's die zijn geschreven in C, dus begon hij in plaats daarvan rsync helemaal opnieuw in Go te implementeren.

Het pad van [Michael] om te beslissen om dit project aan te pakken, is ingewikkeld. Zijn ISP heeft onlangs zijn internetverbinding geüpgraded naar 25 Gbit/s, wat betekent dat zijn aangepaste router de bottleneck in zijn netwerk was. Om dat probleem op te lossen migreerde hij zijn router naar een pc met meerdere 25 Gbit/s netwerkkaarten. Om optimaal te profiteren van de snelheid die nu theoretisch beschikbaar is, begon hij een tool genaamd gokrazy te gebruiken, die applicaties die in Go zijn geschreven, in hun eigen apparaat verandert. Dat betekent dat in plaats van een volledige Linux-distributie te installeren om specifieke taken uit te voeren (zoals een router, bijvoorbeeld), het enige dat op de computer wordt geladen in wezen de Linux-kernel, de Go-compiler en -bibliotheken is, en dan de Go-toepassing zelf.

Met een nieuwe router met hardware die deze hoge snelheden kan ondersteunen en alleen software draait die in Go is geschreven, was de laatste stap uiteindelijk het bouwen van rsync om zijn taken op zijn netwerk te ondersteunen. Dit betekende dat rsync zelf helemaal opnieuw moest worden opgebouwd in Go. Toen [Michael] deze laatste taak had voltooid, ontdekte hij dat zijn implementatie van rsync eigenlijk veel sneller is dan de versie die in C is gebouwd, dankzij de modernisering in de Go-taal en het feit dat zijn router niet alle cruft gekoppeld aan een standaard Linux-distributie.

Voor een softwareproject van deze omvang vinden we het stapsgewijze proces van [Michael] de moeite waard om kennis te nemen van elk probleem dat iemand van ons probeert aan te pakken. Niet alleen dat, het refactoren van een fundamentele tool als rsync is een ingewikkelde taak op zich, laat staan ​​het creëren ervan om de netwerksnelheden te verhogen tot boven wat de meesten van ons al als razendsnel zouden beschouwen. We laten een heleboel details over deze build achterwege, dus we raden je zeker aan zijn toespraak in de onderstaande video te bekijken.

Met dank aan [sarinkhan] voor de tip!

[Ingesloten inhoud]

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?