分布式框架DSF的搭建
首先声明,这个框架是华为公司开发的,原理是服务端发布服务去zookeeper注册,客户端去zookeeper注册中心调用服务端发布的服务,小弟才疏学浅,只是研究了一个demo出来,供大家互相学习框架搭建完成就是这个样子的1、首先我们导入jar包一个57个jar包2、dsf.properties###################################
首先声明,这个框架是华为公司开发的,原理是服务端发布服务去zookeeper注册,客户端去zookeeper注册中心调用服务端发布的服务,小弟才疏学浅,只是研究了一个demo出来,供大家互相学习
框架搭建完成就是这个样子的
1、首先我们导入jar包
一个57个jar包
2、dsf.properties
############################################
# DSF Core Configuration
############################################
# dsf app name, keep unique in distributed system
dsf.appname=dsf
# dsf global service timeout in millis
dsf.service.timeout=3000
# core size for dsf handle service request thread pool
dsf.worker.core.size=20
# max size for dsf handle service request thread pool
dsf.worker.max.size=100
# queue size for dsf handler service request thread pool
dsf.worker.queues=1000000
############################################
# DSF Fail Policy Configuration
############################################
# dsf request fail policy
dsf.service.failpolicy=failfast
############################################
# DSF Fail Over Policy Configuration
############################################
dsf.resend.times=3
# dsf timeout configuraion
dsf.client.request.resend.interval=1
dsf.client.request.resend.times=0
############################################
# DSF Registry Configuration
############################################
dsf.registry.name=zk
dsf.registry.default=zk
############################################
# DSF ZK Registry Configuration
############################################
dsf.registry.zk.type=zookeeper
dsf.registry.zk.connector=DsfZKClient
############################################
# DSF Protocol Configuration
############################################
dsf.protocol.name=dsf
dsf.protocol.default=dsf
############################################
# DSF TCP Protocol Configuration
############################################
# dsf tcp protocol type
dsf.protocol.tcp.type=dsf
# dsf tcp protocol listen address, this address must be server address
dsf.protocol.tcp.address=192.168.99.85:20111
# max size for dsf tcp protocol acceptor thread pool
dsf.protocol.tcp.threads=1
# queue size for dsf tcp protocol acceptor thread pool
dsf.protocol.tcp.accepts=100
# max size for dsf tcp protocol io thread pool
dsf.protocol.tcp.iothreads=20
# queue size for dsf tcp protocol io thread pool
dsf.protocol.tcp.queues=1000000
# async request waiting quque size for dsf tcp protocol
dsf.protocol.tcp.async.queues=800000
# determine whether dsf tcp protocol iplimit enabled
dsf.protocol.tcp.iplimit.enable=false
# dsf tcp protocol iplimit whiltelist
#dsf.protocol.tcp.iplimit.whitelist=*
# dsf tcp protocol iplimit blacklist
#dsf.protocol.tcp.iplimit.blacklist=
# dsf tcp protocol heartbeat interval in seconds
dsf.protocol.tcp.heartbeat.interval=5
# dsf tcp protocol heartbeat lost count
dsf.protocol.tcp.heartbeat.lostcount=5
# max size for dsf tcp protocol client io thread pool
dsf.protocol.tcp.client.iothreads=1
# queue size for dsf tcp protocol client io thread pool
dsf.protocol.tcp.client.queues=100000
# dsf tcp protocol client reconnect interval in seconds
dsf.protocol.tcp.client.reconnect.interval=3
# dsf tcp protocol client first connect wait time in millis
dsf.protocol.tcp.client.connect.firstwait=2000
############################################
# DSF Statistic Configuration
############################################
dsf.statistic.delay.enable=false
############################################
# DSF Monitor Configuration
############################################
# dsf time delay monitor time interval in seconds
dsf.monitor.time.interval=30
############################################
# DSF Default Route Policy
############################################
# dsf global route policy, available: poll, random, serviceDelayTimeRouter
dsf.router.default=poll
dsf.router.poll.localpriority=false
############################################
# DSF Default trace switch
############################################
dsf.trace.switch=true
dsf.sampleRate=1
dsf.logTraceSwitch=false
dsf.worker.group.size=4
dsf.protocol.tcp.client.group.size=6
dsf.log.time.queue.threshold=200
dsf.log.time.msg2buffer.threshold=300
dsf.log.time.threshold=500
#zk config
zk.server.url=192.168.99.115:2181
#usf port
rpc.address=192.168.99.115:7115
############################################
# DSF threadpool monitor config
############################################
threadpool.monitor.switch=true
# unit(s)
threadpool.monitor.interval=30
zk.auth.switch=off
authentication.enable=false
#dsf.root.dir=/dsf/wxy
3、server.dsf.xml
<?xml version='1.0' encoding='UTF-8'?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util" xmlns:dsf="http://www.huawei.com/schema/dsf"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.4.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.huawei.com/schema/dsf
http://www.huawei.com/schema/dsf/spring-dsf-1.0.xsd">
<!-- 将服务A的实现声明为一个Spring Bean -->
<bean id="ServiceAimpl" class="com.dsf.service.SeriviceAimpl" />
<!-- 通过dsf:exporter 标签发布服务 -->
<!-- name:服务名,必选。 -->
<!-- interface:先前定义的服务接口 -->
<!-- ref:引用上面由服务实现声明的Spring Bean-->
<dsf:exporter name="ServiceA"
interface="com.dsf.service.ServiceA" ref="ServiceAimpl" />
</beans>
4、client.dsf.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util" xmlns:dsf="http://www.huawei.com/schema/dsf"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.4.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.huawei.com/schema/dsf
http://www.huawei.com/schema/dsf/spring-dsf-1.0.xsd">
<!-- 服务导入定义 -->
<!-- name:本地Spring框架中的Bean名称 -->
<!-- interface: 服务接口的名称 -->
<!-- service-name: 服务名,需要和Server端发布服务时,dsf:exporter标签中的name属性一致 -->
<dsf:importer name="ServiceAInDsfClientAPP"
interface="com.dsf.service.ServiceA" service-name="ServiceA" />
</beans>
5、log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout
class="com.huawei.bme.commons.log4j.BMEPatternLayout">
<param name="ConversionPattern"
value="%d|%X{level}|%X{moduleName}|%X{traceID}|%m|%X{appendInfo}|%X{exceptionMessage}| %X{fullInfo} %n" />
</layout>
</appender>
<appender name="SPRING"
class="com.huawei.bme.commons.util.BMERollingFileAppender">
<param name="File" value="logs/local/spring.log" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="10" />
<layout
class="com.huawei.bme.commons.log4j.BMEPatternLayout">
<param name="ConversionPattern"
value="%d|%X{level}|%X{moduleName}|%X{traceID}|%m|%X{appendInfo}|%X{exceptionMessage}|%X{fullInfo} %n" />
</layout>
</appender>
<appender name="USF"
class="com.huawei.bme.commons.util.BMERollingFileAppender">
<param name="File" value="logs/local/usf.log" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d|%X{level}|%X{moduleName}|%X{traceID}|%m|%X{appendInfo}|%X{exceptionMessage}| %X{fullInfo} %n" />
</layout>
</appender>
<appender name="ZK"
class="com.huawei.bme.commons.util.BMERollingFileAppender">
<param name="File" value="logs/local/zk.log" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d|%X{level}|%X{moduleName}|%X{traceID}|%m|%X{appendInfo}|%X{exceptionMessage}| %X{fullInfo} %n" />
</layout>
</appender>
<appender name="THREADPOOL_MONITOR"
class="com.huawei.bme.commons.util.BMERollingFileAppender">
<param name="File" value="logs/local/threadpool_monitor.log" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d|%X{level}|%X{moduleName}|%X{traceID}|%m|%X{appendInfo}|%X{exceptionMessage}| %X{fullInfo} %n" />
</layout>
</appender>
<appender name="SLOW_SERVICE"
class="com.huawei.bme.commons.util.BMERollingFileAppender">
<param name="File" value="logs/local/slow_service.log" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d|%X{moduleName}|%m|%X{appendInfo}|%X{exceptionMessage}| %X{fullInfo} %n" />
</layout>
</appender>
<appender name="ZOOKEEPER"
class="com.huawei.bme.commons.util.BMERollingFileAppender">
<param name="File" value="logs/local/zookeeper.log" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} | %p | ZOOKEEPER | [%t]%m | %l%n" />
</layout>
</appender>
<appender name="REMOTING"
class="com.huawei.bme.commons.util.BMERollingFileAppender">
<param name="File" value="logs/local/remoting.log" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="10" />
<layout
class="com.huawei.bme.commons.log4j.BMEPatternLayout">
<param name="ConversionPattern"
value="%t|%d|%X{level}|%X{moduleName}|%X{traceID}|%m|%X{appendInfo}|%X{exceptionMessage}| %X{fullInfo} %n" />
</layout>
</appender>
<appender name="REMOTING_NETTY"
class="com.huawei.bme.commons.util.BMERollingFileAppender">
<param name="File" value="logs/local/remoting.log" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%t|%d|%p|NETTY|%m| %l%n" />
</layout>
</appender>
<appender name="TRACELINK"
class="com.huawei.bme.commons.trace.util.TraceRollingFileAppender">
<param name="File" value="logs/local/tracelink.log" />
<param name="MaxFileSize" value="100MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="com.huawei.bme.commons.trace.log4j.TracePatternLayout">
<param name="ConversionPattern"
value="<<<%X{traceID}|%X{calledNodeID}|%X{calledClusterId}|%X{calledIP}|%X{callingNodeID}|%X{callingIP}|%X{flag}|%X{appName}|%X{subSysName}|%X{protocol}|%X{beginTime}|%X{endTime}|%X{reqMsgSize}|%X{rspMsgSize}|%X{resultCode}|%X{resultInfo}|%X{seqNo}|%X{CallNumber}|%X{extendInfo}|%X{PlatformExtendInfo}|%X{CodeStream}>>> %n" />
</layout>
</appender>
<appender name="ASYNC_TRACELINK" class="com.huawei.bme.commons.trace.AsyncTraceAppender">
<param name="BufferSize" value="2048" />
<appender-ref ref="TRACELINK" />
</appender>
<category name="TraceLink@com.huawei.bme">
<priority value="INFO" />
<appender-ref ref="TRACELINK" />
</category>
<category name="AsyncTraceLink@com.huawei.bme">
<priority value="INFO" />
<appender-ref ref="ASYNC_TRACELINK" />
</category>
<category name="org.springframework">
<priority value="ERROR" />
<appender-ref ref="SPRING" />
</category>
<category name="org.springframework.osgi ">
<priority value="ERROR" />
<appender-ref ref="SPRING" />
</category>
<category name="com.huawei.csc.usf.framework">
<priority value="ERROR" />
<appender-ref ref="USF" />
</category>
<category name="com.huawei.csc.usf.adapter.dsf">
<priority value="ERROR" />
<appender-ref ref="USF" />
</category>
<category name="com.huawei.csc.usf.registry.zk">
<priority value="DEBUG" />
<appender-ref ref="ZK" />
</category>
<category name="default_threadpool_monitor_handler">
<priority value="ERROR" />
<appender-ref ref="THREADPOOL_MONITOR" />
</category>
<category name="slowService">
<priority value="ERROR" />
<appender-ref ref="SLOW_SERVICE" />
</category>
<category name="org.apache.zookeeper">
<priority value="DEBUG" />
<appender-ref ref="ZOOKEEPER" />
</category>
<category name="com.huawei.csc.remoting" additivity="false">
<priority value="ERROR" />
<appender-ref ref="REMOTING" />
</category>
<category name="io.netty" additivity="false">
<priority value="ERROR" />
<appender-ref ref="REMOTING_NETTY" />
</category>
<root>
<priority value="INFO" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
6、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:META-INF/spring/server.dsf.xml
classpath*:META-INF/spring/*.service.xml
</param-value>
</context-param>
<listener>
<listener-class>com.huawei.bme.container.control.ContainerContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<session-config>
<session-timeout>10</session-timeout>
</session-config>
</web-app>
完整demo下载地址:http://download.csdn.net/detail/qq_34413570/9825042
更多推荐
所有评论(0)