首页 课程 师资 教程 报名

Java前沿技术-Dubbo的配置及使用

  • 2019-08-23 10:43:13
  • 2145次 动力节点



现在学习的java编程的人越来越多了,Java是现今最流行的编程语言,在行业类工资也是相当高的,今天动力节点java学院小编为大家分享“Java前沿技术-Dubbo的配置及使用”,下面随小编一起看看吧。


1、Dubbo是什么?


  Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了Dubbo就是个远程服务调用的分布式框架。


  其核心部分包含:


  (1)远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。


  (2)集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。


  (3)自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。



  2、Dubbo能做什么?


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


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


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



  3、dubbo的架构


  dubbo架构图如下所示:


1.png




  节点角色说明:


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


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


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


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


  Container: 服务运行容器。



  调用关系说明


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


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


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


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


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


  (6)Dubbo 架构具有以下几个特点,分别是连通性、健壮性、伸缩性、以及向未来架构的升级性。



  4、dubbo使用方法


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


  dubbo通常采用zookeeper作为注册中心,这也是官方推荐的方式


  (1)使用dubbo前先启动zookeeper。


  (2)定义服务接口。


服务提供者


package com.unj.dubbotest.provider;  

  

import java.util.List;  

  

public interface DemoService {  

  

    String sayHello(String name);  

  

    public List getUsers();  

  

}  



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


package com.unj.dubbotest.provider;  

  

import java.util.ArrayList;  

import java.util.LinkedList;  

import java.util.List;  

  

public class DemoServiceImpl implements DemoService{  

      

     public String sayHello(String name) {  

            return "Hello " + name;  

     }  

     public List getUsers() {  

         List list = new ArrayList();  

         User u1 = new User();  

         u1.setName("jack");  

         u1.setAge(20);  

         u1.setSex("男");  

           

         User u2 = new User();  

         u2.setName("tom");  

         u2.setAge(21);  

         u2.setSex("女");  

           

         User u3 = new User();  

         u3.setName("rose");  

         u3.setAge(19);  

         u3.setSex("女");  

           

         list.add(u1);  

         list.add(u2);  

         list.add(u3);  

         return list;  

     }  

}  


用Spring配置声明暴露服务:


  

<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.properties文件(第一行是配置zookeeper的地址)


zookeeper.address=zookeeper://zkserver1.vko.cn:2181?backup=zkserver2.vko.cn:2181,zkserver3.vko.cn:2181

#zookeeper.address=N/A

goods.dubbo.url=

video.dubbo.url=

study.dubbo.url=

tiku.dubbo.url=

member.dubbo.url=

group.dubbo.url=

search.dubbo.url=

comment.dubbo.url=

cms.dubbo.url=


服务消费者:


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


  

<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:reference id="demoService"  

        interface="com.unj.dubbotest.provider.DemoService" url="${study.dubbo.url}" version="1.0" timeout="20000" check="false"/>  

  

 


  然后分别启动服务提供者和服务消费者就可以在消费中像调用本地方法一样调用远程接口服务 ,对于分布式服务来说,通常情况下服务提供者也是其它服务的消费者,反之服务消费者也会对外提供服务。


  这里会遇到一个dubbo循环调用的问题,在编程时应尽量避免。



  5、dubbo控制台的安装和使用


  dubbo的管理服务是需要单独部署的


  dubbo管理控制台开源部分主要包含: 提供者 路由规则 动态配置 访问控制 权重调节 负载均衡 负责人,等管理功能。


  (1)下载dubbo,里面有个 dubbo-admin-xxxx.war 扔到tomcat 里,


  (2)配置dubbo.properties


  vim webapps/ROOT/WEB-INF/dubbo.properties


  dubbo.registry.address=zookeeper://10.0.65.3:2181


  dubbo.admin.root.password=root


  dubbo.admin.guest.password=guest


  (3)启动tomcat localhost:8080/


  登录密码为root/root

1566527165787858.png


1566527208443481.png


1566527233415844.png


1566527249112291.png


以上内容就是动力节点java学院小编介绍的“Java前沿技术-Dubbo的配置及使用”的内容,希望对大家有帮助,更多精彩内容请关注动力节点java学院官网。


相关推荐


dubbo视频教程免费下载路径:http://www.bjpowernode.com/v99/



选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交