Wprowadzenie do architektury mikrousług
Odnosząc się do tego artykułu, będziesz mógł lepiej zrozumieć architekturę mikroserwisów i kiedy z niej korzystać. Ponadto ten artykuł składa się z następujących treści.
◼ Skróty artykułu
◼ Wprowadzenie
◼ Ekosystem mikroserwisów
◼ Architektura monolitu a architektura mikroserwisów
◼ Wyzwania w mikroserwisach
◼ Kiedy używać mikroserwisów
Skróty
- API: interfejs programowania aplikacji
- MS: Mikroserwis
- NoSQL: nie tylko SQL
- RTE: Środowisko wykonawcze
Architektura mikrousług to podejście do tworzenia aplikacji, w którym duża aplikacja jest budowana jako zestaw usług modułowych (oznacza to, że (mikroserwis) jest rodzajem architektury aplikacji, w której aplikacja jest rozwijana jako zbiór usług). Każdy moduł obsługuje określony cel biznesowy i wykorzystuje prosty, dobrze zdefiniowany interfejs do komunikacji z innymi zestawami usług. Co więcej, istnieje absolutne minimum scentralizowanych usług zarządzania, które mogą być napisane w różnych językach programowania, takich jak java, python itp., oraz wykorzystywać różne technologie przechowywania danych, takie jak relacyjne i NoSQL w architekturze mikrousług.

Istnieje kilka kluczowych funkcji/cech mikrousług w następujący sposób.
- Wysoce konserwowalny i testowalny
- Luźno powiązane (komunikacja przez interfejs)
- Niezależnie rozkładane
- Zorganizowane wokół możliwości biznesowych
- Własność małego zespołu (zespół międzyfunkcyjny)
Ogólnie rzecz biorąc, system mikroserwisów zawiera następujące wymienione podmioty. Niektóre z tych jednostek są fazami standardowego rozwoju oprogramowania, a niektóre z nich są procesami specyficznymi dla mikrousług, które zapewnią szkielet wydajnego systemu mikrousług.
System równoważenia obciążenia
Głównym obowiązkiem modułu równoważenia obciążenia jest dystrybucja przychodzącego obciążenia między wiele instancji mikrousług. Zasadniczo istnieją 2 typy systemów równoważenia obciążenia, zwane wykrywaniem klienta (system równoważenia obciążenia po stronie klienta) i wykrywaniem serwera (system równoważenia obciążenia po stronie serwera). Podczas wykrywania klienta klient komunikuje się z rejestrem usług i przeprowadza równoważenie obciążenia. Z tego powodu klient musi być świadomy rejestru usług. Podczas wykrywania serwera klient komunikuje się z modułem równoważenia obciążenia, a moduł równoważenia obciążenia komunikuje się z rejestrem usług. W związku z tym obsługa klienta nie musi znać rejestru usług. Patrząc na poniższe diagramy, możesz lepiej zrozumieć te 2 typy systemu równoważenia obciążenia.

Serwer wykrywania usług
Funkcja wykrywania usług umożliwia mikrousługom samodzielną rejestrację podczas uruchamiania, zamiast ręcznego śledzenia, na jakich mikrousługach są obecnie wdrożone oraz jakich hostów i portów potrzebujemy. Dlatego jeśli MS1 chce rozmawiać z MS2, najpierw pobiera szczegółowe informacje z usługi rejestru należącej do krajobrazu, a następnie rozmawia z MS2. Co więcej, gdy w tym samym krajobrazie pojawi się inne państwo członkowskie o nazwie MS3, które działa w górę lub w dół, usługa rejestru zostanie automatycznie zaktualizowana.

Brama interfejsu API
Brama API jest serwerem. Jest to pojedynczy punkt wejścia do systemu. API Gateway hermetyzuje wewnętrzną architekturę systemu. Zapewnia interfejs API dostosowany do każdego klienta. Ma również inne obowiązki, takie jak uwierzytelnianie, monitorowanie, równoważenie obciążenia, buforowanie, kształtowanie żądań i zarządzanie nimi oraz obsługa odpowiedzi statycznych. API Gateway jest również odpowiedzialny za kierowanie żądań, skład i translację protokołów. Wszystkie żądania wysyłane przez klienta przechodzą przez API Gateway. Następnie API Gateway kieruje żądania do odpowiedniej mikrousługi.
API Gateway obsługuje żądanie na jeden z dwóch sposobów:
- Przekierowywał lub przesyłał żądania do odpowiedniej usługi.
- Rozsyłanie (rozpowszechnianie) żądania do wielu usług.

Teraz wiemy, że istnieje wiele mikrousług działających na różnych węzłach w tym samym ekosystemie. Dlatego konieczne jest monitorowanie ich razem w jednym systemie. Pulpit nawigacyjny Hystrix i pulpit administratora Spring boot to tylko niektóre przykłady narzędzi do monitorowania. Istnieje pięć zasad monitorowania mikroserwisów:
- Monitoruj pojemniki i to, co się w nich znajduje.
- Powiadomienie o wykonaniu usługi.
- Monitoruj usługi, które są elastyczne i obsługują wiele lokalizacji.
- Monitoruj interfejsy API.
- Monitoruj strukturę organizacyjną

Kiedy wdrażamy mikrousługi, działają one na różnych RTE, takich jak JRE i Node.js, ponieważ implementacja mikrousług może odbywać się przy użyciu różnych technologii. Wiesz również, że te mikrousługi są wdrażane w sposób poliglotyczny. Dlatego węzły nie znają RTE wdrożonej mikrousługi i musimy zainstalować ją ręcznie w każdym węźle. Ale jeśli chodzi o konteneryzację, pakujemy nasze RTE w naszą mikrousługę. Dlatego możemy uruchamiać mikroserwisy wszędzie, nie biorąc pod uwagę RTE, a także możemy łatwo zarządzać tymi usługami i aktualizować je.

Wyłącznik obwodu

Jest to bardzo ważny podmiot w ekosystemie mikroserwisów. W większości przypadków jest to definiowane jako wzorzec. Dla zrozumienia, jest to bardzo podobne do domowego wyłącznika automatycznego. Chroni cię przed katastrofą i zatrzymuje rozprzestrzenianie się problemu, który się pojawił. Ten sam scenariusz ma miejsce tutaj (wyłącznik w MS) w odniesieniu do mikrousług. Załóżmy, że klient wysyła żądanie do mikroserwisu dostawcy iw trakcie nadejścia odpowiedzi pojawia się problem z połączeniem. Z tego powodu klient bardzo długo czeka na odpowiedź, co może mieć wpływ również na inne usługi. Od architektury wyłącznika problematyczny kanał jest odrzucany, a poprzedni problem oczekiwania zostaje rozwiązany. Ponadto istnieją trzy różne stany wyłącznika, zwane Zamkniętym, Otwarty i W połowie Otwarty.
Architektura monolitu a architektura mikroserwisów

Cena
- Monolityczny: wyższy, gdy projekt się skaluje
- Mikroserwis : Wyższy na pierwszym etapie rozwoju
- Monolityczny: zjednoczona baza kodu i baza danych dla całego produktu
- Mikroserwis: Wiele plików kodu; każda usługa obsługuje bazę i magazyn danych
- Monolityczny: należy wdrożyć całą bazę kodu
- Mikroserwis: każda mikrousługa jest wdrażana indywidualnie
- Monolityczny: ten sam stos kodu
- Mikroserwis: różne stosy (język, środowisko wykonawcze itp.)
Istnieją następujące wyzwania, gdy mamy do czynienia z mikrousługami.
- Komunikacja między procesami (poprzez sieć)
- Transakcje rozproszone
- Duża liczba usług
- Wymagaj większej automatyzacji
Teraz dobrze rozumiemy mikrousługi i związane z nimi wyzwania. Zobaczmy, które scenariusze są odpowiednie dla mikrousług.
- Firma chce od razu zbudować czysty, czytelny kod i uniknąć długu technicznego
- Firma posiada zasoby ludzkie do rozwoju mikroserwisów
- Firma przedkłada długoterminowe zyski nad korzyści krótkoterminowe
- Zespół programistów korzysta z różnych stosów technologii i narzędzi
- Platforma musi być wysoce skalowalna i rozszerzać się na różne rynki