我想編寫Java接口的數據分析插件。該接口可能在不同的計算機上運行。接口將發送命令,Python程序可以返回大量數據。該接口由Java Webstart系統分發。兩者都從MySQL服務器訪問主數據。爲Java接口編寫Python數據分析服務器
實施溝通有什麼不同的方式和優勢?當然,我在互聯網上做了一些研究。雖然有很多建議,我仍然不知道有什麼區別,以及如何決定。 (我不知道他們)
我發現了一個建議,使用套接字,這似乎很好。編寫一個專門爲每個連接分配一個Python分析過程的服務器很簡單(在針對特定客戶端的一次通信請求後可能會保留臨時數據)?
我想了解如何使用套接字並傳遞YAML字符串。 也許我的主要問題是:RabbitMQ,ZeroMQ,CORBA,SOAP,XMLRPC等系統的關係和優勢是什麼?
也有人建議使用管道或共享內存。但那不符合我的要求?
是否有任何方法有利於調試或其他大小?
我希望有人能幫助我理解技術並幫助我確定解決方案,因爲很難從技術描述中判斷。
(我不認爲像Jython中,JEPP,...解決方案)
謝謝!這是一個非常好的解釋。你的意思是扭曲避免了一些我會用線程遇到的問題(我也不知道)?但是我仍然可以有單獨的服務器進程來保持一個連接客戶端的請求之間的通信狀態? HTTP有一些限制,對於簡單的命令YAML的原始傳輸很好?響應可能會有MB大小的數據。如果我爲每個客戶端連接創建一個線性進程,似乎我不需要隊列? – Gerenuk
扭曲讓你定義自己的協議,這在本質上是握手,「誰 - 發送 - 什麼 - 時」,而連接合同都制定瞭如何定義。 HTTP本身就是定義響應和請求語法的其中之一。 Twisted的美妙之處在於反應器模式,它可以通過編程方式處理事件循環來消除對OS線程的需求。您可以在協議保持狀態,有一噸例如聊天服務器教程,做到這些,不像無狀態HTTP的。它確實是一個網絡庫,而不僅僅是一個簡單的http偵聽器。 – DeaconDesperado