spider 配置文件參考

来源:http://www.cnblogs.com/zhjh256/archive/2016/11/19/6081252.html
-Advertisement-
Play Games

spider有一個配置文件spider.xml,為xml格式,spider.xml採用DTD進行管理,用於管理spider的所有特性、路由、高可用等。 配置文件支持三種不同的方式進行指定: 1、 通過環境變數指定。SPIDER_CONFIG環境變數指定spider啟動文件所在的位置。 2、 通過ja ...


spider有一個配置文件spider.xml,為xml格式,spider.xml採用DTD進行管理,用於管理spider的所有特性、路由、高可用等。

配置文件支持三種不同的方式進行指定:

1、 通過環境變數指定。SPIDER_CONFIG環境變數指定spider啟動文件所在的位置。

2、 通過java系統屬性執行。java系統屬性spider.config指定spider啟動文件所在的位置。

3、 從classpath獲取。該配置文件需存放在classpath*:目錄下,spider中間件啟動時會自動從classpath*下搜索第一個找到的spider.xml文件並將其作為spider的配置文件進行初始化,由於該配置文件通常需要被修改,所以一般不放置在jar中。

三者的優先順序為先從環境變數獲取,如果能獲取到則使用SPIDER_CONFIG環境變數指定的啟動文件。如果為空,則從java系統屬性獲取。如果還是獲取不到,則從預設的classpath*目錄下獲取。如果三個地方都獲取不到,則啟動失敗。

spider的配置文件結構如下:

<?xml version="1.0" encoding="UTF-8"?>
<spider>
    <nodeName value="client" cloud="false" role="production"
        serviceCenter="localhost:7070" appVersion="" charset="UTF-8" dev="true" detectInterval="60000"/>
    <plugins>
        <plugin pluginId="spider.localService" serviceTimeout="60000"
            zlibCompress="false" encrypt="false" anonymous="true"
            serviceProxyPackage="com.ld.net.spider.demo.parallel;com.ld.net.spider.manage.api;com.ld.net.spider.demo.broadcast;com.ld.net.spider.demo.bs.wx;com.ld.net.spider.demo.pl">
            <server enable="false" port="17070" reliable="false"
                threadCount="200" serviceExportPackage="" />
        </plugin>
        <plugin pluginId="spider.channel">
            <cluster clusterName="ANB" connectionSize="10">
                <workNode address="localhost" port="18051" />
            </cluster>
        </plugin>
        <plugin pluginId="spider.filter">
        </plugin>
    </plugins>
    <routeItems consistent="true">
        <routeItem serviceId="*" clusterName="ANB" />
        <!-- <routeItem serviceId="*" appVersion="" subSystemId=""
            systemId="" companyId="" clusterName="spider-server" /> -->
    </routeItems>
</spider>

 

配置文件中的所有節點元素(element)名和屬性名均為大小寫敏感,且採用駝峰式命名,並儘可能使用英文全稱。

配置文件的使用元素或者屬性的規範為:如果對象是特性,則作為屬性;如果對象本身是主體,則作為元素。

 

各節點元素(element)以及屬性的含義如下(綠色標註為已實現特性):

各節點元素(element)以及屬性的含義如下(綠色標註為已實現特性):

元素

屬性(--代表元素本身)

可選

預設值,含義和取值範圍

spider

--

spider配置文件根

nodeName

--

spider節點基本信息

value

Spider節點名稱,相同名稱的spider將自動組成集群,任意字元串,用於cloud模式

dev

運行模式,用於控制日誌輸出級別。true:開發模式,將輸出所有日誌信息;false:生產模式,將自動禁止輸出debug級別的日誌。預設false。

cloud

spider節點運行環境,true:運行於服務中心模式,將自動接收來自服務中心推送的下游節點變化,適合於大規模部署;false:運行於獨立管理模式,可通過restful api管理相關節點變化。

role

spider角色,prod/nb/np:作為生產伺服器運行;sc:作為服務中心運行。預設生產伺服器。除非配置為sc,否則均表示生產伺服器。只不過只有該節點配置為np時,並行處理插件才會生效,具體可見並行執行插件一節。

serviceCenter

服務中心地址,ip:port格式。

appVersion

長度為最長為8位,建議xx.xx.xx格式,本spider節點提供的應用服務版本,用於灰度升級,任意字元串,具體參見灰度升級一節。預設””,表示非特定版本。

 

     

 

     

 

     

 

charset

全局編碼格式,UTF-8或GBK。建議整個環境要麼UTF-8,要麼GBK,儘量避免有些UTF-8,有些GBK,不然容易出錯。

 

slowLongTime

慢請求執行時間,執行時間超過該長度的請求會被自動寫到本地慢日誌。預設3000毫秒。

 

dumpStat

是否啟用定期dump服務性能指標到本地,true:是,每隔5分鐘會自動dump一次,該參數獨立於cloud參數;false:否。預設:true。

 

tcpdump

是否啟用動態抓包和攔截。true:是;false:否。預設false。如果多個客戶端同時設置了抓相同功能號的包,則所有都會收到結果。該特性會嚴重影響性能,同時存在嚴重安全隱患,生產環境謹慎開啟。

 

detectInterval

心跳檢測間隔,預設60000毫秒。

 

     

plugins

--

spider插件列表,當前版本一共有3個插件,插件標識符不可修改,否則會導致spider啟動異常

plugin

(pluginId= spider.localService)

--

spdier插件信息,不同的插件具有不同的屬性,spider核心引擎插件,用於設置spider核心的基本特性

在netty的實現上,tcp隊列長度直接取/proc/sys/net/core/somaxconn的值,沒有提供API進行修改,故若需修改,需在OS層面修改,spider原計劃支持,後來取消

serviceTimeout

服務超時時間,可在service級別覆蓋,預設300秒,單位毫秒,正整數

zlibCompress

是否啟用全局zlib壓縮請求包,true或者false,預設false。建議區域網內不啟用,非區域網內啟用。

encrypt

是否啟用AES256加密請求包,true或者false,預設false

serviceProxyPackage

作為spider客戶端時要調用的遠程服務的包路徑,以;或,分隔。只要在該參數上設置了相關路徑,服務端如果在serviceExportPackage參數上設置了對應路徑,本客戶端就可以通過@Autowired註入方式調用遠程服務端對應包含提供的服務。

為了確保遠程調用的正確性,對於進行RPC調用的情況,需要確保在本節點中不包含代理類的實現,否則啟動時預設情況下Spring使用類型註入時會出現多個實現的異常,否則就需要使用Qualifier或者Resource註解。

 

anonymous

伺服器是否允許無認證連接。true:允許;false:不允許。預設true。具體見安全一節。該參數在服務端設置,客戶端根據服務端的響應報文被動執行。當節點作為客戶端角色時,該參數沒有作用,也即無需設置。

server

--

spider運行於伺服器模式時的相關信息

enable

是否啟用服務端,false代表不啟用,僅作為客戶端,true代表啟用。如果為true,則port不能為空。

port

作為伺服器時的埠號,1025-63335

 

   

threadCount

 

 

作為伺服器時業務處理線程的數量,建議為cpu核心數的20-50倍之間,預設cpu數量的20倍,一般建議不要設置

serviceExportPackage

作為伺服器時自動發佈的spider服務的包路徑,以;或,分隔。只要服務端在該參數上設置了相關路徑,客戶端只要在service-proxy-package參數上設置對應路徑就可以直接通過@Autowired註入方式調用本服務端包下各類提供的服務。

plugin

(pluginId= spider. channel)

--

spdier插件信息,不同的插件具有不同的屬性,通道插件,通道下的每個cluster代表一個伺服器集群,由旗下的workNode組成

cluster

--

定義下游伺服器集群

clusterName

定義集群的名稱,需要和下游的伺服器定義的nodeName相同,一個配置文件中的各clusterName必須不同

 

   

reverseRegister

標記本集群下的節點是否為反向註冊伺服器。

workNode

--

定義下游伺服器集群中的成員節點。一個cluster範圍內的workNode必須address+port唯一。

address

成員節點的ip地址

port

成員節點的埠號,對應於遠程節點spider.xml中plugin pluginId="spider.localService"->server定義的埠。

plugin

(pluginId= spider. filter)

filter

過濾器插件,每個filter代表一個過濾器實例。具體參見《1.3 流水線插件》。

routeItems

--

定義路由表的信息。路由用來配置將不同的服務請求轉發到相應的spider伺服器。

路由條目從上往下解析,當上面和下麵的路由配置衝突時,使用上面的路由條目。

 

consistent

是否啟用一致性路由策略。true:啟用,此時spider運行時會根據功能號>版本號>機構號>子系統號>系統號(產品系統號)的規則,對路由表進行排序,此時無論路由條目的順序如何,最終的路由目標是一致的;false:不啟用,此時spider根據定義的路由條目順序進行匹配,不同的路由條目順序可能導致不同的路由結果。預設:false。建議啟用。

routeItem

--

定義路由條目,路由條目可以使用多個維度進行匹配以便靈活滿足各種企業系統業務場景,目前支持根據功能號、版本號、子系統號、系統號、機構號五個維度進行組合,其中優先順序從高到底為:功能號>版本號>機構號>子系統號>系統號(產品系統號)。

五個維度中,功能號、子系統號為靜態屬性,必須編譯期確定(一般來說,這兩者選一即可)。版本號、機構號、系統號(產品系統號)為運行時屬性,可運行時設置,主要適用於多租戶和灰度升級的場景。

其中功能號必須定義,如果匹配全部,則使用*即可,功能號與各維度均為and關係;其他均可選。沒有定義代表匹配所有,即*。

至少需要定義一個指向本地處理插件的條目,最簡單為<routeItem serviceId=”*” clusterName=”spider.localService” />

多個路由條目的順序會影響最後的路由結果,如下所示:

<routeItem serviceId=”11*” appVersion=”1.0.2” clusterName=”BSNP-C00001v2” />

<routeItem serviceId=”11*;21*” companyId=”C00001” clusterName=”BSNP-C00001” />

在上述的條目中,如果某1.0.2版本C00001機構的11xxxxxx功能到本節點,會被轉發給BSNP-C00001v2;如果上述路由條目順序反一下,則會轉發給BSNP-C00001。

serviceId

8位ASCII字元,定義本路由條目適配的功能號,功能號支持通配符格式,*代表匹配全部功能,?代表匹配一個可見字元。功能號之間可以用;或,分隔。

appVersion

定義本路由條目匹配的應用版本號,不支持通配,多個應用版本號之間可通過;或,分隔。

subSystemId

定義本路由條目匹配的子系統號,不支持通配,多個子系統號之間可通過;或,分隔。

systemId

定義本路由條目匹配的系統號,不支持通配,多個系統號之間可通過;或,分隔。

companyId

定義本路由條目匹配的機構號,不支持通配,多個機構號之間可通過;或,分隔。

clusterName

定義本條目中的功能將轉發到的spider遠程伺服器。應該確保每條獨立的路由均有不同的clusterName,如果多條路由具有相同的目標節點,應該在相應屬性上使用;分隔的方式進行合併。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 分散式系統關鍵點 分散式系統(distributed system)是建立在網路之上的軟體系統。正是因為軟體的特性,所以分散式系統具有高度的內聚性和透明性。因此,網路和分散式系統之間的區別更多的在於高層軟體(特別是操作系統),而不是硬體。內聚性是指每一個資料庫分佈節點高度自治,有本地的資料庫管理系統 ...
  • 轉載:http://www.jb51.net/article/40193.htm JS里設定延時: 使用SetInterval和設定延時函數setTimeout 很類似。setTimeout 運用在延遲一段時間,再進行某項操作。 setTimeout("function",time) 設置一個超時對 ...
  • 分組後,統計記錄條數: SELECT num,count(*) AS counts from test_a GROUP BY num; 查詢結果如下: 對num去重後的數量的統計: SELECT count(t.counts) FROM ( SELECT num,count(*) AS counts ...
  • 協議與相容性 spider使用java語言開發,使用Spring作為IoC容器,採用TCP/IP協議,在此基礎上,結合SaaS系統模式的特性進行針對性和重點設計,以更加靈活和高效的滿足多租戶系統、高可用、分散式部署的要求。 採用JSON作為序列化機制,後續版本可能會考慮支持protobuf(java ...
  • 1、局部變數 運行結果: 0 1 2 3 4 4 i是for語句裡面的局部變數。但在python裡面,在同一方法體內,定義了一個局部變數,該變數的作用域是定義行開始至該方法體結束。 在其他編程語言,“print i”那一句是有誤的,因為i沒有定義 例1: 結果: True 例2: 最後一行有誤,因為 ...
  • 一、怎樣判斷對象是否可以轉換?可以使用instanceof運算符判斷一個對象是否可以轉換為指定的類型,參看實例: TestInstanceof.java 二、下列語句哪一個將引起編譯錯誤?為什麼?哪一個會引起運行時錯誤?為什麼? m=d; d=m; d=(Dog)m; d=c; c=(Cat)m; ...
  • 都說搞C的牛叉,那是因為C解決問題,全靠程式員自己。而我們Java有異常機制,數組越界了會提示,開發效率也比C高,不需要程式員對底層瞭解太多,這一切的一切都歸功於Java Virtual Machine-Java虛擬機。JVM其實就是一個抽象的電腦,它有自己的指令集,有自己的機器語言(ByteCo... ...
  • 隔了兩周,首先回顧一下,在Mybatis中的SqlMapper配置文件中引入的幾個擴展機制: 1.引入SQL配置函數,簡化配置、屏蔽DB底層差異性 2.引入自定義命名空間,允許自定義語句級元素、腳本級元素 3.引入表達式配置,擴充SqlMapper配置的表達能力 前面兩條已經舉過例子,現在來看看怎麼 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...