我來自客戶端編程背景(主要是C++)。但是,我現在偶爾需要進入一些Java的小型服務器端項目&,因此需要來自有經驗的服務器端人員的一些建議。我對應用程序服務器並不十分了解。需要一個應用程序服務器 - Java
是否有任何拇指規則或注意事項來決定程序何時需要應用程序服務器(如GlassFish或JBoss)?
我有兩臺使用Java編寫的服務器,都運行在專用機器上。一臺服務器在沒有任何App Server的情況下在Tomcat上運行第二臺服務器在應用程序服務器(Glassfish)上運行。
我需要寫一個相當簡單的程序,坐在中間。這是程序將要做的事
在套接字上偵聽。當連接來自第一臺服務器時,它會創建一個線程來接受連接&繼續收聽。
線程從第一個服務器獲取少量數據(比如100-200字節),數據格式很小&通過web服務調用將它傳遞給第二個服務器。它會返回webservice調用的返回值,並基於它進行一些處理 - 可能大約有10-20行代碼 - 這不是一些主要的處理 - 只是在不同的(第3)服務器上調用一些web服務調用。在此之後,它將一些數據返回給第一臺服務器 - 再次不多 - 可能是50個字節。
我的程序不是web服務。它僅以特定格式從第一臺服務器獲取消息&根據從第一臺服務器接收到的數據向第二臺服務器發出web服務調用。在某些情況下,您可以用這種方式思考它 - 它充當第一臺服務器的代理,以便將Web服務調用到第二臺服務器。
所有主要的工作是由第一臺服務器運行在Tomcat服務器上運行& GlassFish上運行的Web服務應用程序來完成。這兩個都是測試良好的程序。我想寫的中間程序非常簡單&我可以在半天內完成。但是,我擔心的是它是否能夠承受負擔。
有什麼樣的規則/考慮因素可以確定我是否可以將此Java程序作爲常規Windows服務運行,或者是否需要Glassfish或任何其他應用程序服務器之類的東西。
我應該考慮每分鐘/小時進入的連接數量嗎?我將爲每個連接分配一個線程,但線程本身不會很長壽。我應該在什麼樣的連接數閾值下考慮應用服務器?還有其他的考慮嗎?如果可能的話,我寧願避免使用Application Server。
是否在App Server下運行它只是一個問題 - 我還有什麼問題嗎?
不確定這是否適合您的用例,但此類服務連接的一種標準方式是通過使用JMS隊列的發佈 - 訂閱模型。每個服務都有一個消息隊列。您會在隊列中堆積消息,處理消息並將結果發佈到其他服務的隊列中。 –
@Singularity - 第一臺服務器以特定格式發送消息,並期望以特定格式回覆。我將研究JMS隊列,但我認爲JMS隊列有自己的格式。 – user93353
是JMS使用XML(Soap),但CDATA標籤允許將任何原始數據放入XML中。 –