精华内容
下载资源
问答
  • DSF分布式框架demo

    2017-04-25 15:37:32
    华为DSF分布式框架做了一个小demo,供大家参考学习
  • DSF、序列化、注解、服务接口、服务代理

    1、首先说一下什么是DSF
    DSF(到家服务框架):提供服务接口供客户端调用,实现服务端服务共享、避免服务的不一致及二次开发;(个人理解:类似于对外提供的API接口—只是这里是提供的服务的接口)

    2、框架:
    客户端程序、服务端程序、DSF容器:它们之间的连接通过RPC远程调用(基于TCP)

    3、各模块实现
    服务端程序:
    (1)数据实体类(添加注解@Table(name=“表名”)):
    与数据库相关——–表与数据实体类的成员之间的映射通过注解实现,存于entity包;成员变量(主键对应的变量:添加注解@Id(insertable = true)——表示主键,可设置属性可插入、可更新等;其他数据库中的变量@Column(name = “id”),对于不属于数据库表中的变量通过添加@NotDBColumn进行标注),各变量对应set、get方法,基本使用默认构造参数,有需要的话重写toString方法;这里还要注意(不像MyBatis,sql写在xml中)
    与 序列化、反序列化相关——-针对Java数据实体类,要实现serialize接口():要序列化的Java实体数据类添加@DSFSerializable(name =Java实体数据类 )标注;实体数据类成员添加@DSFMember(sortId=1)标注,并指定sortId值(不重复、1-127之间)
    (2)数据访问层(DAO):
    定义数据操作接口(增、删、改、查);
    定义数据操作接口的实现类(因为考虑到多个服务可能要同时访问、操作一个数据库,所以这里的实现通过单例模式实现–定义静态DAOOperator变量,通过静态方法获取变量,如果变量未进行初始化,则根据数据库连接配置文件db.config中的字段,初始化远端数据库连接:
    public static DAOOperator getDAOOperator() throws Exception{
    if(daoOperator == null){
    String dbConfig = Config.getConfigFolder()+”/db.config”;
    System.out.println(dbConfig);
    daoOperator = new DAOOperator(dbConfig);
    }
    return daoOperator;
    }
    数据库配置文件db.config中包含:
    - connectionURL : jdbc:mysql://IP:端口号/数据库?connectTimeout=1000&useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    driversClass : com.mysql.jdbc.Driver
    username :用户名
    password : 密码
    minPoolSize : 1
    maxPoolSize : 50
    idleTimeout : 30
    queryTimeout : 50
    insertUpdateTimeout : 10
    autoShrink : true
    //其他配置信息视情况而定
    (3)服务实现类:添加@DSFServiceBehavior(lookUP = “HouseRentService”)注解,服务代理(客户端)通过该标注中设定的lookUP值进行实际服务实现类的查找(因为可能同一个服务接口对应不同的服务实现类,同一接口的不同实现类通过lookUP值进行查找区分),服务的是实现(要确保DAO层静态DAOOperator变量被初始化了);
    服务接口类:添加注解@DSFServiceContract;服务接口类中方法添加注解@DSFOperationContract
    DSF容器服务端包含配置文件:dsf_config.xml、log4_config.xml

    客户端程序(服务代理):
    调用DSFInit进行初始化:
    使用图片服务(DFSClient(Distribution File System))和DSF(Daojia Service Framework)时,特别要注意初始化方法,分别是:DFSInit.init(String filePath) 和 DSFInit.init(String config);
    使用DSF服务代理工厂根据服务接口参数实例化服务接口变量;
    调用服务接口提供的方法实现功能;
    DSF容器客户端包含配置文件:dsf.config

    服务是要部署在DSF容器中:/dsf/service/deploy、服务端分别导出entity、contract、componentjar包下的jar包,然后放入服务命名的文件夹(里面除了服务端导出的jar包,还包括服务端配置文件dsf_config.xml、dsf_log4.xml、lib文件夹—maven下载的所有的依赖jar包、conf文件夹–数据库等配置文件)
    客户端的pom.xml文件要引入服务端对应导出的jar包,它的外层目录lib文件夹里面放的的共用底层的jar包;

    注意:socket、http、telnet配置服务部署的IP、端口号要一样,还有在服务代理的服务URL中,我们要使用url = “tcp://服务名/服务实现类”;这里命名要对应起来。

    展开全文
  • DSF分布式服务框架

    万次阅读 2018-11-26 16:59:23
    发布服务: ...在spring-dsf-exporter.xml配置文件中发布服务配置: <dsf:exporter name="dataAuthorizationServiceFacade" interface=&

    发布服务:
    在basic层发布服务

    服务是:@Service("XXXService")
    
      在spring-dsf-exporter.xml配置文件中发布服务配置:
        <dsf:exporter name="AAFacade" interface="com.service.basics.XXXService"
        				  ref="XXXService"></dsf:exporter>
    
    

    引入服务:
    在web层引入服务

     @Resource(name="YYYClient")
        private XXXService xxxService;
        
        spring-dsf-importer.xml中配置引入服务
        private XXXService xxxService;
        <dsf:importer name="YYYClient" interface="com.service.basics.XXXService"
                      service-name="AAFacade"></dsf:importer>
    
    
    展开全文
  • 分布式框架DSF的搭建

    万次阅读 2017-04-25 15:21:55
    首先声明,这个框架是华为公司开发的,原理是服务端发布服务去zookeeper注册,客户端去zookeeper注册中心调用服务端发布的服务,小弟才疏学浅,只是研究了一...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="&lt;&lt;&lt;%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}&gt;&gt;&gt; %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

    展开全文
  • Dubbo分布式服务框架的概念理解 Dubbo是是一个高性能,基于Java的RPC框架,由阿里巴巴开源。一个分布式的服务框架。可以实现SOA(面向服务的架构)架构。 Dubbo使用的公司:京东、当当、阿里巴巴、中国电信等等。 ...

    Dubbo分布式服务框架的概念理解
    Dubbo是是一个高性能,基于Java的RPC框架,由阿里巴巴开源。一个分布式的服务框架。可以实现SOA(面向服务的架构)架构。 Dubbo使用的公司:京东、当当、阿里巴巴、中国电信等等。

    分布式服务架构的由来
    问题:比如电信的计费系统提供了最原始的扣费功能,需要接入此计费系统的应用比较多,比如打电话需要计费、比如流量需要计费、比如宽带需要计费、比如ITV需要计费等等。  如果在每一个系统中都写一套计费的逻辑就会出现代码冗余过大,并且逻辑无法做到统一可维护。 所以需要将计费功能单独提炼出来,作为一个业务模块提供给其他应用使用。
    1
    以下式架构演变过程(以下案例纯粹为了说明问题,跟业务本身无关):

    早期,电信只有座机的时候,系统只有一个打电话的功能和一个计费的功能。因为业务单一,所以只有一个系统。

    单一业务的单体式架构


    后来,电信业务丰富起来了。新增了“短信”、“宽带”、“手机流量”等业务功能。按照常规做法,也只会在原有的“打电话”单一业务系统的基础上,多添加几个业务功能模块而已。所有的业务功能(““电话”、“短信”、“宽带”、“手机流量””)都还是在一个项目内部。如下图:

    多业务单体式架构


    多业务模式下的单体架构,当业务不断扩张、系统内部的业务功能模块越来越多,会导致如下问题:

    1、会导致业务功能模块的耦合度太高、不利于扩展和维护,以及推广。

    2、再者程序中存在一个魔性的数字:65535(16bit最大值)限制,(因为调用方法的指令容量只有16bit,65535正好是16bit能容纳的最大数字)。重复的方法数太多,会加速达到这个上限。(比如Android 应用65535很容易就上限了)。

    比如淘宝、天猫、阿里巴巴三个项目都需要用到支付,设想,将淘宝、天猫、阿里巴巴三个项目整合成一个项目的三个业务功能模块,将会比较杂乱。所以,出现了淘宝、天猫、阿里巴巴三个独立的项目,类似下图:

    垂直架构


    通过一步一步演变,架构已经成为如图所示的垂直式架构。但是大家都发现了其中的计费功能出现了4次。这样肯定不利于项目的维护和统一配置。(并且上图的计费只是众多可能重复模块中的一员)。所以不得不将多个项目都要使用的相同模块独立出来,共享给业务功能使用。这样,就演变成如下图架构:

    如图所示,计费被单独提炼出来成为一个独立的app,共其他app共同使用。图中“其他”模块用来代替千千万万类似计费的模块。

    这样一来,每一个方块就是一个独立的应用。这样解决了业务复杂度,将业务模块化、独立化,方便共享和扩展。这样的架构带给我们需要解决的问题如下:

    1、各个独立app之间的通信问题怎么解决?

    2、怎么做到统一调度、协调处理。

    3、如果计费模块是并发最大的模块,但是其他模块并发不是很大。则需要对计费进行负载均衡,怎么实现?

    以上问题可以使用dubbo解决。
    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/muyi_amen/article/details/79818481
    ————————————————
    版权声明:本文为CSDN博主「Javen2016」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/muyi_amen/article/details/79818481

    展开全文
  • 编者按:J2EE异军突起之时,那些2层架构(web+后端)的人必定是崩溃的;而后spring以without ejb...多点生活架构师陈泽洪本着【少谈些概念、多解决问题】的原则给我们分享他们用几个月完成的这一套分布式服务框架...
  • EHCI控制器模拟器被实现为EHCI迷你端口(Usbehci_dsf.sys)的DSF特定版本上的较低设备过滤器。EHCI小端口的DSF版本与控制器模拟器通信,就好像它是真正的硬件一样。控制器模拟器拦截寄存器和直接存储器存取(DMA)访问...
  • DSF分布式服务框架设计.pptx
  • Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方...
  • 基于Spring-DM实现分布式服务框架(DSF)(一) 发布时间:2008年01月29日 作者:BlueDavy阅读次数:448次 类别:OSGi、SCA 永久链接 Trackback 经过上篇分析分布式服务框架的blog后,正式对之前的基于OSGi实现分布式...
  • 多点生活的分布式服务框架DSF

    千次阅读 2016-10-19 14:19:15
    编者按:J2EE异军突起之时,那些2层架构(web+后端)的人必定是崩溃的;而后spring以without ejb革命了...多点生活架构师陈泽洪本着【少谈些概念、多解决问题】的原则给我们分享他们用几个月完成的这一套分布式服务框架
  • Dubbo框架介绍和入门程序 RPC介绍 Remote Process Callable 表示远程调用的意思 两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法 工作流程 》1、 A连接B,主要是通过在客户端和...
  • duboo分布式狂框架demo

    2017-03-28 16:42:10
    启动前注意。必须要启动zookeeper。没有zookeeper。请下载一个zookeeper,然后再启动
  • DUBBO是一个分布式服务治理框架,致力于提供高性能和透明化的RPC远程服务调用方案,可以和 Spring框架无缝集成,是阿里巴巴SOA服务化治理方案的核心框架. Dubbox Dubbo开源过后,当当网根据自身的需求,为Dubbo...
  • 本节描述DSF中包含的核心模拟器。 本节包括以下主题: DSF USB 2.0总线模拟器(SoftEHCI) DSF USB设备模拟器(SoftUSBDevice) DSF USB外部集线器模拟器(SoftUSBHub) DSF HID协议转换器(SoftHIDProtocolXlator)...
  • 简单的说,Dubbo就是个服务调用的框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有使用Dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东。其核心部分包含: 远程通讯:提供对...
  • 分布式服务框架HSF学习 Dubbo VS HSF

    千次阅读 2016-11-26 17:55:28
    HSF提供的是分布式服务开发框架,taobao内部使用较多,总体来说其提供的功能及一些实现基础: 1.标准Service方式的RPC  1)、Service定义:基于OSGI的Service定义方式  2)、TCP/IP通信:  IO方式:nio,采用...
  • DSF使用COM自动化对象将DSF服务暴露给设备模拟器。您可以从任何具有COM客户端能力的语言访问这些对象。几乎所有对象都公开了只使用OLE自动化兼容数据类型的双接口。 返回对象的COM方法和属性总是将它们作为指向在...
  • 分布式服务框架Dubbo+Zookeeper * Author QiuRiMangCao 秋日芒草*Zookeeper 能解决的问题:1.统一命名服务(server1:order服务名,server1:downOrder服务名,zk负责管理命名) 2.状态同步(用户状态,订单状态,...
  • 要用设备仿真框架DSF)开发USB设备模拟器,您应该熟悉: USB 2规范。 通用串行总线增强型主机控制器接口(EHCI)规范。 组件对象模型(COM)。 至少一个COM客户端可编程语言。   创建日期:9/21/ 2010   ...
  • 基于DSF架构的USB设备虚拟
  • 序: 之前整理过RPC框架原理,因为到家内部在推行dubbo换成自研的dsf框架(自研的有利于监控扩展),老系统逐步升级,所以整理下知识点(分为dubbo,跟dsf部分)。背景:随着互联网的发展,网站应用的规模不断扩大...
  • Visual Studio 2005或VisualStudio 2008没有本地64位版本。Visual Studio是一个32位应用程序,可以在x64操作系统上运行,并且支持64位...但是,如果Visual Studio在基于x64的平台上运行,则DSF对象库不可用,因为...
  • DSF构建在osgi服务api之上,osgi提供丰富的api来管理服务,为了使用DSF,理解osgi服务api的一些基础知识是很重要的 注册-服务需要使用osgi框架来注册和注销他们自己 BundleContext.registerService() - 注册一个服务...
  • DSF对所有模拟设备(包括USB设备)使用与设备无关的对象模型。下面的图表显示了DSF对象模型。    DSF对象模型的图解 DSF对象(IDSF)充当层次结构的根,并提...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 653
精华内容 261
关键字:

dsf框架