Προγραμματισμός

10 έργα ανοιχτού κώδικα που αποδεικνύουν τη δύναμη του Google Go

Τώρα 10 χρόνια στη φύση, η γλώσσα προγραμματισμού της Google Go έχει σίγουρα κάνει ένα όνομα για την ίδια. Ελαφρύ και γρήγορο στη μεταγλώττιση, το Go έχει προκαλέσει σημαντικό ενδιαφέρον λόγω των γενναιόδωρων βιβλιοθηκών και αφαιρέσεων που διευκολύνουν την ανάπτυξη ταυτόχρονων και κατανεμημένων εφαρμογών (read: cloud).

Αλλά το πραγματικό μέτρο επιτυχίας οποιασδήποτε γλώσσας προγραμματισμού είναι τα έργα που δημιουργούν οι προγραμματιστές με αυτήν. Η Go έχει αποδειχθεί ως πρώτη επιλογή για γρήγορη ανάπτυξη υπηρεσιών δικτύου, έργων υποδομής λογισμικού και συμπαγών και ισχυρών εργαλείων κάθε είδους.

Εδώ είναι 10 αξιοσημείωτα έργα γραμμένα στο Go, πολλά από τα οποία έχουν γίνει πιο διάσημα από τη γλώσσα στην οποία γράφτηκαν. Όλοι τους έχουν σημειώσει σημαντικό σήμα στους αντίστοιχους τομείς τους. Όλα τα έργα που εμφανίζονται εδώ φιλοξενούνται στο GitHub, οπότε είναι εύκολο για τους Go-curious να ρίξουν μια ματιά στον κώδικα Go που τους κάνει να τσεκάρουν.

Λιμενεργάτης

Θα δυσκολευόσασταν να βρεις μια καλύτερη ιστορία επιτυχίας για το Go από το Docker. Σε λίγο περισσότερο από ένα χρόνο, αυτή η τεχνολογία εμπορευματοκιβωτίων λογισμικού έγινε το παιδί της αφίσας για την καταλληλότητα της Go σε μεγάλα, κατανεμημένα έργα λογισμικού. Η ομάδα του Docker άρεσε το Go επειδή προσέφερε πολλά οφέλη: στατική συλλογή χωρίς εξαρτήσεις, μια ισχυρή τυπική βιβλιοθήκη, ένα πλήρες περιβάλλον ανάπτυξης και την ικανότητα δημιουργίας πολλαπλών αρχιτεκτονικών με ελάχιστη ταλαιπωρία.

Kubernetes

Εάν το Docker είναι γραμμένο στο Go, είναι λογικό ότι άλλα σημαντικά έργα κοντέινερ προσανατολισμένα στο cloud θα γράφονταν επίσης στο Go. Το Kubernetes, το έργο ενορχήστρωσης κοντέινερ της Google, είναι ένα έργο Go, όπως και τα περισσότερα από τα υποσυστήματα και το οικοσύστημα Kubernetes. Περίπτωση: Το εξαιρετικά ελαφρύ spin-off Kubernetes, k3s, για άτομα που χρειάζονται μόνο τα βασικά στοιχεία του Kubernetes και όχι περισσότερο.

Η Google σκέφτηκε να γράψει Kubernetes σε άλλες γλώσσες, συμπεριλαμβανομένων των C / C ++, Java και Python. Αλλά σύμφωνα με τον Joe Beda, συνιδρυτή και πρώην τεχνικό διευθυντή της Kubernetes και επί του παρόντος κύριος μηχανικός στο VMware, καμία από αυτές τις γλώσσες δεν έπληξε το «γλυκό σημείο» όπως το Go. Όπως το έθεσε η Beda, "Το Go δεν είναι ούτε πολύ υψηλό επίπεδο ούτε πολύ χαμηλό επίπεδο."

Fedora CoreOS

Το CoreOS (τώρα ένα έργο Red Hat) χρησιμοποιεί το Docker για να μετατρέψει το Linux σε ένα κοπάδι από χαλαρά συνδεδεμένα κοντέινερ, ένα πιθανό μονοπάτι μακριά από το μπερδεμένο κουβάρι των εξαρτήσεων που έχει γίνει το εκ των προτέρων διαχείρισης πακέτων Linux. Δεν αποτελεί έκπληξη, λοιπόν, ότι ο CoreOS αξιοποιεί το Docker για να ολοκληρώσει αυτήν τη μαγεία - και ότι δύο από τις βασικές υπηρεσίες του CoreOS, Etcd και Fleet, είναι και οι δύο γραμμένες στο Go. Το Fleet σάς επιτρέπει να "αντιμετωπίζετε το σύμπλεγμα CoreOS σαν να μοιράστηκε ένα σύστημα init." Το Etcd, ένα κατανεμημένο κατάστημα κλειδιού-τιμής, χειρίζεται τον συγχρονισμό των ρυθμίσεων μεταξύ εφαρμογών Docker και παρουσιών CoreOS. Και οι δύο γράφτηκαν στο Go λόγω της εξαιρετικής υποστήριξης μεταξύ πλατφορμών του Go, μικρών δυαδικών αρχείων και μιας εξαιρετικής κοινότητας πίσω από αυτό.

InfluxDB

Το InfluxDB είναι μια «βάση δεδομένων κατανεμημένων χρονοσειρών χωρίς εξωτερικές εξαρτήσεις». Ο όρος «χρονοσειρές» σημαίνει ότι το InfluxDB ασχολείται κυρίως με τη λήψη μετρήσεων ή συμβάντων και επιτρέπει την ανάλυσή τους σε πραγματικό χρόνο. «Χωρίς εξωτερικές εξαρτήσεις» σημαίνει ότι δεν χρειάζεστε άλλο λογισμικό για να χρησιμοποιήσετε το InfluxDB. είναι εντελώς αυτόνομο (όπως τείνουν να είναι οι εφαρμογές Go). Τα δεδομένα μπορούν να γραφτούν ή να διαβαστούν από τη βάση δεδομένων μέσω κλήσεων REST που υποβάλλουν JSON και τα ερωτήματα μπορούν να γίνουν μέσω μιας απλής γλώσσας SQL που επιτρέπει ακόμη και regexes. Το InfluxDB είναι εξαιρετικά ελαστικό και οριζόντια επεκτάσιμο και είναι πιθανό ότι το Go επιλέχθηκε ως γλώσσα για να καταστούν αυτές οι δυνατότητες δυνατές και εύκολες.

Ίστιο

Το έργο Istio, μέρος του σύμπαντος Kubernetes, αντιμετωπίζει ένα πρόβλημα που δεν είναι κατανοητό και δεν αντιμετωπίζεται καλά σε πολλά περιβάλλοντα εταιρικών εφαρμογών: Πώς αντιμετωπίζετε το δίκτυο δικτύωσης που συνδέει τις υπηρεσίες σας μεταξύ τους και με τον εξωτερικό κόσμο; Το Istio παρέχει ένα προγραμματιζόμενο "πλέγμα εξυπηρέτησης" ή επίπεδο διακομιστών μεσολάβησης, μεταξύ κάθε κοντέινερ σε ένα σύμπλεγμα Kubernetes και μεταξύ αυτών των κοντέινερ και του εξωτερικού κόσμου, έτσι ώστε τυχόν αλλαγές σε αυτό το δίκτυο να μπορούν να γίνουν μέσω προγραμματισμού μέσω ενός κοινού επιπέδου ελέγχου. Το Go ήταν κατάλληλο για αυτό, δεδομένου ότι το Kubernetes γράφτηκε επίσης στο Go, αλλά και λόγω της καταλληλότητας του Go για αποκεντρωμένα, κατανεμημένα έργα δικτύωσης.

Τραϊφίκ

Ένα άλλο έργο που σχετίζεται με το δίκτυο που γράφεται στο Go είναι το Traefik, ένα αντίστροφο διακομιστή μεσολάβησης και εξισορρόπησης φορτίου για υπηρεσίες δικτύου. Το Traefik έχει σχεδιαστεί για να λειτουργεί με μεγάλη ποικιλία επιλογών ενορχήστρωσης, από το Kubernetes και το Docker Swarm έως το Amazon ECS και το Azure Service Fabric. Η Traefik δημιουργεί αυτόματα τις διαδρομές που απαιτούνται από μικροεπηρεσίες που εκτελούνται κάτω από αυτούς τους ενορχηστρωτές για να μιλήσουν στον έξω κόσμο. Παράγει επίσης δεδομένα ανίχνευσης και στατιστικά στοιχεία κατάλληλα για τον ενορχηστρωτή σας.

Ούγκω

Οι στατικές γεννήτριες ιστότοπων είναι όλη η οργή αυτή τη στιγμή. Σε τελική ανάλυση, προσφέρουν έναν γρήγορο και βολικό τρόπο για τη δημιουργία ενός γρήγορου, ασφαλούς ιστότοπου με μόνο στατικό HTML, CSS και JavaScript. Το Hugo είναι μια στατική γεννήτρια ιστότοπων που εκμεταλλεύεται πολλές λειτουργίες Go για γρήγορη και ομαλή λειτουργία, δηλαδή, τα εργαλεία της Go για την απόδοση HTML, τις βιβλιοθήκες δικτύωσης, τις λειτουργίες διεθνοποίησης και την ικανότητά της να αναπτύσσεται ως ένα μοναδικό δυαδικό δίκτυο που μπορεί να αναδιανεμηθεί. Όλες αυτές οι λειτουργίες Go κάνουν το Hugo εύκολο να αποσυσκευαστεί, να εκτελεστεί και να χρησιμοποιηθεί για τη γρήγορη κατασκευή ιστότοπων.

Τεραφόρμ

Το HashiCorp - το οποίο ιδρύθηκε από τον δημιουργό του Vagrant, το εργαλείο που βασίζεται στο Ruby για τη διαχείριση περιβαλλοντικών περιβαλλόντων - βασίστηκε στην ταχύτητα και τη δύναμη της Go για τη δημιουργία ενός μεγαλύτερου και πιο φιλόδοξου έργου: Terraform, ένα σύστημα για την κατασκευή υποδομών πληροφορικής σε χώρους ή στο cloud εξ ορισμού τα αρχεία μετατράπηκαν σε κώδικα. Τυχόν αλλαγές που πραγματοποιείτε μπορούν να προωθηθούν προς τα εμπρός ή προς τα πίσω και να λάβετε μια πλήρη λίστα με το τι ακριβώς θα συμβεί - δηλαδή ένα σχέδιο εκτέλεσης—πριν επικαλέσατε τον κωδικό σας.

CockroachDB

Το Go χρησιμοποιείται για τη δημιουργία πολλών ειδών κατανεμημένων, εγγενών εφαρμογών cloud. Το CockroachDB, που ονομάζεται έτσι για την ανθεκτικότητά του, είναι μια κατανεμημένη βάση δεδομένων που έχει σχεδιαστεί για να επιβιώνει κάθε είδους καταστροφές (ακόμη και αποτυχίες στο κέντρο δεδομένων) και εξακολουθεί να ανταποκρίνεται στα ερωτήματά σας SQL. Το CockroachDB γράφεται εξ ολοκλήρου στο Go, εκτός από ένα smidgen C ++ για βασικές λειτουργίες υψηλής απόδοσης που λαμβάνονται από το προηγούμενο έργο RocksDB.

Βαρυτική τηλεμεταφορά

Το Go έχει γίνει η προεπιλεγμένη γλώσσα για πολλά έργα δικτύωσης και για τα κατάντη έργα που βασίζονται σε αυτά. Περίπτωση: Η εφαρμογή του SSH της Go, από μόνη της χρήσιμη, χρησιμεύει ως το θεμέλιο έργων όπως το Gravitational Teleport. Το Gravitational Teleport επιτρέπει στους χρήστες να έχουν ασφαλή πρόσβαση στους διακομιστές μέσω κελύφους. Επιβάλλει την ασφάλεια μέσω απλής σύνδεσης, αλλά χωρίς να απαιτείται το είδος των γενικών διοικητικών δαπανών (π.χ. διαχείριση κλειδιών και εναλλαγή) που συνήθως χρειάζονται τέτοια πράγματα.

$config[zx-auto] not found$config[zx-overlay] not found