基于服務的并行系統(tǒng)的通訊方式探討
作者:朱金燦
來源:http://blog.csdn.net/clever101
?
???? 最近在設計一個基于服務的并行系統(tǒng)。架構圖大致如下:
?
?
??????? 和同事討論后,服務器部署的Java Web服務,計算節(jié)點上部署的是C++算法或其它語言算法。毫無疑問二者需要一個中間協(xié)議或中間層進行通訊。同事建議的方案是Java WebService+ Java服務程序(Jacob)+ com中間層+算法模塊,其中Java服務程序+ com中間層+算法模塊部署在計算節(jié)點上,Java WebService通過rmi和Java服務程序通訊,Java服務程序通過Jacob和com中間層通訊,com中間層再和算法模塊通訊。
??????? 我的方案是:Java Web+客戶端C++服務程序+com中間層+算法模塊,其中計算節(jié)點C++服務程序+com中間層+算法模塊部署在計算節(jié)點上,Java WebService通過socket和計算節(jié)點C++服務程序通訊,計算節(jié)點C++服務程序通過com中間層和算法模塊通訊。
?
??????? 他的理由是rmi是成熟的java通訊技術,且可以直接調(diào)用遠程對象,使用很方便。Java通過socket和C++程序通訊將會遇到很多難以解決的問題。
??????? 我的理由是Java通過socket和C++程序通訊肯定也有很多程序的做法,雖然不如rmi使用那么方便。如果計算節(jié)點是Windows平臺,C++可以直接調(diào)用com中間層,并不需要jacob這樣的中間層(jacob的并發(fā)性差也頗被人詬病的),如果計算節(jié)點是Linux平臺,Java服務程序需要使用jni之類的中間層和C++算法模塊通訊,而C++服務程序可以直接和C++算法模塊通訊,這樣就避免了同時維護jacob和jni兩個通訊中間層??赡荛_始Java通過socket和C++程序麻煩些,但避免了后期維護的麻煩。