2013-03-05 69 views
0

最近我碰到被稱爲麒麟Ruby的Web服務器來了,它有一個簡單而絕妙的主意:如何在共享套接字上運行本地tomcat集羣?

當獨角獸主機啓動,它加載我們的應用程序到內存中。一旦它準備好爲請求服務,它將派出16名工作人員。然後這些工作人員在套接字上選擇(),僅處理他們能夠處理的請求。通過這種方式,內核爲我們處理負載平衡。

針對此並行將設置與-Xmx384MB每個本地Tomcat集羣,然後讓每個人一個「共享插座上選擇(),只提供請求他們能夠處理」

我想知道如何調整tomcat源代碼或一些腳本,以使這種情況發生?

想想所有的可能性,如果你可以使用福爾曼一次運行3個併發的tomcat應用服務器!

回答

1

Tomcat已經這麼做了:它啓動N個工作線程(可以配置N個),它會將每個請求轉發給相應的Web應用程序。如果100個用戶嘗試訪問同一個Web應用程序,他們的請求將在N個線程之間共享,並且每個線程都將執行該應用程序的代碼。

編輯 Einhorn不符合Java EE標準,因此它可以削減許多角落。爲了做類似於Tomcat的事情,您需要啓動多個Tomcat進程(每個需要自己的套接字)以及負載均衡器代理/ http服務器。

您的應用程序也需要在數據庫級別爲此設計(即它們必須能夠處理寫入相同表格的多個進程)。

+0

謝謝,我正在尋找進程級別的可用性,所以我仍然想知道如何設置多個進程而不是擴展線程。 Einhorn看起來很有前途,我仍在深入研究它:https://stripe.com/blog/meet-einhorn – pulkitsinghal 2013-03-05 15:53:47

+0

Einhorn不符合J2EE標準,因此它可以削減很多角落。爲了做類似於Tomcat的事情,您需要啓動多個Tomcat進程(每個需要自己的套接字)以及負載均衡器代理/ http服務器。 – 2013-03-05 15:56:12

+0

這就是我想要避免的!我很想在某個地方改變一些tomcat的源代碼(或者可能是遺留的祕密),這樣我就可以啓動多個tomcat來使用共享套接字/端口。 – pulkitsinghal 2013-03-05 18:04:45

相關問題