Natív felhőbeli kommunikációs minták

Tipp.

Ez a tartalom egy részlet a .NET Docs-on elérhető, az Azure-hoz készült, natív felhőalapú .NET-alkalmazások tervezője című e-könyvből vagy egy ingyenesen letölthető PDF-ből, amely offline is olvasható.

Natív felhőbeli .NET-alkalmazások azure-beli eBook-borító miniatűrje.

Natív felhőrendszer létrehozásakor a kommunikáció jelentős tervezési döntéssé válik. Hogyan kommunikál egy előtérbeli ügyfélalkalmazás egy háttérbeli mikroszolgáltatással? Hogyan kommunikálnak egymással a háttérbeli mikroszolgáltatások? Milyen alapelveket, mintákat és ajánlott eljárásokat érdemes figyelembe venni a natív felhőbeli alkalmazások kommunikációjának megvalósítása során?

Kommunikációs szempontok

Monolitikus alkalmazásokban a kommunikáció egyszerű. A kódmodulok ugyanazon a végrehajtható helyen (folyamat) futnak együtt egy kiszolgálón. Ez a megközelítés teljesítménybeli előnyökkel járhat, mivel minden együtt fut a megosztott memóriában, de szorosan összekapcsolt kódot eredményez, amely nehezen karbantartható, fejleszthető és méretezhető.

A natív felhőrendszerek mikroszolgáltatás-alapú architektúrát implementálnak számos kis, független mikroszolgáltatással. Minden mikroszolgáltatás külön folyamatban fut, és általában egy fürtön üzembe helyezett tárolón belül fut.

A fürtök egy virtuális gépek készletét csoportosítják, hogy magas rendelkezésre állású környezetet alakítsanak ki. A felügyeletük egy vezénylési eszközzel történik, amely a tárolóalapú mikroszolgáltatások üzembe helyezéséért és felügyeletéért felelős. A 4–1. ábra egy , az Azure-felhőben üzembe helyezett Kubernetes-fürtöt mutat be a teljes körűen felügyelt Azure Kubernetes Services használatával.

Kubernetes-fürt az Azure-ban

4-1. ábra. Kubernetes-fürt az Azure-ban

A fürtben a mikroszolgáltatások API-kon és üzenetkezelési technológiákon keresztül kommunikálnak egymással.

Bár számos előnyt biztosítanak, a mikroszolgáltatások nem ingyenes ebéd. Az összetevők közötti helyi folyamatban lévő metódushívások mostantól hálózati hívásokra cserélődnek. Minden mikroszolgáltatásnak hálózati protokollon keresztül kell kommunikálnia, ami összetettebbé teszi a rendszert:

  • A hálózati torlódás, a késés és az átmeneti hibák állandó problémát jelentenek.
  • A rugalmasság (azaz a sikertelen kérések újrapróbálkozása) elengedhetetlen.
  • Egyes hívásoknak idempotensnek kell lenniük a konzisztens állapot megőrzése érdekében.
  • Minden mikroszolgáltatásnak hitelesítenie és engedélyeznie kell a hívásokat.
  • Minden üzenetet szerializálni kell, majd deszerializálni kell , ami költséges lehet.
  • Az üzenettitkosítás/visszafejtés fontossá válik.

A Microsofttól ingyenesen elérhető .NET Microservices: Architecture for Containerized .NET Applications című könyv részletesen ismerteti a mikroszolgáltatási alkalmazások kommunikációs mintáit. Ebben a fejezetben magas szintű áttekintést nyújtunk ezekről a mintákról, valamint az Azure-felhőben elérhető megvalósítási lehetőségekről.

Ebben a fejezetben először az előtérbeli alkalmazások és a háttérbeli mikroszolgáltatások közötti kommunikációval foglalkozunk. Ezután megnézzük, hogy a háttérbeli mikroszolgáltatások kommunikálnak-e egymással. Megismerjük az up és gRPC kommunikációs technológiát. Végül új, innovatív kommunikációs mintákat fogunk keresni a service mesh technológiával. Azt is látni fogjuk, hogyan biztosít az Azure-felhő különböző háttérszolgáltatásokat a natív felhőbeli kommunikáció támogatásához.