I utviklingen av Internett-prosjekter er det nødvendig å samhandle med ulike tjenester, og brukerne henter data fra serveren, og høy tilgjengelighet av tjenestegrensesnitt er spesielt viktig, spesielt i e-handel og betalingssystemer, hvor høy tilgjengelighet også måler om systemet er robust. Når det gjelder klynger, er mange tjenester også vanskelige å vedlikeholde.
Konsulens gjennomgang
Consul er et åpen kildekode-verktøy utviklet i Go-språket, lansert av HashiCorp, som brukes til å realisere tjenesteoppdagelse og konfigurasjon av distribuerte systemer, med innebygd rammeverk for tjenesteregistrering og oppdagelse, implementering av distribusjonskonsistensprotokoll, helsesjekk, nøkkel-/verdilagring og multi-datasenterløsninger, som er relativt enkle å bruke.
Oppdagelse av konsultjeneste
Hvordan bruke Consul Service Discovery:
- Kjør en Consul-agent i klientmodus på hver datamaskin, som kun er ansvarlig for å effektivt utveksle siste registreringsinformasjon med Consul Cluster (som ikke deltar i ledervalget).
- Tjenestetjenesten på hver datamaskin registrerer tjenestenavnet og URL-en til tjenesten hos den lokale konsulagenten
- Når et program distribuert på Computer1 trenger å kalle ServiceB, henter programmet ServiceA direkte tilgangsadressen til ServiceB fra den lokale Consul-agenten via tjenestenavnet, og sender deretter en direkte forespørsel til URL-en til ServiceB.
Koden er som følger:
I Startup-klassen, kall som følger:
Helsesjekk
Helsesjekkgrensesnittet trenger bare å returnere en 200-statuskode til Consul, og koden er som følger:
Start prosjektet, meld deg på tjenesten
Kontrolleren kan definere en testmetode som følger:
La oss gå til bin-katalogen til prosjektet og starte det via kommandolinjen, koden er som følger:
Se lenken via nettleseren din:
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-nettverk-segment": "" }, "ServiceKind": "", "ServiceID": "507338bf-a5a6-4013-9675-c43a40a2c1a0", "ServiceName": "test.itsvse", "ServiceTags": [ "test", "Itsvse" ], "ServiceAddress": "127.0.0.1", "ServiceWeights": { "Passing": 1, "Advarsel": 1 }, "ServiceMeta": {}, "ServicePort": 8083, "ServiceEnableTagOverride": falsk, "ServiceProxy": { "MeshGateway": {}, "Avsløre": {} }, "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-nettverk-segment": "" }, "ServiceKind": "", "ServiceID": "bb21f150-7219-4eda-bc91-54686a750228", "ServiceName": "test.itsvse", "ServiceTags": [ "test", "Itsvse" ], "ServiceAddress": "127.0.0.1", "ServiceWeights": { "Passing": 1, "Advarsel": 1 }, "ServiceMeta": {}, "ServicePort": 8082, "ServiceEnableTagOverride": falsk, "ServiceProxy": { "MeshGateway": {}, "Avsløre": {} }, "ServiceConnect": {}, "CreateIndex": 1314, "ModifyIndex": 1314 }
]
Konsulservicekall
Lag et nytt .NET Core-konsollprosjekt med følgende kode:
Jeg ringer tilfeldig den registrerte test.itsvse-tjenesten, og resultatet er som følger:
Til slutt, nedlasting av kildekode:
Turister, hvis dere vil se det skjulte innholdet i dette innlegget, vær så snill Svare |