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