Správa pracovní zátěže |
Technické poznámky k ukázkové aplikaci BeenThere |
Vyhledání zdrojového kódu |
Kontrola poznámek ke kódu |
Zdrojový kód pro aplikaci BeenThere je umístěn v adresáři
Zákazníci se systémem z/OS: Na platformě z/OS není strom zdrojového kódu ukázek k dispozici, protože ukázkové aplikace nejsou pro platformu z/OS sestaveny.
Aplikace BeenThere demonstruje možnosti správy pracovní zátěže (WLM) produktu IBM WebSphere Application Server Network Deployment Edition. Aplikace BeenThere obsahuje servlet BeenThere a bezstavový objekt BeenThere typu session enterprise bean. Servlet BeenThere demonstruje činnost aplikačního serveru v klastru, pro který je zpracováván požadavek HTTP. Objekt BeenThere typu enterprise bean demonstruje činnost aplikačního serveru v klastru, pro který je zpracováván požadavek na objekt enterprise bean. Objekt BeenThere typu enterprise bean je vyvoláván servletem BeenThere.
Servlet BeenThere zobrazuje následující informace:
Kromě toho může servlet BeenThere provádět následující akce:
Prostředí ukázky použité pro demonstraci správy pracovní zátěže webového kontejneru a kontejneru EJB je znázorněno na následujícím obrázku:
Obrázek 1: Prostředí ukázky
Mezi počítače v tomto prostředí patří následující:
Konfigurace obsahuje dva serverové klastry: MyWebCluster a MyEJBCluster. Serverový klastr je tvořen skupinou aplikačních serverů. Dojde-li k selhání jednoho z členských serverů, budou požadavky směrovány na ostatní členy klastru. Každý z ukázkových klastrů sestává ze dvou členů klastru. Klastr MyWebCluster obsahuje členy klastru WebServer1 a WebServer2, klastr MyEJBCluster obsahuje členy klastru EJBServer1 a EJBServer2.
Toto konfigurované prostředí je ukázkou použitou pouze pro demonstraci spouštění aplikace BeenThere. V provozním prostředí je třeba provádět pečlivé plánování prostředků, aby bylo možné určit počet členů aplikačního serveru, kteří mají být vytvořeni v rámci konkrétního počtu počítačů, na základě očekávané zátěže klientskými požadavky.
Produkt WebSphere Application Server Network Deployment Edition poskytuje správu pracovní zátěže (WLM) pro požadavky HTTP a požadavky EJB.
Správa pracovní zátěže pro požadavky HTTP je řízena modulem plug-in webového serveru.
Prohlédněte si konfiguraci na obrázku 1. V počítači web je spuštěn server IBM HTTP Server, který zpracovává požadavky HTTP na každý z aplikačních serverů WebServer1 a WebServer2, které sestávají ze členů klastru MyWebCluster a je v nich spuštěn servlet BeenThere. Tyto aplikační servery jsou konfigurovány v počítačích app1 a app2 v uvedeném pořadí. Kromě toho je modul plug-in serveru IBM HTTP Server konfigurován tak, aby měl server WebServer1 nastavenou váhu WLM 2 a počítač WebServer2 měl nastavenou váhu WLM 3. Váhy si lze představovat jako čítače spouštěné s konfigurovanou hodnotou, přičemž se hodnota snižuje o 1 po zpracování každého požadavku. Požadavky jsou zpracovávány metodou round-robin (každý s každým) pro každý aplikační server, jehož aktuální hodnota čítače váhy je větší než 0. V případě hodnoty 0 je aplikační server vynechán. Po snížení všech čítačů váhy na hodnotu 0 jsou obnoveny konfigurované hodnoty čítačů váhy všech aplikačních serverů a proces zpracování začíná znovu.
Správa pracovní zátěže pro požadavky EJB je řízena interně řadičem správy WLM v rámci produktu WebSphere Application Server.
Prohlédněte si konfiguraci na obrázku 1. Je definován klastr MyEJBCluster sestávající ze členů aplikačního serveru EJBServer1 a EJBServer2, kteří jsou odpovědní za spouštění bezstavového objektu BeenThere typu session enterprise bean. Servlet BeenThere provádí volání objektu enterprise bean s cílem získat informace o zpracování týkající se aplikačního serveru se spuštěným objektem enterprise bean. Kromě toho jsou tyto servery konfigurovány s použitím hodnot váhy 1 a 3 v uvedeném pořadí.
Na platformě z/OS se hodnoty váhy používají k vyvažování zátěže požadavků služby HTTP, nepoužívají se však k vyvažování zátěže požadavků protokolu IIOP (Internet Inter-ORB Protocol).
Aplikace BeenThere využívá rozhraní API pro administraci v prostředí WebSphere Application Server. Prostřednictvím těchto rozhraní mají aplikace přístup ke konfiguračním informacím běhových komponent a prostředí:
Poskytuje rozhraní na straně serveru pro získávání informací o atributech aplikačního serveru i možnost provádění standardních funkcí správy modulu JMX MBean.
Poskytuje klientská rozhraní pro vzdálený objekt AdminService. Třída AdminClient poskytuje zástupce pro vzdálený objekt AdminService prostřednictvím některého z konektorů JMX (Java Management Extensions).
Poskytuje rozhraní pro zadávání dotazů nebo úpravy konfiguračních dat (lokálně nebo vzdáleně) a spravuje umístění a obsah konfiguračních dokumentů aplikačního serveru.
V rámci demonstrace výkonu a flexibility, které mají aplikace k dispozici při používání administrativních rozhraní produktu WebSphere Application Server, využívá aplikace BeenThere všechna tato rozhraní následujícími způsoby:
Rozhraní AdminService je používáno servletem BeenThere a objektem enterprise bean k získávání názvu uzlu, názvu aplikačního serveru a ID procesu pro aplikační server, na kterém jsou spuštěny. Následující úsek kódu demonstruje způsob získávání informací o atributech serveru:
// Získání rozhraní AdminService produktu WebSphere. AdminService adminService = AdminServiceFactory.getAdminService(); // Získání instance Admin Local Server MBean pro produkt WebSphere. ObjectName localServer = adminService.getLocalServer(); // Získání názvu uzlu. nodeName = (String) adminService.getAttribute(localServer, "nodeName"); // Získání názvu aplikačního serveru. serverName = (String) adminService.getAttribute(localServer, "name"); // Získání ID procesu aplikačního serveru. serverPid = (String) adminService.getAttribute(localServer, "pid");
Rozhraní AdminClient se používá pro připojování k procesu správce implementace s cílem načíst hodnoty váhy členů klastru pro všechny členy aplikačního serveru v klastru se spuštěným objektem BeenThere typu enterprise bean. Následující úsek kódu demonstruje způsob získávání instance rozhraní AdminClient:
// Získání rozhraní AdminService produktu WebSphere. AdminService adminService = AdminServiceFactory.getAdminService(); // Získání instance rozhraní AdminClient pro správce implementace. adminClient = adminService.getDeploymentManagerAdminClient();
Rozhraní ConfigService se používá ke čtení konfiguračního dokumentu cell.xml produktu WebSphere Application Server s cílem určit, zda je aplikace BeenThere spuštěna v prostředí WebSphere Application Server Base Edition nebo Network Deployment Edition. Následující úsek kódu demonstruje způsob určení prostředí, ve kterém je aplikace spuštěna:
// Vytvoření nové relace správy produktu WebSphere. Session session = new Session(); // Získání instance rozhraní ConfigService produktu WebSphere // pro aplikační server, na kterém je tento servlet spouštěn. ConfigService configService = ConfigServiceFactory.getConfigService(); if (configService != null) { // Čtení dokumentu cell.xml. ObjectName cellObj = ConfigServiceHelper.createObjectName(null, "Cell"); ObjectName[] cellObjs = configService.queryConfigObjects(session, null, cellObj, null); if (cellObjs.length != 0) { cellObj = cellObjs[0]; String cellName = (String) configService.getAttribute(session, cellObj, "name"); String cellType = (String) configService.getAttribute(session, cellObj, "cellType"); if (cellType.equals("DISTRIBUTED")) { websphereND = true; } } // Uvolnění relace. configService.discard(session);Je-li zjištěno prostředí Network Deployment, je povolena a zobrazena volba zobrazování váhy členů klastru pro objekt bean, protože tato volba je platná pouze v tomto typu prostředí. V opačném případě nebude volba zobrazena jako volba s možností výběru.