I udviklingen af internetprojekter er det nødvendigt at interagere med forskellige tjenester, og brugerne indhenter data fra serveren, og den høje tilgængelighed af servicegrænseflader er særligt vigtig, især i e-handels- og betalingssystemer, hvor høj tilgængelighed også måler, om systemet er robust. I tilfælde af klynger er mange tjenester også svære at vedligeholde.
Konsulens gennemgang
Consul er et open source-værktøj udviklet i Go-sproget, lanceret af HashiCorp, som bruges til at realisere serviceopdagelse og konfiguration af distribuerede systemer, med indbygget serviceregistrerings- og opdagelsesrammeværk, implementering af distributionskonsistensprotokol, sundhedstjek, nøgle-/værdilagring og multi-datacenterløsninger, som er relativt enkle at bruge.
Konsultjenesteopdagelse
Sådan bruger du Consul Service Discovery:
- Kør en Consul-agent i klienttilstand på hver computer, som kun er ansvarlig for effektivt at udveksle de seneste registreringsoplysninger med Consul Cluster (uden at deltage i ledervalget).
- Servicetjenesten på hver computer registrerer servicenavnet og URL'en på tjenesten hos den lokale konsulagent
- Når et program implementeret på Computer1 skal kalde ServiceB, henter programmet ServiceA direkte adgangsadressen for ServiceB fra den lokale Consul Agent via tjenestenavnet og foretager derefter direkte en anmodning til URL'en til ServiceB.
Koden er som følger:
I Startup-klassen kaldes som følger:
Sundhedstjek
Sundhedskontrolgrænsefladen behøver kun at returnere en 200-statuskode til Consul, og koden er som følger:
Start projektet, tilmeld dig tjenesten
Controlleren kan definere en testmetode som følger:
Lad os gå til projektets bin-mappe og starte det via kommandolinjen, koden er som følger:
Se linket via din browser:
http://127.0.0.1:8500/ui/dc1/services/test.itsvse
http://127.0.0.1:8500/v1/catalog/service/test.itsvse
JSON-dataene er som følger:
[ { "ID": "bb644359-6b2a-a27e-7a0a-a1950b8e515f", "Node": "DESKTOP-EB7B69D", "Adresse": "127.0.0.1", "Datacenter": "dc1", "TaggedAddresses": { "lan": "127.0.0.1", "WAN": "127.0.0.1" }, "NodeMeta": { "konsul-netværk-segment": "" }, "ServiceKind": "", "ServiceID": "507338bf-a5a6-4013-9675-c43a40a2c1a0", "ServiceName": "test.itsvse", "ServiceTags": [ "test", "Itsvse" ], "ServiceAdresse": "127.0.0.1", "ServiceWeights": { "Passerende": 1, "Advarsel": 1 }, "ServiceMeta": {}, "ServicePort": 8083, "ServiceEnableTagOverride": falsk, "ServiceProxy": { "MeshGateway": {}, "Afslør": {} }, "ServiceConnect": {}, "CreateIndex": 1317, "ModifyIndex": 1317 }, { "ID": "bb644359-6b2a-a27e-7a0a-a1950b8e515f", "Node": "DESKTOP-EB7B69D", "Adresse": "127.0.0.1", "Datacenter": "dc1", "TaggedAddresses": { "lan": "127.0.0.1", "WAN": "127.0.0.1" }, "NodeMeta": { "konsul-netværk-segment": "" }, "ServiceKind": "", "ServiceID": "bb21f150-7219-4eda-bc91-54686a750228", "ServiceName": "test.itsvse", "ServiceTags": [ "test", "Itsvse" ], "ServiceAdresse": "127.0.0.1", "ServiceWeights": { "Passerende": 1, "Advarsel": 1 }, "ServiceMeta": {}, "ServicePort": 8082, "ServiceEnableTagOverride": falsk, "ServiceProxy": { "MeshGateway": {}, "Afslør": {} }, "ServiceConnect": {}, "CreateIndex": 1314, "ModifyIndex": 1314 }
]
Konsulservicekald
Opret et nyt .NET Core-konsolprojekt med følgende kode:
Jeg ringer tilfældigt til den registrerede test.itsvse-tjeneste, og resultatet er som følger:
Endelig, download af kildekode:
Turister, hvis I vil se det skjulte indhold i dette indlæg, så vær venlig Svar |