Átirányíthatja a kéréseket több szolgáltatásra egyetlen végpont használatával. Ez a minta akkor lehet hasznos, ha több szolgáltatást kíván elérhetővé tenni egyetlen végponton, és a kérés alapján szeretné elvégezni az átirányítást a megfelelő szolgáltatáshoz.
Kontextus és probléma
Ha az ügyfél több szolgáltatást is használ, az ügyfél számára nehéz feladat külön végpontot létrehozni minden szolgáltatás számára, és felügyelni azokat. Egy e-kereskedelmi alkalmazás például olyan szolgáltatásokat biztosíthat, mint a keresés, az értékelések, a kosár, a fizetés és a rendelési előzmények. Mindegyik szolgáltatáshoz külön API tartozik. Az ügyfél ezeken keresztül éri el a szolgáltatásokat, és ismernie kell minden egyes végpontot ahhoz, hogy csatlakozhasson a szolgáltatásokhoz. Ha egy API megváltozik, az ügyfelet is frissíteni kell. Ha újrabont egy szolgáltatást két vagy három önálló szolgáltatásra, a szolgáltatás és az ügyfél kódját is módosítani kell.
Megoldás
Helyezzen egy átjárót az alkalmazások, szolgáltatások vagy telepítések csoportja elé. Az alkalmazás 7. rétegbeli útválasztását használva irányítsa át a kérést a megfelelő példányokhoz.
Ezzel a mintával az ügyfélalkalmazásnak csupán egyetlen végpontot kell ismernie, és azzal kell kommunikálnia. Szolgáltatások egyesítése vagy szétbontása után az ügyfelet nem feltétlenül kell frissíteni. Az továbbra is küldhet kéréseket az átjárónak, csak az útválasztás változik.
Az átjáró ezenkívül lehetővé teszi a háttérszolgáltatások elkülönítését az ügyfelektől, így az ügyfél hívásai egyszerűek maradnak, de az átjáró mögötti háttérszolgáltatások módosíthatók lesznek. Az ügyfél hívásai átirányíthatók a szolgáltatáshoz vagy szolgáltatásokhoz, amely(ek)nek kezelnie kell a várt ügyfélviselkedést. Ez lehetővé teszi szolgáltatások hozzáadását, felosztását és átszervezését az átjáró mögött az ügyfél módosítása nélkül.

Ez a minta segíthet a telepítés során is, mivel lehetővé teszi a frissítések bevezetésének kezelését. A szolgáltatás újabb verziójának telepítésekor az az aktuális verzióval egyidejűleg telepíthető. Az útválasztással szabályozhatja, hogy a szolgáltatás melyik verziója jelenjen meg az ügyfeleknek, így rugalmasan használhat különböző kiadási stratégiákat, legyen szó növekményes, párhuzamos vagy teljes frissítések bevezetéséről. Az új szolgáltatás telepítése után felfedezett hibák gyorsan visszavonhatók az átjáró konfigurációjának módosításával, ami nem befolyásolja az ügyfeleket.
Problémák és megfontolandó szempontok
- Az átjárószolgáltatás kritikus meghibásodási pont lehet a rendszeren belül. Győződjön meg arról, hogy az átjáró konfigurációja megfelelően ki tudja szolgálni a rendelkezésre állási követelményeket. Az implementálás során tartsa szem előtt a rugalmassági és hibatűrési képességeket.
- Az átjárószolgáltatás szűk keresztmetszetté válhat. Győződjön meg arról, hogy az átjáró megfelelő teljesítménnyel bír a várható terhelés kezelésére, és skálázható a várható későbbi növekedésnek megfelelően.
- Végezzen terhelésteszteket az átjárón annak ellenőrzéséhez, hogy az nem indít-e el hibasorozatokat a szolgáltatásokban.
- Az átjáró útválasztása 7. szintű. Az útválasztás történhet IP-cím, port, fejléc vagy URL-cím alapján.
Mikor érdemes ezt a mintát használni?
Használja ezt a mintát, ha:
- Az ügyfélnek több szolgáltatást kell használnia, amelyek egy átjáró mögött érhetőek el.
- Egyetlen végpont használatával kívánja egyszerűsíteni az ügyfélalkalmazásokat.
- A kérést kívülről címezhető végpontokról belső virtuális végpontokra kell átirányítani (például egy virtuális gép portjainak elérhetővé tétele virtuális IP-címek fürtözéséhez).
Nem érdemes ezt a mintát használni olyan egyszerű alkalmazásokhoz, amelyek csupán egy vagy két szolgáltatást használnak.
Példa
Az Nginxet útválasztóként használva létrehozhatja ezt az egyszerű konfigurációs fájt, amely a különböző virtuális könyvtárakban található alkalmazások kéréseit a háttérrendszer különböző gépeire irányíthatja át.
server {
listen 80;
server_name domain.com;
location /app1 {
proxy_pass http://10.0.3.10:80;
}
location /app2 {
proxy_pass http://10.0.3.20:80;
}
location /app3 {
proxy_pass http://10.0.3.30:80;
}
}
Az Azure-ban több szolgáltatás is beállítható egy Application Gateway-példány mögött, amely 7. rétegbeli útválasztást biztosít.