国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

dubbo源碼解析——Router

zhangqh / 1093人閱讀

摘要:我們先來看看的繼承體系圖從圖中可以看出他有三個實現(xiàn)類分別是,,判斷是否需要篩選的路由,相對比較簡單沒有配置參數(shù),直接選擇正常的獲取配置參數(shù),判斷是否需要選擇正常選擇剔除的判斷是否的方式判斷是否協(xié)議腳本路由規(guī)則支持腳本引擎的所有腳本,比如等,

我們先來看看Router的繼承體系圖

從圖中可以看出,他有三個實現(xiàn)類,分別是ConditionRouter,MockInvokersSelector,ScriptRouter

MockInvokersSelector

判斷是否需要篩選mock invoker的路由,相對比較簡單

@Override
    public  List> route(final List> invokers,
                                      URL url, final Invocation invocation) throws RpcException {
        if (invocation.getAttachments() == null) {
            // 沒有配置參數(shù),直接選擇正常的invoker
            return getNormalInvokers(invokers);
        } else {
            // 獲取mock配置參數(shù),判斷是否需要mock
            String value = invocation.getAttachments().get(Constants.INVOCATION_NEED_MOCK);
            if (value == null)
                // 選擇正常invoker
                return getNormalInvokers(invokers);
            else if (Boolean.TRUE.toString().equalsIgnoreCase(value)) {
                // 選擇mock invoker
                return getMockedInvokers(invokers);
            }
        }
        return invokers;
    }

    private  List> getMockedInvokers(final List> invokers) {
        if (!hasMockProviders(invokers)) {
            return null;
        }
        List> sInvokers = new ArrayList>(1);
        for (Invoker invoker : invokers) {
            if (invoker.getUrl().getProtocol().equals(Constants.MOCK_PROTOCOL)) {
                sInvokers.add(invoker);
            }
        }
        return sInvokers;
    }

    private  List> getNormalInvokers(final List> invokers) {
        if (!hasMockProviders(invokers)) {
            return invokers;
        } else {
            // 剔除mock的invoker
            List> sInvokers = new ArrayList>(invokers.size());
            for (Invoker invoker : invokers) {
                if (!invoker.getUrl().getProtocol().equals(Constants.MOCK_PROTOCOL)) {
                    sInvokers.add(invoker);
                }
            }
            return sInvokers;
        }
    }

    private  boolean hasMockProviders(final List> invokers) {
        boolean hasMockProvider = false;
        for (Invoker invoker : invokers) {
            // 判斷是否mock invoker的方式:判斷protocol是否mock協(xié)議
            if (invoker.getUrl().getProtocol().equals(Constants.MOCK_PROTOCOL)) {
                hasMockProvider = true;
                break;
            }
        }
        return hasMockProvider;
    }
ScriptRouter

腳本路由規(guī)則 支持 JDK 腳本引擎的所有腳本,比如:javascript, jruby, groovy 等,通過 type=javascript 參數(shù)設(shè)置腳本類型,缺省為 javascript。

ConditionRouter

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/72130.html

相關(guān)文章

  • dubbo源碼解析——概要篇

    摘要:服務(wù)提供者代碼上面這個類會被封裝成為一個實例,并新生成一個實例。這樣當(dāng)網(wǎng)絡(luò)通訊層收到一個請求后,會找到對應(yīng)的實例,并調(diào)用它所對應(yīng)的實例,從而真正調(diào)用了服務(wù)提供者的代碼。 這次源碼解析借鑒《肥朝》前輩的dubbo源碼解析,進行源碼學(xué)習(xí)。總結(jié)起來就是先總體,后局部.也就是先把需要注意的概念先拋出來,把整體架構(gòu)圖先畫出來.讓讀者拿著地圖跟著我的腳步,并且每一步我都提醒,現(xiàn)在我們在哪,我們下一...

    Meathill 評論0 收藏0
  • dubbo源碼解析——消費過程

    摘要:上一篇源碼解析概要篇中我們了解到中的一些概念及消費端總體調(diào)用過程。由于在生成代理實例的時候,在構(gòu)造函數(shù)中賦值了,因此可以只用該進行方法的調(diào)用。 上一篇 dubbo源碼解析——概要篇中我們了解到dubbo中的一些概念及消費端總體調(diào)用過程。本文中,將進入消費端源碼解析(具體邏輯會放到代碼的注釋中)。本文先是對消費過程的總體代碼邏輯理一遍,個別需要細講的點,后面會專門的文章進行解析。...

    darkbug 評論0 收藏0
  • Dubbo 源碼分析 - 集群容錯之 Router

    摘要:源碼分析條件路由規(guī)則有兩個條件組成,分別用于對服務(wù)消費者和提供者進行匹配。如果服務(wù)提供者匹配條件為空,表示對某些服務(wù)消費者禁用服務(wù)。此時第六次循環(huán)分隔符,,。第二個和第三個參數(shù)來自方法的參數(shù)列表,這兩個參數(shù)分別為服務(wù)提供者和服務(wù)消費者。 1. 簡介 上一篇文章分析了集群容錯的第一部分 -- 服務(wù)目錄 Directory。服務(wù)目錄在刷新 Invoker 列表的過程中,會通過 Router...

    jcc 評論0 收藏0
  • dubbo源碼解析(四十)集群——router

    摘要:源碼分析一創(chuàng)建一個該類是基于條件表達式規(guī)則路由工廠類。路由工廠獲得配置項,默認為獲得獲得類型讀取規(guī)則獲得腳本路由獲得路由后記該部分相關(guān)的源碼解析地址該文章講解了集群中關(guān)于路由規(guī)則實現(xiàn)的部分。 集群——router 目標:介紹dubbo中集群的路由,介紹dubbo-cluster下router包的源碼。 前言 路由規(guī)則 決定一次 dubbo 服務(wù)調(diào)用的目標服務(wù)器,分為條件路由規(guī)則和腳本路...

    FullStackDeveloper 評論0 收藏0
  • dubbo源碼解析(三十七)集群——directory

    摘要:首先將根據(jù)路由規(guī)則服務(wù)提供者和配置規(guī)則三種類型分開,分別放入三個集合,然后對每個集合進行修改或者通知設(shè)置禁止訪問置空關(guān)閉所有的關(guān)閉禁止訪問引用老的傳入的為空,說明是路由規(guī)則或配置規(guī)則發(fā)生改變,此時是空的,直接使用。 集群——directory 目標:介紹dubbo中集群的目錄,介紹dubbo-cluster下directory包的源碼。 前言 我在前面的文章中也提到了Directory...

    blastz 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<