GlassFish由一個(gè)或多個(gè)domain組成,一個(gè)domain是一個(gè)管理域,每個(gè)domain和一個(gè)administration server(也稱作Domain Administration server或者DAS)關(guān)聯(lián),并可包含0到多個(gè)standalone instance或者cluster。每個(gè)cluster有一個(gè)或多個(gè)同類型的instance,一個(gè)instance運(yùn)行于一個(gè)單獨(dú)的JVM中,domain中的instance可運(yùn)行在不同的物理機(jī)器上。
下面介紹一下GlassFish中的組件構(gòu)成:
Server Instance
一個(gè)server instance運(yùn)行在一個(gè)單獨(dú)的JVM中,instance可分為兩種:standalong和cluster。DAS就是一個(gè)standalong的instance,可以完全不依賴cluster而存在。對(duì)于cluster的instance,可以對(duì)應(yīng)到weblogic中的managed server,我們也稱作traffic server。
Administrative Domain
Glassfish中可以創(chuàng)建多個(gè)domain,一個(gè)domain管理一組server instance,一個(gè)instance屬于一個(gè)單獨(dú)的domain,domain中的instance可運(yùn)行在不同的物理機(jī)器中。每個(gè)domain都有一套自己的配置、日志文件和部署區(qū)域,改變其中一個(gè)domain的配置不會(huì)影響到其它的domain。
Domain Administration Server(DAS)
一個(gè)domain有一個(gè)DAS,DAS是一個(gè)特別的server instance,它可以:驗(yàn)證管理員、接收來(lái)自于管理工具的請(qǐng)求、與domain中的instance進(jìn)行通訊。DAS通常叫做admin server或者default server,把它稱作default server是因?yàn)樗且粋€(gè)管理操作的默認(rèn)目標(biāo)。DAS中有一個(gè)倉(cāng)庫(kù)保存domain的配置和部署的應(yīng)用,如果DAS宕機(jī)了,不會(huì)影響其它instance的運(yùn)行,但是不能對(duì)管理的配置進(jìn)行修改了,這時(shí)你需要?jiǎng)?chuàng)建一個(gè)新的DAS去restore之前的配置。
Cluster
一個(gè)cluster表示一組server instance,cluster內(nèi)可以共享相同的應(yīng)用、資源和配置信息。cluster可以包含不同物理機(jī)器上的instance,通過(guò)DAS可以很容易的對(duì)多機(jī)上的cluster的生命周期進(jìn)行管理。Cluster能夠讓你很容易的處理水平擴(kuò)展、負(fù)載均衡和宕機(jī)保護(hù)等問(wèn)題。因?yàn)閏luster中所有的instance都擁有相同的資源和應(yīng)用配置,當(dāng)一個(gè)instance或機(jī)器宕了,load balancer可以發(fā)現(xiàn)失敗,并將traffic從失敗的instance上重定向到cluster中的其它可用的instance,并回復(fù)session的狀態(tài)。
Cluster、domain和instance之間的關(guān)系如下:
- 一個(gè)domain可以有0到多個(gè)cluster。
- 一個(gè)cluster可以有一到多個(gè)server instance。
- 一個(gè)cluster屬于一個(gè)單獨(dú)的domain。
Node Agent
Node agent運(yùn)行在每個(gè)server instance的機(jī)器中,包括運(yùn)行DAS的機(jī)器。node agent的作用是:
- 根據(jù)DAS的指示去啟動(dòng)和停止instance。
- 重啟失敗的instance。
- 提供失敗的server的log,以幫助遠(yuǎn)程診斷。
- 同步每個(gè)server instance的本地配置倉(cāng)庫(kù)和DAS的中央倉(cāng)庫(kù)。
- 當(dāng)創(chuàng)建了一個(gè)新的instance時(shí),它會(huì)創(chuàng)建instance所需的目錄,并同步DAS的中央倉(cāng)庫(kù)到instance的本地倉(cāng)庫(kù)。
- 當(dāng)刪除instance時(shí)執(zhí)行適當(dāng)?shù)那謇怼?/li>
每個(gè)物理機(jī)器至少需要一個(gè)node agent,如果一臺(tái)機(jī)器中的instance屬于多個(gè)domain,則每個(gè)domain都需要一個(gè)node agent,這種方式不推薦。因?yàn)閚ode agent要監(jiān)控server instance,所以node agnet必須要一直運(yùn)行。
理解了GlassFish中各個(gè)組件的作用,在企業(yè)級(jí)環(huán)境部署時(shí),就可以比較容易的搭建相應(yīng)的服務(wù)器架構(gòu),以使應(yīng)用程序得到最優(yōu)的運(yùn)行方式。