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.
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
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
- Utforme gRPC-mikrotjenester
- Hendelsesdrevne gRPC-arkitekturer
- Samhandling på tvers av språk
- API-versjonering og bakoverkompatibilitet