W rozwoju projektów internetowych konieczne jest interakcja z różnymi usługami, a użytkownicy otrzymują dane z serwera, a wysoka dostępność interfejsów usług jest szczególnie istotna, zwłaszcza w systemach e-commerce i płatności, gdzie wysoka dostępność mierzy także odporność systemu. W przypadku klastrów wiele usług jest również trudnych do utrzymania.
Recenzja Consul
Consul to narzędzie open source opracowane w języku Go, wprowadzone na rynek przez HashiCorp, które służy do wykrywania usług i konfiguracji systemów rozproszonych, wyposażone w wbudowane ramy rejestracyjne i wykrywające usługi, implementację protokołu spójności dystrybucji, kontrolę stanu, przechowywanie klucz/wartość oraz rozwiązania dla multi-centrów danych, które są stosunkowo proste w obsłudze.
Odkrycie służby konsula
Jak korzystać z Consul Service Discovery:
- Uruchom agenta Consul w trybie klienta na każdym komputerze, który odpowiada jedynie za efektywną wymianę najnowszych informacji rejestracyjnych z Consul Cluster (nie biorąc udziału w wyborach lidera).
- Usługa na każdym komputerze rejestruje nazwę usługi oraz adres URL usługi u lokalnego agenta konsula
- Gdy program wdrożony na Komputerze1 musi wywołać Usługę B, program Usługa A bezpośrednio uzyskuje adres dostępu Usługi B od lokalnego Agenta Konsula za pośrednictwem nazwy usługi, a następnie bezpośrednio wysyła żądanie do adresu URL UsługiB.
Kod jest następujący:
W klasie Startup można zadzwonić następująco:
Badania lekarskie
Interfejs kontroli stanu zdrowia musi jedynie zwrócić kod statusu 200 do konsula, a kod jest następujący:
Rozpocznij projekt, zapisz się na usługę
Regulator może zdefiniować metodę testową w następujący sposób:
Przejdźmy do katalogu bin projektu i zacznijmy go przez wiersz poleceń, kod wygląda następująco:
Zobacz link w swojej przeglądarce:
http://127.0.0.1:8500/ui/dc1/services/test.itsvse
http://127.0.0.1:8500/v1/catalog/service/test.itsvse
Dane json wyglądają następująco:
[ { "ID": "bb644359-6b2a-a27e-7a0a-a1950b8e515f", "Node": "DESKTOP-EB7B69D", "Adres": "127.0.0.1", "Centrum danych": "dc1", "TaggedAddresses": { "lan": "127.0.0.1", "WAN": "127.0.0.1" }, "NodeMeta": { "konsul-sieć-segment": "" }, "ServiceKind": "", "ServiceID": "507338bf-a5a6-4013-9675-c43a40a2c1a0", "ServiceName": "test.itsvse", "ServiceTags": [ "test", "itsvse" ], "ServiceAddress": "127.0.0.1", "ServiceWeights": { "Passing": 1, "Ostrzeżenie": 1 }, "ServiceMeta": {}, "Port serwisowy": 8083, "ServiceEnableTagOverride": fałszywe, "ServiceProxy": { "MeshGateway": {}, "Expose": {} }, "ServiceConnect": {}, "CreateIndex": 1317, "ModifyIndex": 1317 }, { "ID": "bb644359-6b2a-a27e-7a0a-a1950b8e515f", "Node": "DESKTOP-EB7B69D", "Adres": "127.0.0.1", "Centrum danych": "dc1", "TaggedAddresses": { "lan": "127.0.0.1", "WAN": "127.0.0.1" }, "NodeMeta": { "konsul-sieć-segment": "" }, "ServiceKind": "", "ServiceID": "bb21f150-7219-4eda-bc91-54686a750228", "ServiceName": "test.itsvse", "ServiceTags": [ "test", "itsvse" ], "ServiceAddress": "127.0.0.1", "ServiceWeights": { "Passing": 1, "Ostrzeżenie": 1 }, "ServiceMeta": {}, "Port serwisowy": 8082, "ServiceEnableTagOverride": fałszywe, "ServiceProxy": { "MeshGateway": {}, "Expose": {} }, "ServiceConnect": {}, "CreateIndex": 1314, "ModifyIndex": 1314 }
]
Wezwanie do służby konsula
Stwórz nowy projekt konsoli .NET Core z następującym kodem:
Losowo dzwonię do zarejestrowanej usługi test.itsvse i wynik jest następujący:
Na koniec, pobieranie kodu źródłowego:
Turyści, jeśli chcecie zobaczyć ukrytą zawartość tego wpisu, proszę Odpowiedź |