关于跨语言调用与同步异步等的疑惑

12-01-10 angrysnail
各位大牛好,最近涉及一些跨语言的开发,用了一些诸如ice,activemq及rmi等的技术,但总觉得,好像用起来不太对,请诸位帮忙释疑。

环境:

因为有大数据量的实时数据传输,是实时的数据,所以我们启用了ice中的icestorm这个消息中间件来传输,我们所需的数据到 一个java的应用服务器,然后经由这个服务器通过activemq传给gui.

由实时数据采集到应用服务器,这个地方,我们都是一个异步的交互,定两个topic,一边订阅一个,然后用其中一个topic来完成数据的传输。

应用服务器到gui,我这么考虑,用一个rmi来调用应用服务器上的一个方法,由其返回某个topic,然后我用activemq在gui上接到传的数据。

感觉现在思维很混乱,所以整个描述也很晦涩,总而言之吧,我希望大家能否谈一下:

1.跨语言的调用如rmi,httpinvoker等与activemq这种东西的区别,二都分别适用于哪些场合。

2.同步调用与异步调用在这种地方应该怎么配合,尤其是有大数据量传输的时候,如传一个包括10万个对象的集合。

望各位不吝赐教。

              

banq
2012-01-10 17:34
2012年01月10日 09:20 "@angrysnail"的内容
如rmi,httpinvoker等与activemq这种东西的区别 ...

RMI和HttpInvoker属于同步架构,每次发出调用必然等待响应;mq属于异步架构,每次只是发出消息,无需等待响应。

关于同步架构和异步架构从更大意义来讲,是一种单体性能和整体效率之间的区别,对于大型分布式系统,整体效率高,整体性能才高,而不是每个单体性能高就行,不是简单的1+1=2。

对于大数据Big data的高性能实时传输,从架构上主要分离连接和处理等多个环节,连接是保证每个实时数据采集客户端都能和服务器握手,也就是专门负责握手通讯的服务器,这个服务器握手后,将数据立即异步分发到其他服务器进一步处理。

如果你的大数据采集后,还需要分析处理,属于大数据有态架构,建议参考:如何打败CAP定理?

angrysnail
2012-01-11 10:05
我现在如此处理,请看是否合适:

环境:

异步:gui<--->activeMq<--->应用服务器

同步:gui---->应用服务器

1.gui向应用服务器去取大批量的实时数据,我先用httpInvoker将取数据的条件传给应用服务器,然后,应用服务器返给我一个topicName【即其将在这个topicName上发送实时数据】

2.在gui上httpinvoker返回后,gui根据这个topicname来建一个与activemq的连接,从这个上面取数据,然后处理。

这种处理方式可行否?有什么更好的建议吗

猜你喜欢