服务器和服务器之间通讯,我该用rmi还是socket?

tuchun 2008-12-12 09:53:45
目前我参与了一个JAVA实时系统的开发,由于服务器端是分布式编程,多个服务器之间需要频繁传递数据。
现在我决定用socket和rmi两个中选一种技术来实现服务器之间的通讯。
如果用socket的话,需要自己封装协议来处理不同的通讯请求,但效率好高些。
如果用rmi的话,实现要简单,但效率可能要低些。
考虑到服务器都是部署在本地,并非远程部署,这样的话是否可以忽略rmi带来的效率影响呢?
希望大家都来发表下意见或者有过类似经验的朋友指点。。。。
tuchun123@gmail.com
...全文
423 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mails2008 2010-12-29
  • 打赏
  • 举报
回复
顶一个。。。。。。。见识了。
左大神在这 2008-12-15
  • 打赏
  • 举报
回复
服务器都是部署在本地,RMI没问题,RMI本身就是解决分布计算来的.
jasph77 2008-12-15
  • 打赏
  • 举报
回复
corba 非常理想的 分布方案。 如果都是java环境 rmi + 消息中间件,不要担心效率,绝对够用

效率高的吓人
tianyesky 2008-12-12
  • 打赏
  • 举报
回复
最好用JMS了,p2p的点对点通信有较高的可靠性,而且代码也不复杂.不想花钱用MQ的话可寻求开源的如opennms,joram等.

本地RMI很快的,可放心使用.

TCP实现的话自己封装比较烦,在发送和接收都应独立线程排队处理(如果量大).你还要注意一点即需要经常reset outputstream,否则cache会把memory压爆
tuchun 2008-12-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tianyesky 的回复:]
我不知道你这个调用是不是指RMI连上了后1秒往进写100条数据,如果是那答案是可以的.但我不知道被调用端处理的效率怎么样,如果比较低,最好建立队列并发线程来处理,不要积压在TCP缓存里.如果是我,我会每秒钟只写一次数据,这个数据对象包含了过去1秒内所有需要传送的消息,也算是异步通信了.

不要试图短时间内连接-中断-再连接...面向连接的服务要连上后才有效率
[/Quote]

不是连上了1秒往里面写100条
而是被调用的服务器上的某个对象的方法1秒内会被其他多台服务器调用100次。
数据量到不大 因为服务器之间的通讯主要不是来传递数据的 而是像事件一样 激发一些事件
就相当于被调用服务器有个方法 这个方法要向其他客户端发送数据 而这个方法在1秒中之内会被其他服务器(1台或多台)远程调用100次以上

目前2中方案 第一种socket自己封装协议 另一种是rmi 哪种更合适? 我偏向于用rmi
恋空 2008-12-12
  • 打赏
  • 举报
回复
勉強
tianyesky 2008-12-12
  • 打赏
  • 举报
回复
我不知道你这个调用是不是指RMI连上了后1秒往进写100条数据,如果是那答案是可以的.但我不知道被调用端处理的效率怎么样,如果比较低,最好建立队列并发线程来处理,不要积压在TCP缓存里.如果是我,我会每秒钟只写一次数据,这个数据对象包含了过去1秒内所有需要传送的消息,也算是异步通信了.

不要试图短时间内连接-中断-再连接...面向连接的服务要连上后才有效率

tuchun 2008-12-12
  • 打赏
  • 举报
回复
webservice没必要吧

我的需求是本地的多台服务器之间通讯,不是和客户端通讯,因此不用考虑防火墙。
目前就是想问一下 RMI本地通讯效率这么样,如果RMI调用次数100/s或者更高呢?
Landor2004 2008-12-12
  • 打赏
  • 举报
回复
请用webservice来做通讯,基于http协议,这样避免了防火墙等限制

而且现在webservice技术也很成熟
yangki 2008-12-12
  • 打赏
  • 举报
回复
尽量不要用socket,会给不同的系统间带来开发的复杂性, 而且不同的平台间还要考虑字节序列的问题

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧