Programmering

10 open source-projekter, der viser kraften i Google Go

Nu 10 år i naturen har Googles Go-programmeringssprog bestemt gjort sig bemærket. Let og hurtig at kompilere har Go vækket betydelig interesse på grund af sine generøse biblioteker og abstraktioner, der letter udviklingen af ​​samtidige og distribuerede (læs: sky) applikationer.

Men det sande mål for succes for ethvert programmeringssprog er de projekter, som udviklere opretter med det. Go har bevist sig som et førstevalg til hurtig udvikling af netværkstjenester, softwareinfrastrukturprojekter og kompakte og kraftfulde værktøjer af enhver art.

Her er 10 bemærkelsesværdige projekter skrevet i Go, hvoraf mange er blevet mere berømte end det sprog, de blev skrevet på. Alle har markeret sig markant i deres respektive domæner. Alle projekterne her er hostet på GitHub, så det er let for Go-nysgerrige at kigge på Go-koden, der får dem til at krydsse.

Docker

Du ville have svært ved at finde en bedre succeshistorie til Go end Docker. På lidt mere end et år blev denne software containeriseringsteknologi plakatbarnet for Go's egnethed til store, distribuerede softwareprojekter. Docker-teamet kunne lide Go, fordi det tilbød en række fordele: statisk kompilering uden afhængigheder, et stærkt standardbibliotek, et fuldt udviklingsmiljø og evnen til at bygge til flere arkitekturer med minimalt besvær.

Kubernetes

Hvis Docker er skrevet i Go, er det grund til at andre vigtige skyorienterede containerprojekter også ville blive skrevet i Go. Kubernetes, Googles containerorkesteringsprojekt, er et Go-projekt, ligesom de fleste af Kubernetes-underkomponenter og økosystem. Eksempel: Den super lette Kubernetes spinoff, k3s, til folk, der kun har brug for det grundlæggende i Kubernetes og ikke noget mere.

Google overvejede at skrive Kubernetes på andre sprog, herunder C / C ++, Java og Python. Men ifølge Joe Beda, medstifter og tidligere teknisk leder for Kubernetes og i øjeblikket hovedingeniør hos VMware, slog ingen af ​​disse sprog det "søde sted" som Go. Som Beda sagde: "Go er hverken for højt eller for lavt niveau."

Fedora CoreOS

CoreOS (nu et Red Hat-projekt) bruger Docker til at gøre Linux til en flok løst koblede containere, en mulig sti væk fra det sammenfiltrede nøgle af afhængigheder, der er blevet den sine qua non af Linux-pakkehåndtering. Det er derfor ikke overraskende, at CoreOS udnytter Docker til at udføre denne magi - og at to af CoreOS 'grundlæggende tjenester, Etcd og Fleet, begge er skrevet i Go. Fleet giver dig mulighed for at "behandle din CoreOS-klynge som om den delte et enkelt init-system." Etcd, en distribueret nøgleværdilager, håndterer synkroniseringen af ​​indstillinger mellem Docker-applikationer og CoreOS-forekomster. Begge blev skrevet i Go på grund af Go's "fremragende support på tværs af platforme, små binære filer og et stort samfund bag det."

TilstrømningDB

InfluxDB er en "distribueret tidsseriedatabase uden eksterne afhængigheder." Udtrykket "tidsserie" betyder, at InfluxDB hovedsageligt beskæftiger sig med at tage målinger eller begivenheder ind og lade dem analyseres i realtid. "Ingen eksterne afhængigheder" betyder, at du ikke har brug for anden software til at bruge InfluxDB; det er helt selvstændigt (som Go-apps plejer at være). Data kan skrives til eller læses fra databasen ved hjælp af REST-opkald, der sender JSON, og forespørgsler kan foretages via et simpelt SQL-sprog, der endda tillader regexes. InfluxDB er meget elastisk og skalerbar vandret, og det er sandsynligt, at Go blev valgt som sprog for at gøre disse funktioner mulige og lette.

Istio

Istio-projektet, der er en del af Kubernetes-universet, tackler et problem, der både forstås og håndteres dårligt i mange virksomhedsapplikationsmiljøer: Hvordan håndterer du det netværksstof, der forbinder dine tjenester med hinanden og omverdenen? Istio leverer et programmerbart "servicenetværk" eller lag af netværksproxyer mellem hver container i en Kubernetes-klynge og mellem disse containere og omverdenen, så ændringer i dette netværk kan foretages programmatisk via et delt kontrolplan. Go passede godt til dette givet Kubernetes blev også skrevet i Go, men også på grund af Go's egnethed til decentrale, distribuerede netværksprojekter.

Traefik

Et andet netværksrelateret projekt skrevet i Go er Traefik, en reverse proxy og load balancer for netværkstjenester. Traefik er designet til at arbejde med en lang række orkestrationsindstillinger, lige fra Kubernetes og Docker Swarm til Amazon ECS og Azure Service Fabric. Traefik opretter automatisk de ruter, der kræves af mikrotjenester, der kører under disse orkestratorer for at tale med omverdenen. Det genererer også sporingsdata og statistikker, der passer til din orkestrator.

Hugo

Statiske stedgeneratorer er alle raseri lige nu. Når alt kommer til alt, tilbyder de en hurtig og bekvem måde at oprette et hurtigt, sikkert websted med kun statisk HTML, CSS og JavaScript. Hugo er en statisk stedgenerator, der udnytter mange Go-funktioner til at fungere hurtigt og problemfrit - nemlig Go's værktøjer til gengivelse af HTML, dets netværksbiblioteker, dets internationaliseringsfunktioner og dets evne til at implementere som en enkelt omfordelt platform-native-binær. Alle disse Go-funktioner gør Hugo let at pakke ud, køre og bruge til hurtigt at opbygge websteder.

Terraform

HashiCorp - grundlagt af skaberen af ​​Vagrant, det Ruby-baserede værktøj til styring af udviklingsmiljøer - trak på Go's hastighed og kraft til at opbygge et større og mere ambitiøst projekt: Terraform, et system til opbygning af IT-infrastruktur i lokaler eller i skyen som definition defineres filer til kode. Alle ændringer, du foretager, kan rulles frem eller tilbage, og du får en fuldstændig oversigt over, hvad der præcist vil ske - dvs. en eksekveringsplan -Før du påberåber dig din kode.

Kakerlak DB

Go bruges til at opbygge mange slags distribuerede, cloud-native apps. CockroachDB, der er opkaldt efter sin modstandsdygtighed, er en distribueret database designet til at overleve alle mulige ulykker (endda datacenterfejl) og alligevel fortsætte med at svare på dine SQL-forespørgsler. CockroachDB er skrevet udelukkende i Go, bortset fra en smidgen af ​​C ++ til præstationsintensive kernefunktioner taget fra forgængerprojektet RocksDB.

Gravitationel teleport

Go er blevet standardsproget for mange netværksprojekter og for de downstream-projekter, der bygger på dem. Eksempel: Go's implementering af SSH, i sig selv nyttig, tjener som grundlaget for projekter som Gravitational Teleport. Gravitational Teleport giver brugerne mulighed for sikkert at få adgang til servere via en shell. Det håndhæver sikkerhed via single sign-on, men uden at kræve den slags administrative omkostninger (f.eks. Nøglehåndtering og rotation), har sådanne ting normalt brug for.

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