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的配置文件结构如下:

<?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,如果多条路由具有相同的目标节点,应该在相应属性上使用;分隔的方式进行合并。

时间: 2024-08-27 18:33:27

spider 配置文件参考的相关文章

ES配置文件参考与参数详解

cluster.name: data-cluster node.name: "data-es-05" #node.data: false # Indexing & Cache config index.number_of_shards: 5 index.number_of_replicas: 1 index.cache.field.type: soft index.cache.field.expire: 10m index.cache.query.enable: true in

Redis配置文件参考

Redis配置文件解析网上都有,这里不赘述了.提供一些值得修改的参数,标注红色的参数尤其需要注意,不然容易出现主从全量同步死循环 NETWORK bind 127.0.0.1 默认是bind 127.0.0.1,注释掉 protected-mode no 默认protected-mode yes,改为no port 6379 建议修改掉,避免使用默认端口 tcp-backlog 511 建议调大至2048并同时调大Linux内核参数 /proc/sys/net/core/somaxconn 至2

gvim配置文件参考

set nu! set autoindentset cindent colorscheme desert     syntax enable      syntax onset tags=tags;    set autochdirlet Tlist_Ctags_Cmd='ctags.exe'let Tlist_Show_One_File=1let Tlist_OnlyWindow=1let Tlist_Use_Right_Window=0let Tlist_Sort_Type='name'le

[记录]一则HTTP配置文件参考记录

# cat ../conf/httpd.conf | grep -vE "^$|^#" ServerTokens OS ServerRoot "/etc/httpd" PidFile run/httpd.pid Timeout 60 KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 15 <IfModule prefork.c> StartServers 8 MinSpareServers 5

spider RPC开发指南

协议与兼容性 spider使用java语言开发,使用Spring作为IoC容器,采用TCP/IP协议,在此基础上,结合SaaS系统模式的特性进行针对性和重点设计,以更加灵活和高效的满足多租户系统.高可用.分布式部署的要求. 采用JSON作为序列化机制,后续版本可能会考虑支持protobuf(java/c++/c#均有类库支持). 为了最大化性能以及稳定性,spider基于Sun JDK1.8进行编译并应避免使用deprecated特性. 为了尽可能的适应各环境以及互联网应用,spider应能至少

初学 python 之 HAproxy配置文件操作

HAproxy配置文件操作: 1. 根据用户输入输出对应的backend下的server信息 2. 可添加backend 和sever信息 3. 可修改backend 和sever信息 4. 可删除backend 和sever信息 5. 操作配置文件前进行备份 6 添加server信息时,如果ip已经存在则修改;如果backend不存在则创建:若信息与已有信息重复则不操作 配置文件 参考 http://www.cnblogs.com/alex3714/articles/5717620.html

SqlServer 更改复制代理配置文件参数

由于经常需要同步测试并更改代理配置文件属性,所以总结成脚本,方便测试. 代理配置参数位置: 里面的参数是需要更改的,未显示的参数,则是没有添加到配置文件的.但是取消上面的勾选是可以看到还有那些配置参数. 使用复制代理配置文件参考:https://msdn.microsoft.com/zh-cn/library/ms147893(v=sql.100).aspx 查看复制代理配置文件(MSagent_profiles) select * from msdb.dbo.MSagent_profiles

OpenVPN 配置范例及配置文件说明

一.配置文件参考样例 1.Easy-vpn配置范例 1). easy-vpn 证书认证 vpnserver的配置如下: [[email protected] openvpn]# grep -P -v "^(#|;|$)" server.conf local 202.102.1.1 port 1194 proto udp dev tap ca ca.crt cert vpnserver.crt key vpnserver.key  # This file should be kept s

CentOS系统 Amoeba+MySql主从读写分离配置 适合新手傻瓜式教程!-----仅供参考!

废话不说,直接开始: 一.安装mysql的三种方式,这里采用第2种(安装方式不再详解,请参照) http://www.cnblogs.com/babywaa/articles/4837946.html 1.rpm安装2.源码安装3.通用二进制源码安装 环境准备 192.168.5.10 master1 192.158.5.20 slave1 二.配置master服务器,192.168.5.101.第一步:登陆mysql,给root账号添加密码     //参考命令:SETPASSWORD = P