我在我們公司實施一個新的應用程序,我正在尋找方法來做羣集。根據jboss文檔here,有兩種類型的體系結構可用。客戶端攔截器和外部負載平衡架構
- 客戶端攔截
- 外部負載均衡
問題1:在客戶端攔截器架構。客戶端擁有代理對象,並知道將消息路由到哪個服務器。誰在客戶端在這裏?我知道Java腳本/ HTML不能容納代理對象。它是在節點前面的spring/servlet層嗎?
問題2:外部負載平衡器是否知道代碼和節點可以包含的服務的任何內容或者它只是使用算法將請求委託給?
我在我們公司實施一個新的應用程序,我正在尋找方法來做羣集。根據jboss文檔here,有兩種類型的體系結構可用。客戶端攔截器和外部負載平衡架構
問題1:在客戶端攔截器架構。客戶端擁有代理對象,並知道將消息路由到哪個服務器。誰在客戶端在這裏?我知道Java腳本/ HTML不能容納代理對象。它是在節點前面的spring/servlet層嗎?
問題2:外部負載平衡器是否知道代碼和節點可以包含的服務的任何內容或者它只是使用算法將請求委託給?
對於1 -客戶端,是遠程EJB動態代理和/或客戶端應用的容器(桌面應用)
對於2 - 外部負載平衡器不知道代碼任何東西。 (我看到這個解決方案的使用遠遠超出問題1的情況)
有很多方法來配置集羣,具體取決於您的負載平衡和容錯目標。例如,您可以在未羣集的應用程序服務器之間進行負載平衡。由於沒有會話複製,所以容錯能力更低,性能更快。
這裏是數字1。
假設在問題1,我有一個分佈式應用程序更多的細節。說一個運行在應用程序服務器上的Web App和EJB,並且我想調用另一個應用程序服務器的一些EJB。
當您調用遠程EJB時,應用程序服務器會生成一個轉移到調用服務器的類。這是動態代理,它包含了所有網絡通信的東西。我們通常會看到兩種形式的配置:(1)知道集羣並將調用其他節點的動態代理類;(2)具有節點列表的CORBA URL,即corbaloc :: nodeA.host.com,nodeB.host.com/...
這裏是2號。
第二種情況更詳細一點通常是在那裏我們提供基於HTTP的服務, WebUI,REST,SOAP等等給「外部」世界的呼叫者。
Apache的HTTPD與mod_jk的插件是在JBoss文檔here
該請求可以被髮送到不同的服務器以處理負載或故障的例子。 HTTP會話對象在節點之間複製。(JBoss中的JGroups庫處理這個問題,IP多播也是一種常見技術)
因此,負載均衡器/該集羣協作處理會話信息。
所以,要正確理解上面的第1點。你是說當客戶端應用程序需要調用另一個應用程序而不涉及(REST或其他html請求)時使用'客戶端攔截器'? – Zeus
並且當需要html /外部世界調用服務器時使用外部負載均衡器? – Zeus
如果在沒有會話複製的情況下使用負載平衡,它會不會是一個會話粘滯,這意味着來自客戶端的請求總是首先進入負載平衡服務器? – Zeus