Урок за микроуслуги: Какво е, Archiструктура и пример

⚡ Умно обобщение

Микросървисите са сервизно-ориентиран архитектурен модел, при който приложението се изгражда като съвкупност от малки, независими сервизни единици. Този ресурс обяснява монолитната спрямо микросървисната архитектура, техните разлики, предизвикателства, сравнение на SOA, популярни инструменти и най-добри практики.

  • 🧩 Основна концепция: Микросервизите разделят приложението на еднофункционални, независимо разгръщаеми модули, всеки от които е собственост на малък екип от 5 до 10 разработчици.
  • 📦 Монолитен контраст: Монолитно приложение обединява всички функции в един пакет на един сървър, така че мащабирането означава изпълнение на множество пълни копия.
  • 🏗️ Микросервиз Archiтекстура: Всяка услуга обработва една бизнес възможност, работи на собствен екземпляр и комуникира чрез леки, безсъстоятелни протоколи.
  • 🗄️ Федерирани данни: Всяка микросървис притежава собствено хранилище за данни, така че промяната в модела на данни на една услуга не засяга останалите.
  • 🛠️ Инструменти и практики: Инструменти като WireMock, Docker и Hystrix поддържат тестване, внедряване и отказоустойчивост; всяка услуга запазва състоянието си със собствена компилация.

Урок за микроуслуги

Какво представляват микроуслугите?

микро Услуги е ориентиран към услугата архитектурен модел, при който приложенията са изградени като колекция от различни най-малки независими сервизни единици. Това е а софтуерно инженерство подход, който се фокусира върху разлагането на приложение на еднофункционални модули с добре дефинирани интерфейси. Тези модули могат да бъдат независимо разгърнати и управлявани от малки екипи, които притежават целия жизнен цикъл на услугата.

Терминът „микро“ се отнася до размера на микроуслуга, която трябва да може да се управлява от един екип за разработка (от 5 до 10 разработчици). При тази методология големите приложения се разделят на най-малките независими единици.

Какво е монолитен Archiтекстура?

Казано по-просто, може да се каже, че монолитната архитектура е като голям контейнер, в който всички софтуерни компоненти на приложението са групирани в един пакет. Нека обсъдим пример за магазин за електронна търговия в контекста на монолитна архитектура.

монолитен Archiструктура на приложението за електронна търговия

монолитен Archiструктура на приложението за електронна търговия

Във всяко приложение за електронна търговия има някои стандартни функции като търсене, RevПреглед и оценки, както и Плащания. Тези функции са достъпни за клиенти, използващи техния браузър или приложения. Когато разработчикът на сайта за електронна търговия внедри приложението, то представлява едно цяло. Кодът за различни функции като търсене, Rev„Преглед и оценки“ и „Плащания“ са на един и същ сървър. За да мащабирате приложението, трябва да стартирате множество екземпляри (сървъри) на тези приложения.

Какво е Microservice Archiтекстура?

Микросервиз Archiтекстура е архитектурен стил на разработка, който позволява изграждането на приложения като колекция от малки автономни услуги, разработени за бизнес домейн. Това е вариант на архитектура със структурен стил, който помага да се подредят приложенията като колекция от слабо свързани услуги. Микросервизът Architecture съдържа фини услуги и леки протоколи.

Нека вземем пример за приложение за електронна търговия, разработено с микросървисна архитектура. В този пример за микросървисна архитектура, всяка микросървисна услуга е фокусирана върху една бизнес възможност. Търсене, Оценяване и Revview и Payment имат свой собствен екземпляр (сървър) и комуникират помежду си.

микро Услуги Archiтекстура

микро Услуги Archiтекстура

В монолита ArchiВ структурата всички компоненти се обединяват в един модул. Но в микросървисите ArchiВ структурата си те са разпределени в отделни модули (микросервизи), които комуникират помежду си, както е показано в примера за микросервизи по-горе.

Комуникацията между микроуслугите е комуникация без състояние, където всяка двойка заявка и отговор е независима. Следователно Microservices могат да комуникират без усилие. В микросервиз ArchiВ структурата данните са федерализирани. Всяка микросървис има отделно хранилище за данни.

Микроуслуги срещу монолитни Archiтекстура

микро Услугимонолитен Archiтекстура
Всяка единица от цялото приложение трябва да е най-малката и трябва да може да постигне една конкретна бизнес цел.Единна кодова база за всички бизнес цели.
Стартирането на услугата е сравнително бързо.Стартирането на услугата отнема повече време.
Изолирането на грешки е лесно. Дори ако една услуга спре да работи, другите могат да продължат да функционират.Изолирането на грешки е трудно. Ако някоя специфична функция не работи, цялата система се поврежда. За да се справи с този проблем, приложението трябва да бъде преизградено, тествано отново и внедрено отново.
Всички микросървиси трябва да бъдат слабо свързани, така че промените, направени в единия, да не засягат другия.Монолитна архитектура е тясно свързана. Промените в единия модул от код влияят на другия.
Бизнесът може да използва повече ресурси за услуги, които генерират по-висока възвръщаемост на инвестициите.Тъй като услугите не са изолирани, индивидуалното разпределение на ресурсите не е възможно.
Повече хардуерни ресурси могат да бъдат разпределени за услугата, която се използва често. В примера за електронна търговия по-горе, повече потребители проверяват списъка с продукти и търсят в сравнение с плащанията, така че повече ресурси могат да бъдат разпределени за микроуслугата за търсене и списък с продукти.Мащабирането на приложения е предизвикателство, както и разточително.
Микросървисите винаги остават последователни и непрекъснато достъпни.Инструментите за разработка се претоварват, тъй като процесът трябва да започне от нулата.
Данните са федерализирани. Това позволява на отделните микросървиси да възприемат модел на данни, който най-добре отговаря на техните нужди.Данните са централизирани.
Малки, фокусирани екипи. Паралелно и по-бързо развитие.Необходим е голям екип и значителни усилия за управление на екипа.
Промяната в модела на данни на една микроуслуга не засяга други микроуслуги.Промяната в модела на данните засяга цялата база данни.
Взаимодейства с други микросървиси, като използва добре дефинирани интерфейси.Не е приложимо.
Микросървисите работят на принципа, който се фокусира върху продукти, а не върху проекти.Поставя акцент върху целия проект.
Няма кръстосани зависимости между кодовите бази. Можете да използвате различни технологии за различни микроуслуги.Една функция или програма зависи от други.

Микросервизни предизвикателства

  • Микросервизите разчитат един на друг и ще трябва да комуникират помежду си.
  • В сравнение с монолитните системи, има повече услуги за наблюдение, които са разработени с помощта на различни програмни езици.
  • Тъй като е разпределена система, тя е присъщо сложен модел.
  • Различните услуги ще имат свои собствени механизми, което ще доведе до голямо количество памет за неструктурирани данни.
  • Необходими са ефективно управление и екипна работа, за да се предотврати каскадно възникване на проблеми.
  • Възпроизвеждането на проблем ще бъде трудна задача, когато той е изчезнал в една версия и се появи отново в най-новата версия.
  • Независимото внедряване е сложно с микросървисите.
  • Архитектурата на микросервизите носи много режийни операции.
  • Трудно е да се управлява приложението, когато към системата се добавят нови услуги.
  • Необходим е широк набор от квалифицирани специалисти, които да поддържат хетерогенно разпределени микросървиси.
  • Микроуслугата е скъпа, тъй като трябва да поддържате различно сървърно пространство за различни бизнес задачи.

SOA срещу микроуслуги

SOA услугите се поддържат в организацията от регистър, който действа като списък с директории. Приложенията трябва да търсят услугите в регистъра и да ги извикват. С други думи, SOA е точно като оркестър, където всеки артист свири със своя инструмент, докато музикалният директор дава инструкции на всички.

От друга страна, микросървисите са форма на сервизно-ориентирана архитектура, при която приложенията се изграждат като колекция от различни по-малки услуги, вместо като един софтуер или приложение. Микросървисите са като трупа, където всеки танцьор е независим и знае какво трябва да прави. Така че, ако пропусне някои стъпки, знае как да се върне към правилната последователност. Ето подробно сравнение между SOA и микросървиси.

ПараметърSOAмикро Услуги
Тип дизайнВ SOA софтуерните компоненти са изложени на външния свят за използване под формата на услуги.Micro Service е част от SOA. Това е имплементация на SOA.
ЗависимостБизнес единиците са зависими.Те са независими един от друг.
Размер на софтуераРазмерът на софтуера е по-голям от всеки конвенционален софтуер.Размерът на софтуера винаги е малък в микросървисите.
Технологичен стекТехнологичният стек е по-нисък в сравнение с Microservice.Технологичният стек на микросервизите може да бъде много голям.
Естество на приложениетоМонолитна по природа.Пълен стек в природата.
Независим и фокусиранSOA приложенията са създадени да изпълняват множество бизнес задачи.Те са създадени да изпълняват една бизнес задача.
внедряванеПроцесът на внедряване отнема много време.Внедряването е лесно и отнема по-малко време.
Ефективност на разходитеПо-рентабилен.Less рентабилен.
скалируемостLess в сравнение с Microservices.Силно мащабируем.
Бизнес логикаКомпонентите на бизнес логиката се съхраняват в един сервизен домейн, с прости протоколи за комуникация (HTTP с XML или JSON) и API, управлявани от SDK/клиенти.Бизнес логиката може да съществува в различни домейни, със слоеве, подобни на корпоративна Service Bus, между услугите (Middleware).

Инструменти за микроуслуги

1) Wiremock: Тестване на микроуслуги

WireMock е гъвкава библиотека за заглушаване и имитиране на уеб услуги. Тя може да конфигурира отговора, връщан от HTTP API, когато получи конкретна заявка. Използва се и за тестване на микросървиси.

Изтегляне на връзката: http://wiremock.org/

2) Докер

Docker е проект с отворен код, който ни позволява да създаваме, внедряваме и изпълняваме приложения, използвайки контейнери. Използвайки тези контейнери, разработчиците могат да изпълняват приложения като един пакет. Това ви позволява да изпращате библиотеки и други зависимости в един пакет.

Изтегляне на връзката: https://www.docker.com/

3) Хистрикс

Hystrix е отказоустойчивост Java библиотека. Този инструмент е предназначен да разделя точките на достъп до отдалечени услуги, системи и библиотеки на трети страни в разпределена среда, като например микросървиси. Той подобрява цялостната система, като изолира отказващите услуги и предотвратява каскадния ефект на отказите.

Връзка за изтегляне: https://github.com/Netflix/Hystrix

Най-добри практики на микроуслуги Archiтекстура

  • Отделно хранилище за данни за всяка микросървис.
  • Поддържайте кода на подобно ниво на зрялост.
  • Отделна компилация за всяка микросървис.
  • Винаги третирайте всеки сървър като без състояние.

Въпроси и Отговори

Възможностите на изкуствения интелект често са пакетирани като отделни микросървиси, така че приложенията могат да извикват модел през API, без да го вграждат. Изкуственият интелект също така захранва интелигентно маршрутизиране, автоматично мащабиране и откриване на аномалии в много услуги.

Да. Инструментите за наблюдение, базирани на изкуствен интелект, корелират лог файлове, показатели и tracв различните услуги, за да открива повреди, да предвижда затруднения и да локализира първопричината по-бързо от ръчния анализ в голяма разпределена система.

Микросървисите обикновено се класифицират като бездържавни и с поддържане на състояние. Бездържавните микросървиси не запазват данни между заявките, докато микросървисите със запазване на състоянието поддържат данни или състояние на сесията, често подкрепени от собствено специално хранилище за данни.

Големи технологични компании, като например Netflix, Amazon, Uber и Spotify използвайте микросървиси за независимо мащабиране и често внедряване. Подходът е подходящ за приложения с висок трафик, базирани в облака, които се нуждаят от бързи, изолирани издания.

Обобщете тази публикация с: