精华内容
下载资源
问答
  • DUBBOX是什么

    2018-10-04 18:55:45
    1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的...

    1. Dubbo是什么?

    Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)
    其核心部分包含:
    1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
    2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
    3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

    2. Dubbo能做什么?

    1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。      
    2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
    3. 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

    Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

    之前使用Web Service,我想测试接口可以通过模拟消息的方式通过soapui或LR进行功能测试或性能测试。但现在使用Dubbo,接口之间不能直接交互,我尝试通过模拟消费者地址测试,结果不堪入目,再而使用jmeter通过junit进行测试,但还是需要往dubbo上去注册,如果再不给提供源代码的前提下,这个测试用例不好写啊....

     

    3. dubbo的架构

    dubbo架构图如下所示:

     

     

     

    节点角色说明:

           Provider: 暴露服务的服务提供方。

           Consumer: 调用远程服务的服务消费方。

           Registry: 服务注册与发现的注册中心。

           Monitor: 统计服务的调用次调和调用时间的监控中心。

           Container: 服务运行容器。

    这点我觉得非常好,角色分明,可以根据每个节点角色的状态来确定该服务是否正常。

    调用关系说明:

    0 服务容器负责启动,加载,运行服务提供者。

    1. 服务提供者在启动时,向注册中心注册自己提供的服务。

    2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

    3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

    4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

    5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

    dubbo的容错性显而易见,性能方面还没有还得及测,我们系统某页面需要掉5次接口,本来想建议做个缓存,但业务关系不能采纳,还需要研究下dubbo的性能调优问题...

    4. dubbo使用方法。

    Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。如果不想使用Spring配置,而希望通过API的方式进行调用(不推荐)

    下面我们就来看看spring配置方式的写法:

    服务提供者:

    1. 下载zookeeper注册中心,下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/  下载后解压即可,进入D:\apach-zookeeper-3.4.5\bin,

    双击zkServer.cmd启动注册中心服务。

    2. 定义服务接口: (该接口需单独打包,在服务提供方和消费方共享)

     

     下面这个例子不错,写的很详细可以做个model.

    1. package com.unj.dubbotest.provider;  
    2.   
    3. import java.util.List;  
    4.   
    5. public interface DemoService {  
    6.   
    7.     String sayHello(String name);  
    8.   
    9.     public List getUsers();  
    10.   
    11. }  


    在服务提供方实现接口:(对服务消费方隐藏实现)

     

    1. package com.unj.dubbotest.provider;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.LinkedList;  
    5. import java.util.List;  
    6.   
    7.   
    8. public class DemoServiceImpl implements DemoService{  
    9.       
    10.      public String sayHello(String name) {  
    11.             return "Hello " + name;  
    12.      }  
    13.      public List getUsers() {  
    14.          List list = new ArrayList();  
    15.          User u1 = new User();  
    16.          u1.setName("jack");  
    17.          u1.setAge(20);  
    18.          u1.setSex("男");  
    19.            
    20.          User u2 = new User();  
    21.          u2.setName("tom");  
    22.          u2.setAge(21);  
    23.          u2.setSex("女");  
    24.            
    25.          User u3 = new User();  
    26.          u3.setName("rose");  
    27.          u3.setAge(19);  
    28.          u3.setSex("女");  
    29.            
    30.          list.add(u1);  
    31.          list.add(u2);  
    32.          list.add(u3);  
    33.          return list;  
    34.      }  
    35. }  

     

    用Spring配置声明暴露服务:

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    4.     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
    5.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
    6.         http://www.springframework.org/schema/beans/spring-beans.xsd  
    7.         http://code.alibabatech.com/schema/dubbo  
    8.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd  
    9.         ">  
    10.    
    11.     <!-- 具体的实现bean -->  
    12.     <bean id="demoService" class="com.unj.dubbotest.provider.DemoServiceImpl" />  
    13.       
    14.     <!-- 提供方应用信息,用于计算依赖关系 -->  
    15.     <dubbo:application name="xixi_provider"  />  
    16.    
    17.     <!-- 使用multicast广播注册中心暴露服务地址   
    18.     <dubbo:registry address="multicast://224.5.6.7:1234" />-->  
    19.     
    20.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
    21.     <dubbo:registry address="zookeeper://127.0.0.1:2181" />   
    22.     
    23.     <!-- 用dubbo协议在20880端口暴露服务 -->  
    24.     <dubbo:protocol name="dubbo" port="20880" />  
    25.    
    26.     <!-- 声明需要暴露的服务接口 -->  
    27.     <dubbo:service interface="com.unj.dubbotest.provider.DemoService" ref="demoService" />  
    28.       
    29. </beans>  

    加载Spring配置,启动服务:

    1. package com.unj.dubbotest.provider;  
    2.   
    3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    4.   
    5. public class Provider {  
    6.    
    7.     public static void main(String[] args) throws Exception {  
    8.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});  
    9.         context.start();  
    10.    
    11.         System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟  
    12.     }  
    13.    
    14. }  

     

    服务消费者:

     applicationContext-dubbo.xml 中注册自己需要调用的接口,我刚开始测试的时候需要的接口很多,所以把这个文件写的满满的,后来熟悉了把接口按业务类型分开,写了N多个 applicationContext-dubbo-***.xml 简练多了 》。 

     

    1.通过Spring配置引用远程服务:

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
    4.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
    5.         http://www.springframework.org/schema/beans/spring-beans.xsd  
    6.         http://code.alibabatech.com/schema/dubbo  
    7.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd  
    8.         ">  
    9.   
    10.     <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->  
    11.     <dubbo:application name="hehe_consumer" />  
    12.   
    13.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
    14.     <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->  
    15.     <dubbo:registry address="zookeeper://127.0.0.1:2181" />  
    16.   
    17.     <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->  
    18.     <dubbo:reference id="demoService"  
    19.         interface="com.unj.dubbotest.provider.DemoService" />  
    20.   
    21. </beans>  

     

    2.加载Spring配置,并调用远程服务:

    1. package com.alibaba.dubbo.demo.pp;  
    2.   
    3. import java.util.List;  
    4.   
    5. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    6.   
    7. import com.unj.dubbotest.provider.DemoService;  
    8.   
    9. public class Consumer {  
    10.   
    11.     public static void main(String[] args) throws Exception {  
    12.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(  
    13.                 new String[] { "applicationContext.xml" });  
    14.         context.start();  
    15.   
    16.         DemoService demoService = (DemoService) context.getBean("demoService"); //  
    17.         String hello = demoService.sayHello("tom"); // ִ  
    18.         System.out.println(hello); //   
    19.   
    20.         //   
    21.         List list = demoService.getUsers();  
    22.         if (list != null && list.size() > 0) {  
    23.             for (int i = 0; i < list.size(); i++) {  
    24.                 System.out.println(list.get(i));  
    25.             }  
    26.         }  
    27.         // System.out.println(demoService.hehe());  
    28.         System.in.read();  
    29.     }  
    30.   
    31. }  

    调用结果为:

     

    dubbo管理页面:

    这个管理页面还需要部署一个环境的,一开始我还以为是dubbo自带的,找了半天没有找到....

     

     

     

     

     

    应用页面:

     

     

     

     

    提供者页面:

     

     

     

     

    消费者页面:

     

     

     

     

    服务页面:

    测试是否成功,我觉得只要看看状态是否正常,就ok了 ....

     

    案例代码下载:http://download.csdn.net/detail/yiyu1/7116319

     

     

    --------------------- 本文来自 切格瓦拉_周 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/WEIwei1996_06/article/details/82793328?utm_source=copy

    展开全文
  • Dubbox 是什么?

    千次阅读 2018-05-09 16:11:24
    1. Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候...

    1. Dubbo是什么?

    Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册
    其核心部分包含:
    1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
    2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
    3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

    2. Dubbo能做什么?

    1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。      
    2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
    3. 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

    Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

    之前使用Web Service,我想测试接口可以通过模拟消息的方式通过soapui或LR进行功能测试或性能测试。但现在使用Dubbo,接口之间不能直接交互,我尝试通过模拟消费者地址测试,结果不堪入目,再而使用jmeter通过junit进行测试,但还是需要往dubbo上去注册,如果再不给提供源代码的前提下,这个测试用例不好写啊....

     

    3. dubbo的架构

    dubbo架构图如下所示:
     

     

     

    节点角色说明:

           Provider: 暴露服务的服务提供方。

           Consumer: 调用远程服务的服务消费方。

           Registry: 服务注册与发现的注册中心。

           Monitor: 统计服务的调用次调和调用时间的监控中心。

           Container: 服务运行容器。

    这点我觉得非常好,角色分明,可以根据每个节点角色的状态来确定该服务是否正常。

    调用关系说明:

    0 服务容器负责启动,加载,运行服务提供者。

    1. 服务提供者在启动时,向注册中心注册自己提供的服务。

    2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

    3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

    4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

    5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

    dubbo的容错性显而易见,性能方面还没有还得及测,我们系统某页面需要掉5次接口,本来想建议做个缓存,但业务关系不能采纳,还需要研究下dubbo的性能调优问题...

    4. dubbo使用方法。

    Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。如果不想使用Spring配置,而希望通过API的方式进行调用(不推荐)

    下面我们就来看看spring配置方式的写法:

    服务提供者:

    1. 下载zookeeper注册中心,下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/  下载后解压即可,进入D:\apach-zookeeper-3.4.5\bin,

    双击zkServer.cmd启动注册中心服务。

    2. 定义服务接口: (该接口需单独打包,在服务提供方和消费方共享)

     

     下面这个例子不错,写的很详细可以做个model.

    1. package com.unj.dubbotest.provider;  
    2.   
    3. import java.util.List;  
    4.   
    5. public interface DemoService {  
    6.   
    7.     String sayHello(String name);  
    8.   
    9.     public List getUsers();  
    10.   
    11. }  


    在服务提供方实现接口:(对服务消费方隐藏实现)

     

    1. package com.unj.dubbotest.provider;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.LinkedList;  
    5. import java.util.List;  
    6.   
    7.   
    8. public class DemoServiceImpl implements DemoService{  
    9.       
    10.      public String sayHello(String name) {  
    11.             return "Hello " + name;  
    12.      }  
    13.      public List getUsers() {  
    14.          List list = new ArrayList();  
    15.          User u1 = new User();  
    16.          u1.setName("jack");  
    17.          u1.setAge(20);  
    18.          u1.setSex("男");  
    19.            
    20.          User u2 = new User();  
    21.          u2.setName("tom");  
    22.          u2.setAge(21);  
    23.          u2.setSex("女");  
    24.            
    25.          User u3 = new User();  
    26.          u3.setName("rose");  
    27.          u3.setAge(19);  
    28.          u3.setSex("女");  
    29.            
    30.          list.add(u1);  
    31.          list.add(u2);  
    32.          list.add(u3);  
    33.          return list;  
    34.      }  
    35. }  

     

    用Spring配置声明暴露服务:
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    4.     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
    5.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
    6.         http://www.springframework.org/schema/beans/spring-beans.xsd  
    7.         http://code.alibabatech.com/schema/dubbo  
    8.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd  
    9.         ">  
    10.    
    11.     <!-- 具体的实现bean -->  
    12.     <bean id="demoService" class="com.unj.dubbotest.provider.DemoServiceImpl" />  
    13.       
    14.     <!-- 提供方应用信息,用于计算依赖关系 -->  
    15.     <dubbo:application name="xixi_provider"  />  
    16.    
    17.     <!-- 使用multicast广播注册中心暴露服务地址   
    18.     <dubbo:registry address="multicast://224.5.6.7:1234" />-->  
    19.     
    20.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
    21.     <dubbo:registry address="zookeeper://127.0.0.1:2181" />   
    22.     
    23.     <!-- 用dubbo协议在20880端口暴露服务 -->  
    24.     <dubbo:protocol name="dubbo" port="20880" />  
    25.    
    26.     <!-- 声明需要暴露的服务接口 -->  
    27.     <dubbo:service interface="com.unj.dubbotest.provider.DemoService" ref="demoService" />  
    28.       
    29. </beans>  
    加载Spring配置,启动服务:
    1. package com.unj.dubbotest.provider;  
    2.   
    3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    4.   
    5. public class Provider {  
    6.    
    7.     public static void main(String[] args) throws Exception {  
    8.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});  
    9.         context.start();  
    10.    
    11.         System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟  
    12.     }  
    13.    
    14. }  

    服务消费者:

     applicationContext-dubbo.xml 中注册自己需要调用的接口,我刚开始测试的时候需要的接口很多,所以把这个文件写的满满的,后来熟悉了把接口按业务类型分开,写了N多个 applicationContext-dubbo-***.xml 简练多了 》。 

     

    1.通过Spring配置引用远程服务:
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
    4.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
    5.         http://www.springframework.org/schema/beans/spring-beans.xsd  
    6.         http://code.alibabatech.com/schema/dubbo  
    7.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd  
    8.         ">  
    9.   
    10.     <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->  
    11.     <dubbo:application name="hehe_consumer" />  
    12.   
    13.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
    14.     <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->  
    15.     <dubbo:registry address="zookeeper://127.0.0.1:2181" />  
    16.   
    17.     <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->  
    18.     <dubbo:reference id="demoService"  
    19.         interface="com.unj.dubbotest.provider.DemoService" />  
    20.   
    21. </beans>  

    2.加载Spring配置,并调用远程服务:
    1. package com.alibaba.dubbo.demo.pp;  
    2.   
    3. import java.util.List;  
    4.   
    5. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    6.   
    7. import com.unj.dubbotest.provider.DemoService;  
    8.   
    9. public class Consumer {  
    10.   
    11.     public static void main(String[] args) throws Exception {  
    12.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(  
    13.                 new String[] { "applicationContext.xml" });  
    14.         context.start();  
    15.   
    16.         DemoService demoService = (DemoService) context.getBean("demoService"); //  
    17.         String hello = demoService.sayHello("tom"); // ִ  
    18.         System.out.println(hello); //   
    19.   
    20.         //   
    21.         List list = demoService.getUsers();  
    22.         if (list != null && list.size() > 0) {  
    23.             for (int i = 0; i < list.size(); i++) {  
    24.                 System.out.println(list.get(i));  
    25.             }  
    26.         }  
    27.         // System.out.println(demoService.hehe());  
    28.         System.in.read();  
    29.     }  
    30.   
    31. }  

    调用结果为:

     


    dubbo管理页面:

    这个管理页面还需要部署一个环境的,一开始我还以为是dubbo自带的,找了半天没有找到....

     


     

     

     

     

    应用页面:

     

     

     

     

    提供者页面:

     

     

     

     

    消费者页面:

     

     

     

     

    服务页面:

    测试是否成功,我觉得只要看看状态是否正常,就ok了 ....

     

    案例代码下载:http://download.csdn.net/detail/yiyu1/7116319

     
     

     

     

    展开全文
  • dubbox

    2019-12-10 08:31:46
    Dubbox是什么 Dubbox是一个分布式服务框架,前身是阿里巴巴的开源项目Dubbo,后来阿里不再维护此框架;进而当当网进行了进一步维护,为了和Dubbo区分就取名为Dubbox。 简单而言,在Dubbox中主要存在三种角色:注册...

    Dubbox是什么
    Dubbox是一个分布式服务框架,前身是阿里巴巴的开源项目Dubbo,后来阿里不再维护此框架;进而当当网进行了进一步维护,为了和Dubbo区分就取名为Dubbox。

    简单而言,在Dubbox中主要存在三种角色:注册中心(Registry)、 提供者(Provider)、消费者(Customer)。

    而作为分布式框架之一的Dubbox就能够实现消费方和提供方之间的远程调用,即对分别部署在不同服务器端的服务提供了一个相互交互的平台。

    节点角色说明:   
          Provider: 暴露服务的提供方

    Consumer: 调用远程服务的服务消费方

    Registry: 服务注册与发现的注册中心

    Monitor: 统计服务调用次数和调用时间的监控中心

    Container: 服务运行容器

    调用关系说明: 
          服务容器负责启动、加载,运行服务提供者

    服务提供者在启动时,向注册中心注册自己提供的服务

    服务消费者在启动时,向注册中心订阅自己所需的服务

    注册中心返回返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

    服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台

    服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

    Dubbox实例
      生产者
        导入依赖:

    复制代码

     <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>dubbo</artifactId>
          <version>2.8.4</version>
        </dependency>
        <!-- 添加zk客户端依赖 -->
        <dependency>
          <groupId>com.github.sgroschupf</groupId>
          <artifactId>zkclient</artifactId>
          <version>0.1</version>
        </dependency>
        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-jaxrs</artifactId>
          <version>3.0.7.Final</version>
        </dependency>
        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-client</artifactId>
          <version>3.0.7.Final</version>
        </dependency>
        <dependency>
          <groupId>javax.validation</groupId>
          <artifactId>validation-api</artifactId>
          <version>1.0.0.GA</version>
        </dependency>
    
        <!-- 如果要使用json序列化 -->
        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-jackson-provider</artifactId>
          <version>3.0.7.Final</version>
        </dependency>
    
        <!-- 如果要使用xml序列化 -->
        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-jaxb-provider</artifactId>
          <version>3.0.7.Final</version>
        </dependency>
    
        <!-- 如果要使用netty server -->
        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-netty</artifactId>
          <version>3.0.7.Final</version>
        </dependency>
    
        <!-- 如果要使用Sun HTTP server -->
        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-jdk-http</artifactId>
          <version>3.0.7.Final</version>
        </dependency>
    
        <!-- 如果要使用tomcat server -->
        <dependency>
          <groupId>org.apache.tomcat.embed</groupId>
          <artifactId>tomcat-embed-core</artifactId>
          <version>8.0.11</version>
        </dependency>
        <dependency>
          <groupId>org.apache.tomcat.embed</groupId>
          <artifactId>tomcat-embed-logging-juli</artifactId>
          <version>8.0.11</version>
        </dependency>
        <dependency>
          <groupId>com.esotericsoftware.kryo</groupId>
          <artifactId>kryo</artifactId>
          <version>2.24.0</version>
        </dependency>
        <dependency>
          <groupId>de.javakaffee</groupId>
          <artifactId>kryo-serializers</artifactId>
          <version>0.26</version>
        </dependency>
        <dependency>
          <groupId>de.ruedigermoeller</groupId>
          <artifactId>fst</artifactId>
          <version>1.55</version>
        </dependency>
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>2.3.3</version>
        </dependency>
        <dependency>
          <groupId>org.mortbay.jetty</groupId>
          <artifactId>jetty</artifactId>
          <version>7.0.0.pre5</version>
        </dependency>
        <dependency>
          <groupId>com.dubbo</groupId>
          <artifactId>dubbox_service</artifactId>
          <version>1.0-SNAPSHOT</version>
          <scope>compile</scope>
        </dependency>
    

    接口:

    在这里插入图片描述

    接口实现类:

    在这里插入图片描述

    配置文件

    复制代码

    <?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:dubbo="http://code.alibabatech.com/schema/dubbo"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://code.alibabatech.com/schema/dubbo
           http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    
        <!--声明服务提供方-->
        <dubbo:application name="dubbox-provider"/>
        <!--注册中心地址-->
        <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
        <!--dubbo服务端口-->
        <dubbo:protocol name="rest" port="8081"/>
    
        <!--服务注册-->
        <dubbo:service interface="com.dubbo.service.DoSomeService" ref="doSomeService"/>
        <bean id="doSomeService" class="com.dubbo.service.impl.DoSomeServiceImpl"/>
    
    </beans>
    

    测试:
    在这里插入图片描述

    结果:

    在这里插入图片描述

    消费者
        导入依赖:
          依赖与生产者相同;

    接口:
        在这里插入图片描述

    配置文件:

    <?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:dubbo="http://code.alibabatech.com/schema/dubbo"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://code.alibabatech.com/schema/dubbo
           http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
        <!--声明服务提供方-->
        <dubbo:application name="dubbox-consumer"/>
        <!--注册中心地址-->
        <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
        <!--服务消费-->
        <dubbo:reference interface="com.dubbo.service.DoSomeService" id="doSomeService"/>
    </beans>
    

    复制代码
    测试:
    在这里插入图片描述
    结果:
    在这里插入图片描述

    展开全文
  • Dubbox总结

    2018-09-14 11:46:21
    Dubbox是什么 Dubbox 是一个分布式服务框架,其前身是阿里巴巴的开源项目,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行维护,为了与原有的Dubbo区分,故将其命名为Dubbox。 Dubbox 致力于提供高...

    Dubbox总结

     

    2018年8月24日

    • Dubbox是什么

    Dubbox 是一个分布式服务框架,其前身是阿里巴巴的开源项目,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行维护,为了与原有的Dubbo区分,故将其命名为Dubbox。

    Dubbox 致力于提供高性能透明化RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbox就是个分布式服务框架,如果没有分布式的需求,其实是不需要用的。

    • 为什么要用Dubbox

    当网站变大后我们需要拆分应用进行服务化,来提高开发效率,或者是调节网站性能。我们写项目好多都是分布式项目,即便是做后台管理,现在在公司里好多也是使用SOA架构模式,也就是服务层和表现层分离,好处是模块解耦,可以自己做自己的模块。如果进行分布式开发的话,需要模块分离,分离就产生一个问题,怎样提供接口,怎样调用?Dubbo可以发布服务,也给我们提供调用服务的方式,现在好多公司都在用这种方式来做。

     

    • Dubbox作用

    1)透明化的远程方法调用,就像调用本地方法一样,只需简单配置,没有任何API侵入

    2)软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点

    3)服务自动注册与发现,不再需要写死服务提供方的地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者

    4)dubbo采用全spring配置方式,只需spring加载dubbo的配置即可,dubbo基于spring的schema扩展进行加载

     

    • 怎样使用Dubbox

    Dubbo里边有几个比较关键的点,一个是服务提供者,就是提供服务的一方,还有一个消费者,用来消费所提供的服务接口,还有一个注册中心,就是服务注册到哪里,我们用的是zookeeper,一般是配置到linux服务器上,还有检测器,能检测服务发布和调用,还有一个服务容器,就是tomcat或者其他服务器。

    它是这样来执行的,我们写项目时,会在pom文件中配置dubbo和zookeeper,引入依赖的jar包。然后在spring的配置文件中配置自动扫描要发布的服务接口实现类所在的包的全路径,以及服务要发布到注册中心的ip端口。dubbo这个框架类似于Spring,它会读取配置文件中配置信息,扫描实现类有@service注解的类,把注册的服务(服务全类名,服务地址),注册到zookeeper这个注册中心去。

    我们在写表现层项目时候,就在配置文件中配置好zookeeper中心所在服务器的ip端口,配置扫描@controller类包的路径,程序一但启动,dubbo这个框架读取配置文件中服务的信息,扫描@controller类里面有@Refrence注解引入的service类,根据接口名称在zookeeper注册中心订阅服务,zookeeper返回服务地址给服务消费者web层,接着消费者会拿着这个地址去调用服务提供者的接口。

    服务层项目会不断的向注册中心发布自己的服务,表现层项目也会不断的到注册中心去查找服务,要是配置的接口不对,或者zookeeper这个注册中心没有启动,那这个项目就运行不起来了。

    • Dubbox配置文件的说明
      1.  <dubbo:service/>

    用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。服务暴露出去后,可被订阅的服务调用

      1. <dubbo:reference/>

    用于创建一个远程服务代理,一个引用可以指向多个注册中心。用于指明要订阅的服务

      1. <dubbo:protocol/>

    用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。指明消费者消费时使用的通行协议,Dubbo支持的有http,dubbo,redis,memcache,rmi等也可以自行扩展,缺省是dubbo

      1. <dubbo:registry/>

    用于配置连接注册中心相关信息,dubbo支持的有多播,单播,redis,或使用Zookeeper。推荐使用Zookeeper

      1. <dubbo:monitor/>

    用于配置连接监控中心相关信息

    • Dubbox执行流程

     

    节点角色说明:

    Container服务容器·

    Provider服务提供者

    Consumer服务消费者

    Registry注册中心

    Monitor: 监控中心

    ·

    调用关系说明:

    · 0. 服务容器负责启动,加载,运行服务提供者。

    · 1. 服务提供者在启动时,向注册中心注册自己提供的服务。

    · 2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

    · 3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

    · 4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,

    如果调用失败,再选另一台调用。

    · 5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计

    数据到监控中心。

    展开全文
  • dubbox是什么  Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维护,为了与原有的Dubbo...
  • 1.dubbox是什么? dubbox是当当网开源的开源分布式服务框架,基于阿里巴巴dubbo。 1个框架 + 2个方案:分布式服务框架 +RPC远程调用方案+ SOA服务治理方案。 2.dubbox可以干什么? 大白话:以前使用本地调用服务...
  • Dubbo扩展:Dubbox

    2017-10-24 20:51:11
    Dubbox是Dubbo的一个扩展,假如你知道java, javax 和 dubbo,那你就会明白dubbox是什么了。 Dubbox增加的功能如RESTful remoting, Kyro/FST 系列化等。它已经应用在当当网内部的多个项目中。 Dubbox当前的主要...
  • Dubbox需要什么版本的JDK? 目前最好在JDK 1.7以上运行 Dubbo REST的服务能和Dubbo注册中心、监控中心集成吗? 可以的,而且自动集成的,也就是你在dubbo中开发的所有REST服务都会自动注册到服务册中心和监控中心...
  • Dubbox框架

    2019-12-02 09:41:45
    什么是SOA架构? SOAService-Oriented Architecture的首字母简称,它一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看,面向服务一种思考方式。其实SOA架构更多应用于互联网项目开发。 ...
  • 初识Dubbox

    2019-02-24 20:10:49
    1、什么是SOA架构 SOAService-Oriented Architecture的首字母简称,它一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看,面向服务一种思考方式。其实SOA架构更多应用于互联网项目开发。 为...
  • dubbox搭建

    2018-08-01 02:49:29
    1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的...
  • <div><p>2017-03-22 16:24:03,035 [main] ERROR com.alibaba.dubbo.container.Main (Main.java:86) - [DUBBO] Error creating bean with name '... defined in URL [jar:file:/usr/...dangdangdotcom/dubbox</p></div>
  • ##为什么使用Dubbox而不是Dubbo Dubbo阿里开源的RPC服务调用框架,已经3年没有维护了,而当当网开源的Dubbox在保证Dubbo原有功能的基础上做了一系列优化。 ##使用Dubbox的好处 支持REST风格远程调用(HTTP + JSON/...
  • Dubbox学习笔记

    万次阅读 2017-11-09 21:04:02
    1、什么是SOA架构 SOAService-Oriented Architecture的首字母简称,它一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看,面向服务一种思考方式。其实SOA架构更多应用于互联网项目开发。 ...
  • 我们服务框架使用的是dubbox(这个不用再多描述了),内部系统调用使用的dubbo协议;而对于前端提供服务则使用rest协议。前端应用面临许多rest服务,为了解决调用的统一,所以需要一个网关系统。 为什么自己写 对于...
  • Dubbox以及微服务

    2019-09-26 23:46:00
    Dubbox以及微服务 zookeeper在Dubbo中扮演了一个什么角色,起到了什么作用? 现在整体架构如下图(假设服务消费者为订单服务,服务提供者为用户服务): 这样会有什么问题呢? 当服务提供者增加节点时,需要...
  • Dubbox的入门小案例

    2018-02-03 20:42:33
    Dubbox 关于Dubbox身世的小故事 Dubbox原来阿里的亲儿子Dubbo,不过后来阿里又生了一个小儿子HSF,正所谓,有了新欢,那还需要旧爱.所以Dubbo就被阿里赶出家门,流落街头....Dubbox用来干什么 Dubbox 致力于...
  • Dubbox简介与入门实战

    千次阅读 2018-10-27 19:17:59
    Dubbox是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo,被国内电商及互联网项目中使用,后期阿里巴巴停止了Dubbo项目的维护(现Dubbo已捐献给Apache基金会),因为阿里巴巴内部的HSF框架比Dubbo更高效,更贴合...
  • Dubbox的常见问题

    千次阅读 2016-09-03 18:04:37
    Dubbox需要什么版本的JDK? 目前最好在JDK 1.7以上运行 Dubbo REST的服务能和Dubbo注册中心、监控中心集成吗? 可以的,而且自动集成的,也就是你在dubbo中开发的所有REST服务都会自动注册到服务册中心和监控...
  • 什么是SOA架构 SOAService-Oriented Architecture的首字母简称,它一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看,面向服务一种思考方式。其实SOA架构更多应用于互联网项目开发。 为...
  • dubbox面试专用

    2019-07-28 18:56:45
    1.Dubbo是什么? Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成。 RPC 指的是远程调用协议,也就是说两个服务器交互数据。 ...
  • Dubbox服务被多次调用

    2021-01-12 08:37:22
    我可以通过什么方式去调试问题的原因? <p>Dubbox 版本:2.8.4 Zookeeper版本:3.4.6 standalone Ubuntu14.04 java version "1.7.0_75"</p><p>该提问来源于开源项目:...
  • dubbo学习 三 dubbox概述

    2016-12-02 23:52:00
    当当网根据自身的需求,对dubbo进行了扩展就叫成了...之前了解过restful服务具体是什么,resteasy也了解过,所以看到就可以理解。 基于非常成熟的之前看过的rest实现jboss-resteasy框架,他把这个框架集成到了d...
  • 分布式框架-Dubbox介绍

    千次阅读 2017-10-18 09:44:25
    1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的...
  • 先下载下来,在pom.xml文件中修改jdk版本mvn clean package install -Dmaven.test.skip=true 如果报错,查看缺少什么jar包,删除jar包,重新执行上面的命令 dubbox是需要zookeeper的,所以必须要先安装zk。 d
  • 微服务之 -- dubbox初次使用

    千次阅读 2017-01-17 14:31:00
    Dubbox需要什么版本的JDK? 目前最好在JDK 1.7以上运行 Dubbo REST的服务能和Dubbo注册中心、监控中心集成吗? 可以的,而且自动集成的,也就是你在dubbo中开发的所有REST服务都会自动注册到服务册...
  • 一、什么是SOA架构   SOAService-Oriented Architecture的首字母简称,它一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看,面向服务一种思考方式。其实SOA架构更多应用于互联网项目开发...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 153
精华内容 61
关键字:

dubbox是什么