1. 分布式系统sofa框架的tr服务提供端,需要监听某一个端口,接收tr服务请求。
采用线程池技术,可同时接收多个请求,然后交给Sofa tr服务请求处理器进行处理。
public class ThreadPoolExecutor extends AbstractExecutorService {
public void run(){
try {
Runnable task = firstTask;
firstTask = null;
while (task != null || (task = getTask()) != null) {
runTask(task); //执行tr远程服务的调用
task = null;
}
} finally {
workerDone(this);
}
}
}
2. TR服务提供端请求处理器来处理SofaHSFRequest请求
(1) 打印tr请求日志;
(2) 获取tr请求参数: tr服务名称、应用名称、方法名称;
(3) 获取提供tr服务的接口实现类实例
(4) 获取要调用tr服务的方法
(5) 通过动态代理,method.invoke(),获取tr服务接口方法返回值
(6) 设置返回数据
(7) 打印执行tr服务后,即将返回的数据信息
(8) tr服务返回
//源码比较简单,通过下面截图,就可以了解tr服务的服务提供端的请求处理过程
3. TR服务消费端,调用TR远程服务过程简析
例如:在A系统的SceneParaFacadeClientImpl.java中,调用B系统的findSceneParaPages()方法,如下图14行所示: