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行所示: