Poradnik dotyczący mikrousług: Co to jest, Architektura i przykład
Czym są mikroserwisy?
Mikrosfery jest zorientowanym na usługi wzorcem architektury, w którym aplikacje są budowane jako zbiór różnych najmniejszych niezależnych jednostek usługowych. Jest to Inżynieria oprogramowania podejście, które koncentruje się na rozłożeniu aplikacji na moduły jednofunkcyjne z dobrze zdefiniowanymi interfejsami. Te moduły mogą być niezależnie wdrażane i obsługiwane przez małe zespoły, które są właścicielami całego cyklu życia usługi.
Termin „mikro” odnosi się do rozmiaru mikrousługi, którą musi zarządzać pojedynczy zespół programistów (od 5 do 10 programistów). W tej metodologii duże aplikacje dzielone są na najmniejsze, niezależne jednostki.
Co to jest monolityczny Architektura?
Mówiąc prościej, można powiedzieć, że architektura monolityczna przypomina duży pojemnik, w którym wszystkie komponenty oprogramowania aplikacji są umieszczone w jednym pakiecie.
Omówmy przykład sklepu eCommerce w kontekście architektury monolitycznej.

W każdej aplikacji e-commerce dostępne są pewne standardowe funkcje, takie jak wyszukiwanie, Revwidok i oceny oraz płatności. Funkcje te są dostępne dla klientów za pomocą przeglądarki lub aplikacji. Kiedy twórca witryny eCommerce wdraża aplikację, jest to pojedyncza jednostka monolityczna. Kod różnych funkcji, takich jak wyszukiwanie, Review i oceny oraz płatności znajdują się na tym samym serwerze. Aby skalować aplikację, musisz uruchomić wiele instancji (serwerów) tych aplikacji.
Co to jest Mikroserwis Architektura?
Mikrousługi Architektura to styl rozwoju architektonicznego, który pozwala na budowanie aplikacji jako zbioru małych autonomicznych usług opracowanych dla domeny biznesowej. Jest to odmiana architektury w stylu strukturalnym, która pomaga organizować aplikacje jako luźno powiązany zbiór usług. Mikrousługa Architecture zawiera szczegółowe usługi i lekkie protokoły.
Weźmy przykład aplikacji e-commerce opracowanej z architekturą mikrousług. W tym przykładzie architektury mikrousług każda mikrousługa koncentruje się na pojedynczej zdolności biznesowej. Szukaj, oceniaj i Review i Payment mają swoje instancje (serwer) i komunikują się ze sobą.
W Monolicie Archikonstrukcji wszystkie elementy łączą się w jeden moduł. Ale w mikrousługach ArchiW swojej architekturze są one podzielone na poszczególne moduły (mikroserwisy), które komunikują się ze sobą, jak pokazano w powyższym przykładzie mikrousług.
Komunikacja między mikrousługami jest komunikacją bezstanową, w której każda para żądania i odpowiedzi jest niezależna. Dzięki temu mikrousługi mogą komunikować się bez wysiłku. W Mikroserwisie ArchiW tej architekturze Dane są stowarzyszone. Każda mikrousługa ma swój oddzielny magazyn danych. Następny w tym Java W samouczku na temat mikrousług poznamy różnice między mikrousługami a architekturą monolityczną.
Mikrousługi a monolityczne Architektura
Mikrosfery | Monolityczny Architektura |
---|---|
Każda jednostka całej aplikacji powinna być jak najmniejsza i być w stanie realizować jeden konkretny cel biznesowy. | Jedna baza kodu dla wszystkich celów biznesowych |
Uruchomienie usługi jest stosunkowo szybkie | Uruchomienie usługi zajmuje więcej czasu |
Izolacja usterek jest łatwa. Nawet jeśli jedna usługa przestanie działać, inna może nadal działać. | Izolacja błędów jest trudna. Jeśli jakaś konkretna funkcja nie działa, cały system przestaje działać. Aby poradzić sobie z tym problemem, aplikacja musi zostać ponownie zbudowana, ponownie przetestowana, a także ponownie wdrożona. |
Wszystkie mikrousługi powinny być luźno powiązane, aby zmiany wprowadzone w jednym nie wpływały na drugie. | Monolityczna architektura jest ściśle powiązana. Zmiany w jednym module kodu wpływają na drugi |
Firmy mogą wdrożyć więcej zasobów do usług generujących wyższy zwrot z inwestycji | Ponieważ usługi nie są izolowane, indywidualna alokacja zasobów nie jest możliwa |
Więcej zasobów sprzętowych można przeznaczyć na często używaną usługę. W powyższym przykładzie handlu elektronicznego większa liczba użytkowników sprawdza listę produktów i wyszukuje w porównaniu do płatności. Można zatem przeznaczyć więcej zasobów na mikrousługę wyszukiwania i list produktów. | Skalowanie aplikacji jest trudne i marnotrawne. |
Mikrousługi zawsze pozostają spójne i stale dostępne. | Narzędzia programistyczne stają się przeciążone, ponieważ proces musi zaczynać się od zera. |
Dane są stowarzyszone. Dzięki temu poszczególne mikrousługi mogą przyjąć model danych najlepiej dostosowany do swoich potrzeb. | Dane są scentralizowane. |
Małe skupione zespoły. Równoległy i szybszy rozwój | Wymagany jest duży zespół i znaczny wysiłek w zarządzaniu zespołem |
Zmiana modelu danych jednej Mikrousługi nie ma wpływu na inne Mikrousługi. | Zmiana modelu danych wpływa na całą bazę danych |
Współdziała z innymi mikrousługami za pomocą dobrze zdefiniowanych interfejsów | Nie dotyczy |
Mikrousługi działają na zasadzie skupiającej się na produktach, a nie projektach | Połóż nacisk na cały projekt |
Brak współzależności między bazami kodu. Możesz używać różnych technologii dla różnych Mikrousług. | Jedna funkcja lub program zależy od innych. |
Wyzwania związane z mikroserwisami
- Mikrousługi polegają na sobie nawzajem i będą musiały się ze sobą komunikować.
- W porównaniu z systemami monolitycznymi istnieje więcej usług do monitorowania, które są opracowywane przy użyciu różnych języki programowania.
- Jako że jest to system rozproszony, jest to z natury złożony model.
- Różne usługi będą miały swój odrębny mechanizm, co skutkuje dużą ilością pamięci na nieustrukturyzowane dane.
- Skuteczne zarządzanie i praca zespołowa są niezbędne, aby zapobiec kaskadowemu rozprzestrzenianiu się problemów
- Odtworzenie problemu będzie trudnym zadaniem, jeśli zniknął on w jednej wersji i powrócił w najnowszej wersji.
- Niezależne wdrożenie jest skomplikowane w przypadku mikrousług.
- Architektura mikrousług wiąże się z wieloma dodatkowymi operacjami.
- Zarządzanie aplikacją jest trudne, gdy do systemu dodawane są nowe usługi
- Do obsługi heterogenicznie rozproszonych mikrousług potrzebna jest szeroka gama wykwalifikowanych specjalistów
- Mikrousługi są kosztowne, ponieważ do różnych zadań biznesowych trzeba utrzymywać inną przestrzeń serwerową.
SOA kontra mikrousługi
Usługi SOA są utrzymywane w organizacji za pomocą rejestru, który działa jak lista katalogów. Aplikacje muszą wyszukać usługi w rejestrze i wywołać usługę.
W innym świecie, SOA jest jak orkiestra, w której każdy artysta gra na swoim instrumencie, a dyrektor muzyczny wydaje wszystkim instrukcje.
Z drugiej strony mikrousługi to forma architektury zorientowanej na usługi, w której aplikacje są budowane jako zbiór różnych mniejszych usług, a nie jako pojedyncze oprogramowanie lub aplikacja.
Mikrousługi są jak trupa, w której każdy tancerz jest niezależny i wie, co musi zrobić. Więc jeśli pominą jakieś kroki, wiedzą, jak wrócić do właściwej kolejności. Teraz w tym samouczku dotyczącym architektury mikrousług poznajmy różnicę między SOA a mikrousługami.
Oto szczegółowe porównanie SOA i mikrousług
Parametr | SOA | Mikrosfery |
---|---|---|
Typ projektu | W architekturze SOA komponenty oprogramowania są udostępniane światu zewnętrznemu w celu wykorzystania w formie usług. | Micro Service jest częścią SOA. Jest to implementacja SOA. |
Zależność | Jednostki biznesowe są zależne. | Są od siebie niezależni. |
Rozmiar oprogramowania | Rozmiar oprogramowania jest większy niż w przypadku jakiegokolwiek konwencjonalnego oprogramowania | Rozmiar Oprogramowania w Mikrousługach jest zawsze niewielki |
Technologia stosu | Stos technologii jest niższy w porównaniu do Microservice. | Stos technologii mikrousług może być bardzo duży |
Charakter aplikacji | Charakter monolityczny | Pełny stos w naturze |
Niezależny i skupiony | Aplikacje SOA są zbudowane do wykonywania wielu zadań biznesowych. | Są zbudowane do wykonywania jednego zadania biznesowego. |
Rozlokowanie | Proces wdrażania jest czasochłonny. | Wdrożenie jest proste i mniej czasochłonne. |
Opłacalność | Bardziej opłacalne. | Less opłacalne. |
Skalowalność | Less w porównaniu do mikrousług. | Wysoce skalowalne. |
Logika biznesowa | Komponenty logiki biznesowej są przechowywane w domenie pojedynczej usługi. Proste protokoły przewodowe (HTTP z XML JSON). API jest obsługiwane przez SDK/klientów. | Logika biznesowa może działać w różnych domenach korporacyjnej magistrali usług, podobnie jak warstwy pomiędzy usługami oprogramowania pośredniczącego |
Narzędzia mikrousług
1) Wiremock: testowanie mikrousług
WireMock to elastyczna biblioteka do stubbingu i kpin z usług sieciowych. Może skonfigurować odpowiedź zwracaną przez API HTTP po otrzymaniu określonego żądania. Służy również do testowania mikrousług.
Download link:http://wiremock.org/
2) Okno dokowane
Docker to projekt typu open source, który pozwala nam tworzyć, wdrażać i uruchamiać aplikacje przy użyciu kontenerów. Korzystając z tych kontenerów, programiści mogą uruchamiać aplikację jako pojedynczy pakiet. Umożliwia dostarczanie bibliotek i innych zależności w jednym pakiecie.
Download link:https://www.docker.com/
3) Hystrix
Hystrix to biblioteka Java odporna na błędy. To narzędzie służy do oddzielania punktów dostępu do zdalnych usług, systemów i bibliotek innych firm w środowisku rozproszonym, takim jak mikrousługi. Poprawia cały system, izolując niesprawne usługi i zapobiegając kaskadowemu efektowi awarii.
Download Link:https://github.com/Netflix/Hystrix
Najlepsze praktyki mikrousług Architektura
- Oddzielny magazyn danych dla każdej Mikrousługi
- Zachowaj kod o podobnym poziomie dojrzałości.
- Oddzielna kompilacja dla każdej usługi Micro.
- Zawsze traktuj – surowo jak bezpaństwowca.
Podsumowanie
- Mikrousługi to zorientowany na usługi wzorzec architektury, w którym aplikacje są tworzone jako zbiór różnorodnych, najmniejszych, niezależnych jednostek usługowych.
- Mikrousługi Archiarchitektura to styl rozwoju architektonicznego, który pozwala na tworzenie aplikacji jako zbioru małych autonomicznych usług opracowanych na potrzeby określonej domeny biznesowej.
- Architektura monolityczna przypomina duży pojemnik, w którym wszystkie komponenty oprogramowania aplikacji są umieszczone w jednym pakiecie
- W Mikroserwisie każda jednostka całej aplikacji powinna być najmniejsza i powinna być w stanie dostarczyć jeden konkretny cel biznesowy
- W architekturze monolitycznej duża baza kodu może spowolnić cały proces rozwoju. Nowe wydania mogą trwać miesiące. Utrzymanie kodu jest trudne
- Dwa typy mikrousług to 1) bezstanowe 2) stanowe
- Mikroserwisy w Java polegać na sobie nawzajem i będą musieli się ze sobą komunikować. Pomaga położyć nacisk na konkretną funkcję i potrzeby biznesowe
- Architektura zorientowana na usługi, w skrócie SOA, to ewolucja rozproszonego przetwarzania oparta na modelu żądania lub odpowiedzi dla aplikacji synchronicznych i asynchronicznych
- W SOA komponenty oprogramowania są wystawione na świat zewnętrzny w celu wykorzystania w formie usług, podczas gdy Micro Service jest częścią SOA. Jest to implementacja SOA
- Wiremock, Docker i Hystrix to niektóre z popularnych narzędzi do obsługi mikrousług