JSF配置

                                                                                                      

使用说明

使用是在spring的头上加上jsf.xsd。参考如下:

元素及其属性

<jsf:registry> 

一级元素,下面可以有parameter节点。对应com.jd.jsf.gd.config.RegistryConfig

配置注册中心用,注册服务和订阅服务,订阅配置。 全局唯一即可。

标签
属性
类型
是否必填
默认值
描述
起始版本
registryaddressstring1 注册中心地址,多个用逗号分隔1.0.0
registryindexstring

1 

 注册中心Index服务地址1.0.0
registryidstring Spring的BeanId1.0.0
registryprotocolstringjsfRegistry注册中心协议1.0.0
registrytimeoutint

20000(v1.0)
5000

v1.0连接注册中心的超时时间,单位毫秒
v1.2改为调用注册中心超时时间,单位毫秒

1.0.0
registryconnectTimeoutint20000连接注册中心的超时时间,单位毫秒1.2.0
registryfilestring${user.home}/jsf备份文件保存地址1.0.0
registryregisterbooleantrue是否注册服务1.0.0
registrysubscribebooleantrue是否订阅服务列表1.0.0
registrybatchCheckint10
定时批量检查时的条目数
1.2.0

注1:address和index 必须存在一个。

<jsf:server>

一级元素,下面可以有parameter节点。对应com.jd.jsf.gd.config.ServerConfig

配置服务端用,只在发布服务端时候声明。一个server对应一个端口一个协议。一个server下可以发布多个provider。

 

标签
属性
类型
是否必填
默认值
描述
起始版本
serveridstring Spring的BeanId1.0.0
serverprotocolstring 服务端协议。1.0.0
serverhoststring

 服务端绑定地址(windows默认绑到某个ip,linux默认绑到0.0.0.0)。
未指定时,如果配置了注册中心则会连注册中心获取地址,未配注册中心则从网卡里取一个
1.0.0
serverportint 22000

服务端绑定端口。
如果已被绑定则自动+1重试,配置为"-1"表示随机端口,不过也是从22000开始随机。 

1.0.0
servercontextpathstring/发布上下文。用于基于http的协议。1.0.0
serverthreadsint200最大业务线程池大小1.0.0
serveriothreadsint0IO线程池大小,程序中默认max(8,cpu+1)1.0.0
serverthreadpoolstringcached业务线程池类型,参见JSF用户手册#线程池类型 1.0.0
servertelnetbooleantrue是否允许telnet1.0.0
serverqueuesint0业务线程池队列大小。0表示无队列,-1表示无限队列,正整数表示有限队列1.0.0
serveracceptsint2147483647允许的TCP长连接数(包括http)1.0.0
serverpayloadint8388608允许的数据包大小1.0.0
serverbufferint8192IO的缓冲区大小 
serverserializationstringmsgpack序列化方式。 建议不配置、服务端会根据客户端序列化方式自适应。1.0.0
serverdispatcherstringmessage事件分发类型,目前无其它选项。参考JSF用户手册#事件分发类型1.0.0
servervirtualhoststring 虚拟IP地址(注册到注册中心的地址,可以和绑定地址不一样)
多用于虚拟机环境,例如绑定地址为172.17.1.1,告诉注册中心为192.168.1.1
1.0.0
servervirtualhostfilestring 虚拟IP地址文件,同上,只是从文件中读取。1.0.0
serveronconnectref 连接事件监听器实例,多个用逗号分隔。List<ConnectListener>1.0.0
serverdebugbooleanfalse是否打印请求和响应消息体信息1.0.0
serverepollbooleanfalseLinux下是否启动epoll特性1.0.0
serverqueuetypestringnormal业务线程池队列类型。普通队列normal、优先级队列priority1.0.0
serverdaemonbooleantrue默认为守护线程,主线程退出自动退出。配置为false则需要主动退出。1.0.0
server
acceptSerializations
stringmsgpack,hessian,json,protobuf

支持的序列化方式,配置时用英文 "," 隔开。List<String>

1.6.5开始默认不支持java序列化,如有需求需要自行配置

例:msgpack,hessian,json,protobuf,java

1.6.5


<jsf:provider>

一级元素,下面可以有method或者parameter节点。对应com.jd.jsf.gd.config.ProviderConfig

发布jsf服务Provider使用。

 

标签
属性
是否必填
默认值
描述
起始版本
providerregistryref2全部registry注册中心引用,多个用英文逗号隔开。List<RegistryConfig>1.0.0
providerserverref1全部server需要发布服务到的Server,对应上面jsf:server的id,多个用英文逗号隔开。
一个server对应一个端口一个协议,List<ServerConfig>
1.0.0
provideridstring Spring的BeanId1.0.0
providerinterfacestring 发布的接口名称1.0.0
provideraliasstring

 服务别名分组信息1.0.0
providerrefref 

接口实现类 

1.0.0
providerfilterref 过滤器实现链,多个用英文逗号隔开。 List<AbstractFilter>1.0.0
providerregisterbooleantrue是否注册到注册中心1.0.0
providersubscribebooleantrue是否从注册中心订阅1.0.0
providertimeoutint5000服务端调用超时时间,单位毫秒。只是打印警告,不会打断代码执行1.2.0
providerproxystringjavassist代理类生成方式,支持javassist和jdk1.0.0
providermockrefref Mock调用实现,配合mock属性实现开启关闭。mockref是interface的本地实现,用于服务降级1.0.0
provider

cacheref

ref 结果缓存实现,配合cache属性实现开启关闭。cacheref实现com.jd.jsf.filter.cache.Cache1.0.0
providerdelayint0

延迟发布服务时间。
例如:配置0表示加载时即时发布,-1表示spring加载完毕后发布,5000表示延迟5秒后发布

1.0.0
providerweightint100服务提供者权重1.0.0
providerincludestring

*

发布的方法列表,逗号分隔1.0.0
providerexcludestring 不发布的方法列表,逗号分隔1.0.0
providerdynamicbooleantrue是否动态注册Provider,默认为true,配置为false代表不主动发布,需要到管理端进行上线操作1.0.0
providerpriorityint0接口优先级,越大优先级越高,默认0 
providerconcurrentsint否 200(1.0.x-1.5.x)
0(1.6.0+) 
接口下每方法的最大可并行执行请求数,配置-1关闭并发过滤器,等于0表示开启过滤但是不限制1.0.0
providervalidationbooleanfalse是否校验参数,支持JSR303 JSF用户手册#参数校验1.0.0
providercompressstring
 
压缩算法(启动后是否压缩还取决于数据包大小),支持lzma/snappy1.0.0
providermockboolean 是否启动Mock实现1.0.0
providercachebooleanfalse是否开启结果缓存。如果开启需要指定cachekref1.0.0

1. 集成Spring时,如果未指定,则默认发全部服务端
2. 集成Spring时,如果未指定,则默认发全部注册中心。

<jsf:consumer>

作为一级元素,下面可以有method或者parameter节点。对应com.jd.jsf.gd.config.ConsumerConfig

作为二级元素,ConsumerGroup下的元素。

发布jsf服务Consumer使用。

标签
  属性
类 型
是否必填
默认值
描述
起始版本
consumeridstring Spring的BeanId1.0.0
consumerinterfacestring 调用的接口名称。1.0.0
consumeraliasstring

 服务别名分组信息1.0.0
consumerprotocolstringjsf调用的协议1.0.0
consumerurlstring 直连地址,配置了此地址就不再从注册中心获取。参见:JSF客户端用户手册#直连调用1.0.0
consumerfilterref 过滤器实现链,多个用英文逗号隔开。 List<AbstractFilter>1.0.0
consumerregistryref1全部registry注册中心引用,多个用英文逗号隔开。List<RegistryConfig>1.0.0
consumerregisterbooleantrue是否注册到注册中心1.0.0
consumersubscribebooleantrue是否从注册中心订阅1.0.0
consumertimeoutint5000调用端调用超时时间,单位毫秒。超过时间客户端抛超时异常。1.0.0
consumerproxystringjavassist代理类生成方式,支持javassist和jdk1.0.0
consumermockrefref Mock调用实现,配合mock属性实现开启关闭。mockref是interface的本地实现,用于服务降级1.0.0
consumer

cacheref

ref 结果缓存实现,配合cache属性实现开启关闭。cacheref实现com.jd.jsf.filter.cache.Cache接口1.0.0
consumergenericbooleanfalse是否泛化调用(无需服务端接口类)1.0.0
consumerasyncbooleanfalse是否异步调用,参见JSF用户手册#异步调用1.0.0
consumerconnectTimeoutint5000建立连接超时时间,单位毫秒1.0.0
consumer

disconnectTimeout

int10000
断开连接(等待结果)超时时间,单位毫秒
1.0.0
consumerclusterstringfailover集群策略,参见JSF用户手册#集群策略1.0.0
consumerretriesint0(0表示失败后不重试)失败后重试次数(如果是失败策略是重试)1.0.0 
consumerloadbalancestringrandom负载均衡算法,参见JSF用户手册#负载均衡 1.0.0
consumerlazybooleanfalse是否延迟建立长连接(第一次调用建立)1.0.0
consumerstickybooleanfalse是否粘滞连接(除非断开连接,只调一个)1.0.0
consumerinjvmbooleantrue是否走injvm调用(如果同一jvm内发布了服务,则不走远程调用)。1.0.0
consumercheckbooleanfalse是否强依赖服务端(无可用服务端启动失败)。1.0.0
consumerserializationstringmsgpack序列化方式。如果是dubbo指定为hessian1.0.0
consumeronreturnref 方法的返回事件监听器实例,多个用逗号分隔。需要async为true时使用。List<ResponseListener>1.0.0
consumeronconnectref 连接事件监听器实例,连接或者断开时触发。List<ConnectListener>1.2.0
consumeronavailableref 客户端状态变化监听器实例,状态可用和不可以时触发。List<ConsumerStateListener>1.2.0
consumerthreadpoolstringcached业务线程池类型 
consumerthreadsint20业务线程池大小 
consumeriothreadsint0IO线程池大小,程序中默认max(6,cpu+1)1.0.0
consumerheartbeatint

60000(1.0.x)
30000(1.2.0+) 

客户端往服务端发心跳包间隔,单位毫秒。配置小于0代表不发送,最低5000ms1.0.0
consumerreconnectint5000(1.0.x)
10000(1.2.0+) 
客户端重连死亡服务端的间隔,单位毫秒。配置小于0代表不重连,最低2000ms1.0.0
consumerpayloadint8388608允许数据包大小1.0.0
consumerepollbooleanfalseLinux下是否启动epoll
1.0.3删除配置,客户端采用全局配置

1.0.0

consumer

router

ref 

路由规则引用,多个用英文逗号隔开。List<Router>

1.0.0
consumerconcurrentsint否 0接口下每方法的最大可并行执行请求数,配置-1关闭并发过滤器,等于0表示开启过滤但是不限制1.0.0
consumervalidationbooleanfalse是否校验参数,支持JSR303,参见JSF用户手册#参数校验1.0.0
consumercompressstring 压缩算法(启动后是否压缩还取决于数据包大小),支持lzma/snappy1.0.0
consumermockbooleanfalse是否启动Mock实现1.0.0
consumercachebooleanfalse是否开启结果缓存。如果开启需要指定cachekref1.0.0
consumermaxConnectThreadsint10客户端与所有服务端批量建立连接的最大线程数1.6.1

consumer

connStrategyref 客户端连接治理策略BeanId

1.6.6-SNAPSHOT

1. 集成Spring时,如果未指定,则默认全部注册中心。

<jsf:method>

二级元素:可以出现在provider、consumer标签下,下面可以有parameter节点。对应com.jd.jsf.gd.config.MethodConfig

用于配置方法级的一些属性,覆盖接口级的属性(未配置方法则取接口级的属性)。

标签
属性
类型
是否必填
默认值
父标签
描述
起始版本
methodnamestring provider/consumer方法名称(不支持重载方法)1.0.0
methodtimeoutstring

 consumer方法调用超时时间,单位毫秒1.0.0
methodretriesint consumer

方法重试次数(0表示失败后不重试)

1.0.0
methodasyncstring consumer是否异步调用1.0.0
methodvalidationboolean provider/consumer是否校验参数,支持JSR303,参见JSF用户手册#参数校验1.0.0
methodonreturnref consumer方法的返回事件监听器实例,多个用逗号分隔。需要async为true时使用。List<ResponseListener>1.0.0
methodconcurrentsint否  provider/consumer该方法的最大可并行执行请求数1.0.0
methodmockboolean provider/consumer是否启动Mock实现1.0.0
methodcacheboolean provider/consumer是否开启结果缓存。如果开启需要指定cacheref1.0.0
methodcompressstring provider/consumer压缩算法(启动后是否压缩还取决于数据包大小)1.0.0
methoddstParamint consumer目标参数(机房/分组等)索引,从0开始计数1.6.0

例如:

<? xml version = "1.0" encoding = "UTF-8" ?>
        xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
        xmlns:jsf = "http://jsf.jd.com/schema/jsf"
 
     < jsf:consumer id = "helloServiceExport1" server = "saf" interface = "com.jd.jsf.test.HelloService" alias = "ZG1" >
         < jsf:method name = "echo" retries = "2" timeout = "2222" onreturn = "" mock = "" actives = "" async = "" cache = "" compress = "" dstParam = "" />
     </ jsf:consumer >
</ beans >

<jsf:parameter>

作为一级元素:直接出现在spring的beans标签下。
作为二级元素:可以出现在registry、server、provider、consumer任一标签下。

或者三级元素,还可以出现在method下。
是一个key-value形式map。

标签
属性
类型
是否必填
默认值
描述
起始版本
parameterkeystring 参数配置关键字1.0.0
parametervaluestring 参数配置值1.0.0
parameterhideboolean

false

是否为隐藏配置。是的话,key自动加上"."作为前缀,且业务代码不能获取到,只能从filter里取到

1.0.0

例如:

<? xml version = "1.0" encoding = "UTF-8" ?>
        xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
        xmlns:jsf = "http://jsf.jd.com/schema/jsf"
     
     < jsf:parameter key = "callback.pool.queue" value = "5120" /> <!--全局参数 -->
 
     < jsf:registry id = "jsfRegistry" protocol = "jsfRegistry" index = "index.saf.jd.com" >
         < jsf:parameter key = "app" value = "testsafapp" />
     </ jsf:registry >
 
     < jsf:provider id = "helloServiceExport1" server = "saf"
                   interface = "com.jd.jsf.test.HelloService" alias = "ZG1" >
         < jsf:parameter key = "token" value = "1q2w3e4r" hide = "true" />  <!--接口级参数 -->
         < jsf:method name = "echo" retries = "2" timeout = "2222" sent = "" mock = "" actives = "" async = "" cache = "" connections = "" executes = "" >
             < jsf:parameter key = "bbb" value = "bbbbbbb" /> <!--方法级参数 -->
         </ jsf:method >
     </ jsf:provider >
</ beans >

已知的内置key (默认hide=false)

父标签
key
hidden
名称
备注
起始版本
registryappfalse项目名stringindex服务匹配规则用1.0.0
registrylanfalse语言stringindex服务匹配规则用1.0.0
registryipfalse请求ipip地址index服务匹配规则用1.0.0
serverhttp.keepAlivefalseJSF协议是否开启http的keepAlive特性string默认false1.6.0
providermonitortrue是否开启监控boolean配置为false,不开启监控1.0.0
providertokentruetokenstring调用校验用1.0.0
providercustomImpltruejsr303自定义实现类名string类名,实例化Validator用1.0.0
consumermonitortrue是否开启监控boolean若配置为false,不开启监控1.0.0
consumerwarnningtrue是否开启重复订阅警告boolean若配置为false,不检查重复发布数目1.0.0
consumerdestroytrue是否主动销毁boolean若配置为false,进程结束时不主动销毁,需手动销毁或者忽略。1.0.0
consumertokentruetokenstring调用校验用1.0.0
consumercustomImpltruejsr303自定义实现类名string类名,实例化Validator用1.0.0
beanscallback.pool.coresizefalsecallback的线程池初始大小int默认201.0.0
beanscallback.pool.maxsizefalsecallback的线程池最大大小int默认2001.0.0
beanscallback.pool.queuefalsecallback的线程池队列int默认2561.0.0
beansserialize.check.classfalse序列化时是否检查父子类(声明参数和传入值是父子类)boolean默认true,如果业务不存在这种情况可以配置为false,提高性能1.0.0
beanstransport.consumer.epollfalse客户端是否使用epoll(针对linux)boolean默认false,Linux开启epoll可提高性能1.0.3
beanscounter.batchfalse计数器服务调用步长int默认1,每次丢调用计数器,调大可以提高性能但会减低精准1.2.0
beansjson.serialize.fill.empty falsejson序列化是否返回null字段。boolean默认false,默认只返回有属性的字段。打开会降低效率。1.5.1
beansconsumer.provider.nullablefalseconsumer的服务端列表是否可被清空boolean默认false,默认不能被清空(最后的清空请求被忽略),防止删全部节点等
误操作,但是会影响列表的准确性。
1.6.0
beansregistry.register.batchfalse是否开启有注册中心的批量注册/反注册boolean默认true,重连或者销毁时采用批量的方式。配为false则采取旧方式。1.6.0
beansinvoke.send.appfalseConsumer调用时是否发生信息boolean默认true,服务端拿到调用端的自动部署应用信息。配为false,服务端拿不
到调用者信息
1.6.0
beansserialize.check.referencefalse序列化是否检测循环引用类型string默认true,针对c++等调用者进行关闭1.6.0
beansjson.serializer.featuresfalsejson序列化的时候,开启的特性string默认空,参见com.jd.fastjson.serializer.SerializerFeature,多个逗号分隔1.6.0
beansjson.parser.featuresfalsejson解析的时候,开启的特性string默认空,参见com.jd.fastjson.parser.Feature,多个逗号分隔1.6.0

作为一级元素,全局设置(beans下的设置)的相同API操作如下:

JSFContext.putGlobalVal( "serialize.check.class" , "false" ); //beans下一级元素标签,代表全局变量

作为二级元素,接口级设置(registry、server、provider、consumer)的相同API操作如下:

registryConfig.setParameter( "app" , "jsf-dev" ); // jsf:registry下配置
providerConfig.setParameter( ".token" , "112233" ); // jsf:provider下配置,hiddenkey前面加"."
consumerConfig.setParameter( ".token" , "112233" ); // jsf:consumer下配置,hiddenkey前面加"."

作为三级元素,方法级设置(method下的设置)的相同API操作如下:

methodConfig.setParameter( "aaaa" , "bbbbbb" ); // jsf:method下配置

<jsf:annotation>

一级元素,对应com.jd.jsf.gd.config.annotation.AnnotationBean
注解方式配置时使用。参见JSF用户手册#配置方式
只提供基本的设置,高级功能请使用xml或者api方式发布。

标签
属性
类型
是否必填
默认值
描述
起始版本
annotationidstring Spring的BeanId1.0.0
annotationbasepackagestring 要扫描注解的包前缀1.0.0
annotationproviderbooleantrue是否扫描Provider标签1.0.0
annotationconsumerbooleantrue是否扫描Consumer标签1.0.0

<jsf:filter>

一级元素,对应com.jd.jsf.gd.config.annotation.FilterBean
提供一个全局过滤器的入口,只针对spring配置方式(api方式没有此接口)

标签
属性
类型
是否必填
默认值
描述
起始版本
filteridstring Spring的BeanId1.2.0
filterclassstring1 filter类名(继承AbstractFilter),用于newInstance1.2.0
filterrefbean1 指定filter的实现类,优先与class1.6.1
filterprovidersstring*不填表示无,多个jsf:provider的beanId用英文逗号隔开1.2.0
filterconsumersstring*不填表示无,多个jsf:consumer的beanId用英文逗号隔开1.2.0

注1:ref和class二选一。

<jsf:consumerGroup>

since 1.6.0

一级元素,对应com.jd.jsf.gd.config.spring.ConsumerGroupBean
 
设置一个可以包含多个alias的客户端,调用哪个alias可以切换。

标签
属性
类型
是否必填
默认值
描述
起始版本


其它属性参见jsf:consumer

consumerGroupdstParamint 目标参数(机房/分组等)索引,从0开始计数1.6.0
consumerGroupaliasAdaptivebooleanfalse是否自动适配alias,设为true当没有alias时自动引入1.6.0
consumerGroupgroupRouterstring 自定义分组路由规则实现类1.6.0


<jsf:connStrategy>

since 1.6.6-SNAPSHOT

一级元素,对应com.jd.jsf.gd.config.spring.ConnStrategyBean

 设置一个连接治理策略。

标签
属性
类型
是否必填
默认值
描述
起始版本

connStrategy

id

string Spring的BeanId

1.6.6-SNAPSHOT

connStrategy

initialSize

int-1服务启动的时候建立连接数,-1代表拉取到的所有Provider数

1.6.6-SNAPSHOT

connStrategy

maxActive

int-1运行过程中维持的连接数,-1代表拉取到的所有Provider数

1.6.6-SNAPSHOT

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值