天天看點

spider 配置檔案參考

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的配置檔案結構如下:

配置檔案中的所有節點元素(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注入方式調用本服務端包下各類提供的服務。

(pluginId= spider. channel)

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

cluster

定義下遊伺服器叢集

clusterName

定義叢集的名稱,需要和下遊的伺服器定義的nodeName相同,一個配置檔案中的各clusterName必須不同

reverseRegister

标記本叢集下的節點是否為反向注冊伺服器。

workNode

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

address

成員節點的ip位址

成員節點的端口号,對應于遠端節點spider.xml中plugin pluginId="spider.localService"->server定義的端口。

(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字元,定義本路由條目适配的功能号,功能号支援通配符格式,*代表比對全部功能,?代表比對一個可見字元。功能号之間可以用;或,分隔。

定義本路由條目比對的應用版本号,不支援通配,多個應用版本号之間可通過;或,分隔。

subSystemId

定義本路由條目比對的子系統号,不支援通配,多個子系統号之間可通過;或,分隔。

systemId

定義本路由條目比對的系統号,不支援通配,多個系統号之間可通過;或,分隔。

companyId

定義本路由條目比對的機構号,不支援通配,多個機構号之間可通過;或,分隔。

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

繼續閱讀