Olyan segítő szolgáltatásokat hozhat létre, amelyek egy otthoni használatra szánt szolgáltatás vagy alkalmazás nevében küldenek hálózati kéréseket. A nagykövet szolgáltatás elképzelhető egy folyamaton kívüli proxyként, amely az ügyféllel közös elhelyezésű.
Ez a minta hasznos lehet a gyakori ügyfélkapcsolati feladatok, például a monitorozás, naplózás, útválasztás, biztonság (pl. TLS), valamint rugalmassági minták kiszervezésére, nyelvtől független módon. Gyakran használják régi alkalmazásokhoz vagy más, nehezen módosítható alkalmazásokhoz a hálózatkezelési képességeik bővítése érdekében. Továbbá lehetővé teszi, hogy a funkciókat egy specializált csapat implementálhassa.
Kontextus és probléma
A rugalmas felhőalapú alkalmazások olyan funkciókat igényelnek, mint az áramköri megszakítás, az útválasztás és a monitorozás, valamint képesnek kell lenniük hálózati konfigurációs frissítések végrehajtására. Előfordulhat, hogy az örökölt alkalmazásokat vagy a meglévő kódtárakat nehéz vagy lehetetlen frissíteni ezen funkciók hozzáadásával, mert a kód már nem felügyelt, vagy a fejlesztőcsapat nem tudja egyszerűen módosítani.
Hálózati hívások esetén is jelentős konfigurációra lehet szükség a kapcsolat, hitelesítés és engedélyezés terén. Ha ezeket a hívásokat több, sokféle nyelvből és keretrendszerből álló alkalmazásban használjuk, a hívásokat minden példányra vonatkozóan külön kell konfigurálni. Ezenfelül lehetséges, hogy a hálózati és biztonsági funkciókat egy vállalaton belüli központi csapatnak kell majd felügyelnie. Nagy méretű kódbázis esetén kockázatos lehet a csapat számára egy olyan alkalmazáskódot frissíteni, amelyet nem ismer.
Megoldás
Helyezze az ügyfél-keretrendszereket és -könyvtárakat egy külső folyamatba, amely proxyként funkcionál az alkalmazás és a külső szolgáltatások között. Telepítse a proxyt ugyanabban a gazdakörnyezetben, mint az alkalmazást, hogy így lehetővé tegye az útválasztás, a rugalmasság és a biztonsági funkciók irányítását, és elkerülje a kiszolgálóval kapcsolatos hozzáférési korlátozásokat. A nagykövet minta segítségével továbbá szabványosíthatja és kiterjesztheti a kialakítást. A proxy figyelni tudja a teljesítmény-mérőszámokat, például a várakozási időt vagy az erőforrás-használatot, a monitorozás pedig ugyanabban a gazdakörnyezetben történik, ahol az alkalmazás is van.
A nagykövetre kiszervezett funkciók az alkalmazástól függetlenül is felügyelhetők. Frissítheti és módosíthatja a nagykövetet anélkül, hogy megzavarná az alkalmazás örökölt funkcióit. Azt is lehetővé teszi, hogy külön, specializált csapatok implementálhassák és tarthassák karban a nagykövetre ruházott biztonsági, hálózati és hitelesítési funkciókat.
A nagykövet-szolgáltatások telepíthetők oldalkocsiként egy felhasználó alkalmazás vagy szolgáltatás életciklusának végigkísérésére. Vagy akár telepítheti a nagykövetet démonként vagy Windows szolgáltatásként, ha a nagyköveten több különálló, azonos gazdagépen futó folyamat osztozik. Ha a felhasználó szolgáltatás tárolóba van helyezve, a nagykövetet külön tárolóként kell létrehozni ugyanazon a gazdagépen, és konfigurálni kell a megfelelő hivatkozásokat a kommunikációhoz.
Problémák és megfontolandó szempontok
- A proxy némi késéses többletterhelést okoz. Mérje fel, hogy esetleg jobb megközelítés-e egy ügyféloldali kódtár, amelyet közvetlenül az alkalmazás hív meg.
- Fontolja meg, milyen hatásai lehetnek, ha a proxy általánosított funkciókat is tartalmaz. Például a nagykövet kezelheti az újrapróbálkozásokat, de ez kockázatos lehet, hacsak nem idempotens mindegyik művelet.
- Fontolja meg azt a mechanizmust, amely lehetővé teszi, hogy az ügyfél átadjon egy kontextust a proxynak, majd vissza az ügyfélnek. Például kapcsolja ki a HTTP-kérelmek fejlécei esetében az újrapróbálkozást, vagy adja meg az újrapróbálkozások maximális számát.
- Gondolja át, hogyan fogja csomagolni és üzembe helyezni a proxyt.
- Fontolja meg, hogy egyetlen megosztott példányt szeretne-e használni minden ügyfél számára, vagy inkább ügyfelenként külön-külön példányt.
Mikor érdemes ezt a mintát használni?
Használja ezt a mintát, ha:
- Egy közös ügyfélkapcsolati funkciókészletet kell létrehoznia különböző nyelvekhez és keretrendszerekhez.
- Ki kell szerveznie az egyidejű ügyfélkapcsolati problémákat infrastruktúra-fejlesztőkre vagy más specializált csapatokra.
- Támogatnia kell a felhő- vagy a fürtkapcsolati követelményeket egy örökölt vagy nehezen módosítható alkalmazásban.
Nem érdemes ezt a mintát használni, ha:
- A hálózati kérések késései kritikus következményekkel járnak. A proxy némi többletterhelést jelent, bár minimális, és bizonyos esetekben ez hatással lehet az alkalmazásra.
- Ha az ügyfélkapcsolati funkciókat egyetlen nyelv használja. Ebben az esetben jobb megoldás lehet egy ügyféloldali kódtár, amelyet csomag formájában oszthat szét a fejlesztői csapatok között.
- Ha a csatlakozási funkciók nem általánosíthatók, és mélyebb integrációt igényelnek az ügyfélalkalmazással.
Számítási feladatok tervezése
Az építészeknek értékelniük kell, hogyan használható az Ambassador-minta a számítási feladat kialakításában az Azure Well-Architected Framework pilléreiben foglalt célok és alapelvek kezelésére. Példa:
Pillér | Hogyan támogatja ez a minta a pillércélokat? |
---|---|
A megbízhatósági tervezési döntések segítenek a számítási feladatnak ellenállóvá válni a hibás működéssel szemben, és biztosítani, hogy a hiba bekövetkezése után teljesen működőképes állapotba kerüljön. | Az e minta által megkönnyített hálózati kommunikációs közvetítő pont lehetővé teszi a megbízhatósági minták hozzáadását a hálózati kommunikációhoz, például újrapróbálkozást vagy pufferelést. - RE:07 Önmegőrzés |
A biztonsági tervezési döntések segítenek biztosítani a számítási feladatok adatainak és rendszereinek titkosságát, integritását és rendelkezésre állását. | Ez a minta lehetőséget nyújt a hálózati kommunikáció biztonságának növelésére, amelyet az ügyfél nem tudott közvetlenül kezelni. - Standard kiadás:06 Hálózati vezérlők - Standard kiadás:07 Titkosítás |
Mint minden tervezési döntésnél, fontolja meg az ezzel a mintával bevezethető többi pillér céljaival szembeni kompromisszumokat.
Példa
Az alábbi ábrán látható, ahogyan egy alkalmazás nagykövetproxyn keresztül küld egy kérést egy távoli szolgáltatásnak. A nagykövet biztosítja az útválasztást, az áramköri megszakítást és a naplózást. Meghívja a távoli szolgáltatást, majd visszaadja a választ az ügyfélalkalmazásnak: