All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.hasor-framework.rsf-hconfig.xml Maven / Gradle / Ivy

There is a newer version: 4.2.5
Show newest version
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://www.hasor.net/sechma/rsf-framework">

    <!-- RSF框架环境变量 -->
    <hasor.environmentVar>
        <!-- 是否启用RSF,默认情况启用。启用了RSF之后它会开启相应的端口和线程。 -->
        <RSF_DATA_HOME>%WORK_HOME%/rsf</RSF_DATA_HOME>

        <!-- 是否启用RSF,默认情况启用。启用了RSF之后它会开启相应的端口和线程。 -->
        <RSF_ENABLE>false</RSF_ENABLE>
        <!-- 启用磁盘地址本缓存,在refreshCacheTime期间每隔1小时自动写入一次。 -->
        <RSF_DISK_CACHE_ENABLE>true</RSF_DISK_CACHE_ENABLE>

        <!-- 应用程序所属单元 -->
        <RSF_APP_UNIT>default</RSF_APP_UNIT>

        <!-- RSF对外提供服务的IP -->
        <RSF_SERVICE_IP>0.0.0.0</RSF_SERVICE_IP>

        <!-- RSF对外提供服务的服务端口(可以配置 0 用来关闭 RSF连接器) -->
        <RSF_SERVICE_PORT>2181</RSF_SERVICE_PORT>
        <!-- Hprose对外提供服务的服务端口(可以配置 0 用来关闭 Hprose连接器) -->
        <HPROSE_SERVICE_PORT>0</HPROSE_SERVICE_PORT>
        <!-- Http协议对外提供服务的服务端口(可以配置 0 用来关闭 Http连接器) -->
        <HTTP_SERVICE_PORT>0</HTTP_SERVICE_PORT>
    </hasor.environmentVar>

    <!-- 框架配置,包扫描范围 -->
    <hasor>
        <loadPackages>net.hasor.rsf.*</loadPackages>

        <modules>
            <!-- RSF框架本体 -->
            <module>net.hasor.rsf.bootstrap.RsfFrameworkModule</module>
            <!-- RSF框架的 Telnet,命令 -->
            <module>net.hasor.rsf.tconsole.TelnetModule</module>

            <!-- Hprose:AutoSetAliasName支持插件 -->
            <module>net.hasor.rsf.protocol.http_hprose.AutoSetAliasName</module>
            <!-- Web:AutoSetAliasName支持插件 -->
            <!-- <module>net.hasor.rsf.protocol.http_web.AutoSetAliasName</module>-->
        </modules>

        <!-- Binder扩展 -->
        <apiBinderSet>
            <binder type="net.hasor.rsf.RsfApiBinder">net.hasor.rsf.container.RsfApiBinerCreator</binder>
            <binder type="net.hasor.rsf.RsfPublisher">net.hasor.rsf.container.RsfApiBinerCreator</binder>
        </apiBinderSet>
    </hasor>

    <!--
        Hasor-RSF ( 分布式服务框架 )

            - enable  : 是否启用RSF,默认情况启用。启用了RSF之后它会开启相应的端口和线程。
            - address : RSF,无法在多个网卡上同时对外提供服务,因此您需要指定一个IP地址来告诉RSF工作在哪张网卡上。
                            “local”和“localhost”的区别,local指的是,本地默认网卡的IP地址。“localhost”对应的IP地址是“127.0.0.1”
                            如果您的部署环境有多张网卡,那么可以通过指定ip地址,来告诉RSF具体工作的网卡地址。
    -->
    <hasor.rsfConfig enable="${RSF_ENABLE}" address="${RSF_SERVICE_IP}">
        <!-- 所属单元名称,单元是用来给应用部署划分虚拟机房的。RSF通过单元可以有效控制跨机房调用,从而提升远程调用效率。-->
        <unitName>${RSF_APP_UNIT}</unitName>

        <!-- automaticOnline : RSF在启动之后是否自动转换为 online 状态。 -->
        <automaticOnline>true</automaticOnline>

        <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
        <!--用于设置默认情况下RSF服务的一些(不重要)的选项。
                version = 在未指定注册服务的版本信息时使用的版本号。
                group   = 在未指定注册服务的分组信息时使用的分组名称。
                timeout = 在未指定注册服务的超时时间情况下 6000 毫秒超时。
         -->
        <defaultServiceValue version="1.0.0" group="RSF" timeout="6000"/>

        <!-- 作为服务端向客户端响应时携带的选项(demo) -->
        <serverOptionSet>
            <option key="identity">Response</option>
        </serverOptionSet>

        <!-- 作为客户端向服务端发送调用请求时携带的选项(demo) -->
        <clientOptionSet>
            <option key="identity">Request</option>
        </clientOptionSet>

        <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
        <!--
            RSF 支持多种 RPC 协议共存,这里是配置 RPC 协议连接器的地方。
                连接器的作用是为不同协议提供网络数据包编码解码的功能,RSF 内置了两种RPC协议。
                RSF/1.0     原生的内置协议,也是默认协议。
                Http/Hprose see:http://www.hprose.com/ (使用Http方式)
                Http/Web    Web请求

            default
                - 默认RPC协议,RSF 在启动的时必须有一个默认RPC协议
            protocol
                - 连接器运行的RPC协议
            localPort
                - 连接器使用的端口(如果端口配置为「0」表示禁用该协议。)
            gateway :
                网关配置,当 RSF 工作在内网时因为 RSF 是工作在内网环境无法取得公网地址,因此这里需要配置RSF公网地址和端口号。
                - gatewayAddress : 网关IP地址
                - gatewayPort    : 网关上RSF的端口号
        -->
        <connectorSet default="RSF/1.0">
            <!-- RSF 连接器 -->
            <netty_rsf10 name="RSF/1.0" protocol="rsf" localPort="${RSF_SERVICE_PORT}" factory="net.hasor.rsf.rpc.net.netty.NettyConnectorFactory">
                <!-- 处理网络IO数据包的线程数 -->
                <workerThread>8</workerThread>
                <!-- 处理网络监听请求的线程数 -->
                <listenThread>1</listenThread>
                <!-- Rsf Handler -->
                <nettyHandlerFactory>net.hasor.rsf.protocol.rsf.RsfProtocolHandler</nettyHandlerFactory>
            </netty_rsf10>

            <!-- Hprose 连接器 -->
            <http_hprose name="Http/Hprose" protocol="hprose" localPort="${HPROSE_SERVICE_PORT}" factory="net.hasor.rsf.rpc.net.http.HttpConnectorFactory">
                <!-- 处理网络IO数据包的线程数 -->
                <workerThread>8</workerThread>
                <!-- 处理网络监听请求的线程数 -->
                <listenThread>1</listenThread>
                <!-- BasePath -->
                <contextPath>/hprose</contextPath>
                <!-- Rsf Handler -->
                <httpHandlerFactory>net.hasor.rsf.protocol.http_hprose.HproseHttpHandler</httpHandlerFactory>
            </http_hprose>

            <!-- Web 请求连接器 -->
            <!--<http_web name="Http/Web" protocol="http" localPort="${HTTP_SERVICE_PORT}" factory="net.hasor.rsf.rpc.net.http.HttpConnectorFactory">-->
            <!--&lt;!&ndash; 处理网络IO数据包的线程数 &ndash;&gt;-->
            <!--<workerThread>8</workerThread>-->
            <!--&lt;!&ndash; 处理网络监听请求的线程数 &ndash;&gt;-->
            <!--<listenThread>1</listenThread>-->
            <!--&lt;!&ndash; BasePath &ndash;&gt;-->
            <!--<contextPath>/rsf</contextPath>-->
            <!--&lt;!&ndash; Rsf Handler &ndash;&gt;-->
            <!--<httpHandlerFactory>net.hasor.rsf.protocol.http_web.WebHttpHandler</httpHandlerFactory>-->
            <!--</http_web>-->
        </connectorSet>

        <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
        <!--
            作为 Client 的配置
                defaultTimeout  = 客户端RPC发起请求超时时间
                maximumRequest  = 最大允许的并发请求数
                sendLimitPolicy = 并发调用请求限制策略,当并发调用达到限制值后的策略(Reject 抛出异常,WaitSecond 等待1秒重试)
                connectTimeout  = 客户端发起一个连接到完成RSF协议握手所允许的最大耗时(单位毫秒)。
        -->
        <client defaultTimeout="6000" maximumRequest="200" sendLimitPolicy="Reject" connectTimeout="10000"/>

        <!--
            处理队列配置(用于配置ExecutesManager)
                - maxSize       : 处理任务队列的最大大小,作为服务端当队列满了之后所有新进来的请求都会被回应 拒绝。
                - minPoolSize   : the number of threads to keep in the pool, even if they are idle, unless allowCoreThreadTimeOut is set.
                - maxPoolSize   : the maximum number of threads to allow in the pool. keepAliveTime(SECONDS) when the number of threads is greater than the core,
                              this is the maximum time that excess idle threads will wait for new tasks before terminating.
                - keepAliveTime :
        -->
        <queue maxSize="4096" minPoolSize="1" maxPoolSize="4" keepAliveTime="300"/>

        <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
        <!-- 序列器(在修改序列化方式时,需要确保远程和本地都支持) -->
        <serializeType default="Hprose">
            <!-- JSON-格式序列化 -->
            <serialize name="Json">net.hasor.rsf.serialize.coder.JsonSerializeCoder</serialize>
            <!-- Java-原生序列化 -->
            <serialize name="Java">net.hasor.rsf.serialize.coder.JavaSerializeCoder</serialize>
            <!-- Hessian-格式序列化 -->
            <serialize name="Hessian">net.hasor.rsf.serialize.coder.HessianSerializeCoder</serialize>
            <!-- Hprose-格式序列化 -->
            <serialize name="Hprose">net.hasor.rsf.serialize.coder.HproseSerializeCoder</serialize>
        </serializeType>

        <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
        <!-- 默认QoS流控规则,该配置仅当没有配置任何QoS规则时才启用 -->
        <defaultSpeedFlowControl>
            <action>service</action>    <!-- 速率控制方式:每服务、每方法、每地址 -->
            <rate>2000</rate>           <!-- 稳态速率 -->
            <peak>5000</peak>           <!-- 峰值速率 -->
            <timeWindow>10</timeWindow> <!-- 时间窗口 -->
        </defaultSpeedFlowControl>

        <!-- 流控 & 路由 -->
        <route>
            <flowcontrol>
                <!-- 随机选址 -->
                <random>net.hasor.rsf.address.route.flowcontrol.random.RandomFlowControl</random>
                <!-- QoS速率 -->
                <speed>net.hasor.rsf.address.route.flowcontrol.speed.SpeedFlowControl</speed>
                <!-- 单元化地址本计算 -->
                <unit>net.hasor.rsf.address.route.flowcontrol.unit.UnitFlowControl</unit>
            </flowcontrol>
            <!-- 参数级路由计算,参数key生成器 -->
            <argsKey>net.hasor.rsf.address.route.rule.DefaultArgsKey</argsKey>
        </route>

        <!-- 地址管理 -->
        <addressPool>
            <!-- 启用磁盘地址本缓存,在refreshCacheTime期间每隔1小时自动写入一次。 -->
            <localDiskCache>${RSF_DISK_CACHE_ENABLE}</localDiskCache>
            <!-- 每次缓存地址本到磁盘时的时间间隔(单位:毫秒)默认:1小时 -->
            <diskCacheTimeInterval>3600000</diskCacheTimeInterval>
            <!-- 自动刷新addressPool地址本缓存的时间(单位:毫秒)默认:1分钟 -->
            <refreshCacheTime>60000</refreshCacheTime>
            <!-- (失效地址重试机制)当地址失效之后要经过多长时间才能被重新列入备选地址。(单位:毫秒)默认:2分钟 -->
            <invalidWaitTime>120000</invalidWaitTime>
        </addressPool>

    </hasor.rsfConfig>
</config>




© 2015 - 2024 Weber Informatics LLC | Privacy Policy