搜索
您的当前位置:首页正文

Dubbo:基本原理机制。

来源:步旅网

分布式服务框架:

  • 高性能和透明化的RPC远程服务调用方案
  • SOA服务治理方案
  • Apache MINA 框架基于Reactor模型通信框架,基于tcp长连接

Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况

分析源代码,基本原理如下:

当前线程怎么让它“暂停”,等结果回来后,再向后执行?

答:先生成一个对象obj,在一个全局map里put(ID,obj)存放起来,再用synchronized获取obj锁,再调用obj.wait()让当前线程处于等待状态,然后另一消息监听线程等到服 务端结果来了后,再map.get(ID)找到obj,再用synchronized获取obj锁,再调用obj.notifyAll()唤醒前面处于等待状态的线程。

正如前面所说,Socket通信是一个全双工的方式,如果有多个线程同时进行远程方法调用,这时建立在client server之间的socket连接上会有很多双方发送的消息传递,前后顺序也可能是乱七八糟的,server处理完结果后,将结果消息发送给client,client收到很多消息,怎么知道哪个消息结果是原先哪个线程调用的?

答:使用一个ID,让其唯一,然后传递给服务端,再服务端又回传回来,这样就知道结果是原先哪个线程的了。

下面我们用一个精简的图来说明最重要的两种Invoker:服务提供Invoker和服务消费Invoker:

转载:

因篇幅问题不能全部显示,请点此查看更多更全内容

Top