În companiile mari cu sute de servicii, o schemă GraphQL monolitică devine un blocaj masiv. Apollo Federation v2 rezolvă această problemă permițând fiecărei echipe să dețină propriul său Subgraph, în timp ce un gateway ultra-rapid (Apollo Router scris în Rust) le combină într-un singur Supergraph coerent.
Definirea entităților federate cu directiva @key
# Subgraph 1: Serviciul de Utilizatori (users-subgraph.graphql)
extend schema
@link(url: "https://specs.apollo.dev/federation/v2.0", import: ["@key", "@shareable"])
type User @key(fields: "id") {
id: ID!
email: String!
nume: String!
}
# Subgraph 2: Serviciul de Recenzii (reviews-subgraph.graphql)
# Acest serviciu extinde tipul User adăugându-i câmpul 'recenzii':
extend type User @key(fields: "id") {
id: ID!
recenzii: [Review!]!
}
type Review {
id: ID!
stele: Int!
comentariu: String
}
| Directivă Federation | Rol și semnificație |
|---|---|
@key(fields: "id") |
Definește cheia primară a entității pentru rezolvarea trans-subgraph. |
@shareable |
Permite mai multor subgrafuri să calculeze și să rezolve aceeași valoare. |
@external |
Marchează un câmp ca fiind deținut și rezolvat de alt serviciu. |
@provides(fields: "...") |
Optimizează execuția furnizând date dintr-un cache local. |
Întrebări & Exemple de Cod:
GraphQL Federation: Arhitectură de Subgraphs și Microservicii cu Apollo Federation v2Ai o nelămurire despre utilizarea comenzii
GraphQL Federation: Arhitectură de Subgraphs și Microservicii cu Apollo Federation v2sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.