/ Interná komunikácia mikroservisov - mikroprocesy

Microservisná vnútorná komunikácia - mikroservisy

Čítal som o architektúre mikroservisov. Stále však nedokážem pochopiť komunikačný mechanizmus medzi mikroservisami.
V mnohých článkoch sa uvádza, že mikroservisy súzvyčajne vystavené prostredníctvom RESTful API. Keď však prehľadávate internet, vždy uvidíte implementácie založené na správach a udalostiach pre backendovú komunikáciu.

Takže som zmätený, je REST API štandardom pre všetky mikroservisy alebo vidíme mikroservisy bez koncových bodov REST.

odpovede:

3 pre odpoveď č. 1

Pre váš problém najskôr nechajte porozumieť tomu, ako jedna služba interaguje medzi sebou, a vytvorte dve služby servisných objednávok a služby zákazníkom:

  1. Jedna služba potrebuje niektoré údaje z inej služby dospracuj svoje požiadavky, napr .: povedzme, že chceš zadať objednávku, takže od ui musíš kliknúť na http požiadavku na objednanie služby (ktorá môže byť odpočinková, alebo musíš mať medzi sebou ni bránu, ktorá používa iný protokol ako protobu) na volanie objednať službu na zadanie objednávky, teraz predpokladať, že služba musí skontrolovať platnosť zákazníka, takže služba musí volať na zákaznícky servis v synchronizácii - s najväčšou pravdepodobnosťou zasiahnete odpočinok alebo vytvoríte protobuf alebo budete mať trvalý webový konektor medzi službou a potom po odpovedi zo zákazníckeho servisu, objednajte službu ďalej.

V tomto prípade je potrebné napodobniť synchronizovanú komunikáciu, jedným priamym prístupom je odpočinok alebo protobuff, alebo napodobniť prostredníctvom správ

  1. Na základe jednej servisnej udalosti chcete aktualizovaťiná služba: v tomto spravidla sa uprednostňuje komunikačná zbernica, kde jedna služba vysiela udalosť a viaceré ďalšie služby majú poslucháča v komunikačnej zbernici a podľa toho reagujú. Napr. Povedzme, že pri aktualizácii mena zákazníka v zákazníckom servise chcete aktualizovať meno zákazníka uložené v pamäti v objednávkovej službe. V tomto prípade, keď je meno aktualizované v zákazníckom servise, vydáva aktualizovanú udalosť mena zákazníka, objednáva sa služba objednávania, potom na to reagujte

Vaša tretia otázka znie, je možné mať službu bez koncového koncového bodu ::: áno je to možné, ale každá služba musí byť dosiahnuteľná. Preto je potrebné použiť odpočinok alebo inú formu

Vyššie uvedený odkaz: microservices.io je veľmi dobré, prejdite si to znova


1 pre odpoveď č. 2

REST nie je jediný štýl, ktorý je k dispozícii pre mikroservisy medzi mikroprocesormi (aka medziprocesová komunikácia / IPC), ale najpopulárnejší Technológia IPC používaná aplikáciami založenými na architektúra v štýle mikroservisov, Existujú aj ďalšie technológie ako Apache Thrift a gRPC ktoré môžu slúžiť na rovnaký účel. V podstate všetky tieto technológie sú priemyselnou implementáciou systému RPC (Diaľkové volanie procedúr).

Vrelo odporúčam prečítať si toto odkaz od Microservices Expert - Chris Richardson


1 pre odpoveď č. 3

Jeden z výhody používania mikroprocesov (ak nie najväčší) je to, že vylučuje nejakédlhodobý záväzok k technologickému zásobníku. Pri vývoji novej služby si môžete vybrať nový technologický zásobník. Podobne pri veľkých zmenách existujúcej služby ju môžete prepísať pomocou nového zásobníka technológií.

Takže môžeš zvoľte si akýkoľvek požadovaný komunikačný mechanizmus, pokiaľ vám to nezabráni v zmene technologickej úrovne, REST over HTTP je dobrá voľba, pretožeSkryje technológie, ktoré používa mikroprocesor na generovanie odpovedí synchrónnym spôsobom požiadavka-odpoveď. Dobre sa hodí aj komunikácia založená na správach, pretože správy by tiež mohli skryť technológie používané na ich výrobu (pokiaľ nepoužívate zabudovanú serializáciu programovacieho jazyka výrobcu), t. RabbitMQ alebo Apache Kafka.


1 pre odpoveď č. 4

REST je univerzálne podporovaný, akceptovaný vo všetkých jazykoch, ak sú všetky vaše backendové služby spustené na rovnakom mieste, v priepustnosti sa nemusíte príliš odlišovať.

Každopádne je to dobrý nápad investovať a učiť sa gRPCalebo Thrift, ako je uvedené vyššie, môžete všetky svoje interné služby previesť napríklad na gRPC (podporované vo väčšine jazykov) a vykonať konverziu medzi gRPC a REST na svojej univerzálnej bráne.

Existujú dva prístupy k vnútornýmarchitektúra, hovory CQRS vs Plain REST. Udalosti / správy sú príkladom CQRS, kde môžete oddeliť operácie na strane čítania / zápisu a všetky operácie na strane zápisu môžu byť implementované prostredníctvom udalostí pre lepšiu škálovateľnosť a priepustnosť.