gRPC og høyytelses-API-er · leksjon

API-versjonering og bakoverkompatibilitet

Videreutvikle gRPC-mikrotjeneste-API-er trygt på tvers av mange team ved hjelp av versjoneringsstrategier og protobuf-regler for kompatibilitet, slik at gamle klienter aldri slutter å fungere.

Leksjon 4 av 413 trinn

API-versjonering og bakoverkompatibilitet er en gratis leksjon i gRPC og høyytelses-API-er på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i gRPC og høyytelses-API-er, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i gRPC og høyytelses-API-er inneholder totalt 4 leksjoner.

Utfordringen med versjonering

I en mikrotjenesteløsning er dusinvis av klienter avhengige av en tjeneste. Du kan ikke distribuere en ny versjon til alle samtidig, så API-et må kunne endres uten å bryte eksisterende kallere.

Ledningskompatibilitet i Protobuf

Protobuf er ettergivende: Ukjente felt ignoreres, og manglende felt får standardverdier. Derfor er additive endringer trygge som standard.

Trygge kontra brytende endringer

Trygt: legg til felt, metoder og enum-verdier. Brytende: fjern eller gi nytt navn til felt, endre felttyper, bruk tag-numre på nytt eller endre metodesignaturer.

Bruk aldri tag-numre på nytt

Feltets tag-numre identifiserer felt på ledningen. Hvis et utfaset nummer brukes på nytt, kan gamle data bli ødelagt. Merk fjernede felt som reserved for å låse nummeret.

message User {
  reserved 3, 5;
  reserved 'old_name';
}

Pakke basert versjonering

Ved reelt brytende endringer versjonerer du pakken. Den gamle og den nye versjonen lever side om side, slik at klientene kan migrere i sitt eget tempo.

package myapp.orders.v1;
// later, breaking change:
package myapp.orders.v2;

Kjøre v1 og v2 samtidig

Serveren registrerer begge tjenesteversjonene. Nye klienter kaller v2, mens gamle klienter fortsetter å bruke v1 til de oppgraderes.

ordersv1.RegisterOrdersServer(s, &v1impl{})
ordersv2.RegisterOrdersServer(s, &v2impl{})

Avvikle felt og metoder

Merk elementer som avviklet for å varsle kallere før de fjernes, slik at de får tid til å migrere.

string legacy_id = 2 [deprecated = true];

Videreutvikling av enum-er

Reserver alltid enum-verdien 0 som UNSPECIFIED. Legg til nye verdier til slutt; gamle klienter mapper ukjente verdier trygt til standardverdien sin i proto3.

enum Status {
  STATUS_UNSPECIFIED = 0;
  ACTIVE = 1;
  ARCHIVED = 2;
}

Automatiserte kompatibilitetskontroller

Verktøy som Buf kontrollerer proto-endringer i CI og avviser brytende endringer før de flettes inn, slik at kompatibiliteten håndheves automatisk på tvers av team.

buf breaking --against '.git#branch=main'

Skjemaregistre

Et sentralt register (for eksempel Buf Schema Registry) lagrer versjonerte proto-filer, slik at alle team bruker én felles kilde og genererer konsistente stubber.

Migreringsstrategi

En ryddig migrering er å legge til v2 ved siden av v1, flytte klientene gradvis, overvåke bruken av v1 og først avvikle v1 når trafikken er nede i null.

Kort sjekk

Test kunnskapene dine om versjonering.

Oppsummering

Du har lært om API-versjonering og kompatibilitet:

  • Additive endringer er trygge på ledningen; fjerning, omdøping og endring av typer bryter kompatibiliteten
  • Bruk aldri tag-numre på nytt — merk dem som reserved
  • Versjoner pakker (v1/v2) ved brytende endringer, og kjør begge samtidig
  • Reserver enum 0 som UNSPECIFIED, og marker elementer som avviklet før de fjernes
  • Håndhev kompatibilitet med Buf og et skjemaregister
Gratis å komme i gang

Lær deg gRPC og høyytelses-API-er med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «API-versjonering og bakoverkompatibilitet» gratis?

Ja – hele teksten i «API-versjonering og bakoverkompatibilitet» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av gRPC og høyytelses-API-er-kurset, kan du oppgradere til CoddyKit PRO. Kurset i gRPC og høyytelses-API-er inneholder totalt 4 leksjoner.

Hva lærer jeg i «API-versjonering og bakoverkompatibilitet»?

Videreutvikle gRPC-mikrotjeneste-API-er trygt på tvers av mange team ved hjelp av versjoneringsstrategier og protobuf-regler for kompatibilitet, slik at gamle klienter aldri slutter å fungere. Du øver på gRPC og høyytelses-API-er med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med gRPC og høyytelses-API-er?

Ingen tidligere erfaring er nødvendig. gRPC og høyytelses-API-er på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «API-versjonering og bakoverkompatibilitet»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne gRPC og høyytelses-API-er-leksjonen?

Ja. Alle gRPC og høyytelses-API-er-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Utforme gRPC-mikrotjenester
  2. Hendelsesdrevne gRPC-arkitekturer
  3. Samhandling på tvers av språk
  4. API-versjonering og bakoverkompatibilitet
← Tilbake til gRPC og høyytelses-API-er