博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于服务的并行系统的通讯方式探讨
阅读量:2428 次
发布时间:2019-05-10

本文共 731 字,大约阅读时间需要 2 分钟。

作者:朱金灿

来源:

 

     最近在设计一个基于服务的并行系统。架构图大致如下:

 

 

        和同事讨论后,服务器部署的Java Web服务,计算节点上部署的是C++算法或其它语言算法。毫无疑问二者需要一个中间协议或中间层进行通讯。同事建议的方案是Java WebService+ Java服务程序(Jacob)+ com中间层+算法模块,其中Java服务程序+ com中间层+算法模块部署在计算节点上,Java WebService通过rmi和Java服务程序通讯,Java服务程序通过Jacob和com中间层通讯,com中间层再和算法模块通讯。

        我的方案是:Java Web+客户端C++服务程序+com中间层+算法模块,其中计算节点C++服务程序+com中间层+算法模块部署在计算节点上,Java WebService通过socket和计算节点C++服务程序通讯,计算节点C++服务程序通过com中间层和算法模块通讯。

 

        他的理由是rmi是成熟的java通讯技术,且可以直接调用远程对象,使用很方便。Java通过socket和C++程序通讯将会遇到很多难以解决的问题。

        我的理由是Java通过socket和C++程序通讯肯定也有很多程序的做法,虽然不如rmi使用那么方便。如果计算节点是Windows平台,C++可以直接调用com中间层,并不需要jacob这样的中间层(jacob的并发性差也颇被人诟病的),如果计算节点是Linux平台,Java服务程序需要使用jni之类的中间层和C++算法模块通讯,而C++服务程序可以直接和C++算法模块通讯,这样就避免了同时维护jacob和jni两个通讯中间层。可能开始Java通过socket和C++程序麻烦些,但避免了后期维护的麻烦。

你可能感兴趣的文章
Lustre 操作
查看>>
Lustre—配置和管理磁盘配额
查看>>
Lustre—磁盘配额测试
查看>>
Shell的格式化输出
查看>>
linux— nc/netcat命令使用技巧
查看>>
putty的使用和保存配置
查看>>
Shell 中 getopts 示例用法
查看>>
Shell netcat / nc 命令
查看>>
shell—字符串截取和去重
查看>>
修改无盘网络启动镜像
查看>>
bottle学习之使用socket获取本机IP和主机名
查看>>
bottle学习之JSON模块
查看>>
CSDN-markdown编辑器
查看>>
SSH加密密码中的非对称式密码学
查看>>
Mac Redis安装入门教程
查看>>
python3安装教程配置配置阿里云
查看>>
Mac快捷键和实用技巧
查看>>
Git的多人协作和分支处理测试
查看>>
mysql索引回表
查看>>
iterm2 保存阿里云登陆并防止断开连接
查看>>