栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Dubbo

Dubbo

RPC:远程过程方法调用,是一种进程间通信方式,他是一种技术的思想
                        RPC基本原理:

注意:传输对象需要序列化

Apache Dubbo是一款高性能 、 轻量级的开源 Java RPC框架
它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现

智能容错和负载均衡:注册中心------负责调度

 Dubbo设计架构
Dubbo与spring完全兼容,Container就是spring的容器
服务提供者 Provider :暴露服务的服务提供方 服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者 Consumer:调用远程服务的服务消费方 服务消费者在启动时,向注册中心订阅自己所需的服务服务消费者
                                        从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
注册中心 Registry :注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
监控中心 Monitor :服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心x

Dubbo官方推荐协议使用dubbo协议,默认端口号是20880
spring配置文件加入:

直连方式 dubbo:

创建服务提供者

    创建maven的javaweb工程添加spring相关依赖、dubbo依赖(maven网站搜)创建service层接口,实现接口在resources创建配置文件,对外暴露service层的服务
        //http://dubbo.apache.org/schema/dubbo引入的是这个
    
    
    
    
    
    
    
    
     
    
    

    在web.xml里配置监听器、加载上面的xml配置文件

    配置Tomcat

创建服务消费者:

    创建maven的javaweb工程配置需要的依赖:spring、dubbo、依赖服务者通过的jar包(接口、接口方法)在resources创建dubbo的核心配置文件
        //http://dubbo.apache.org/schema/dubbo引入的是这个
    
        引用远程服务接口:
        id:自定义的,表示远程服务接口对象的名称 
        interface:调用远程接口的全限定名
        url:访问服务接口的地址
        registry="N/A":不使用注册中心
    
    
    
    编写controller
    在controller类里:直接设置私有属性  ---->  private 接口类型 同id名的变量名  --->注解自动注入
    就可以使用了配置调用调度器(servlet:DispatcherServlet)


Dubbo官方推荐必须有一个接口工程,它就是一个maven普通项目:要求                                //现在有三个工程了,接口工程、消费者web工程、服务者web工程
1)对外暴露的服务接口:service层接口        //service层接口                                                   //服务过程、消费工程依赖接口工程--->引入依赖
2)实体对象的类 //(即调用service方法获取的对象)                                                  //服务者,此时实现service层接口


建议将服务接口、服务模型、服务异常等均放在公共包中 。
服务接口尽可能大粒度,每个服务方法应代表一个功能,而不是某功能的一个步骤
服务接口建议以业务场景为单位划分,并对相近业务做抽象,防止接口数量爆炸。
不建议使用过于抽象的通用接口

每个接口都应定义版本号,为后续不兼容升级提供可能,如:

 推荐使用Zookeeper注册中心。
 

 安装Zookeeper:Apache ZooKeeper


修改刚刚的文件zoo.cfg----》修改dataDir临时数据=D:/program/apache-zookeeper-3.8.0-bin/data     
                                              添加admin.serverPort=8888  //zookeeper启动时内部会启动另一个程序--默认8080,为了避免8080端口冲突改成其他的

wndow启动、关闭

 Linux启动
Linux关闭

使用注册中心

    接口工程
      实体类(service层方法要传输的对象的类)        //注意序列化         业务接口
    服务工程:除了其他依赖,别忘了zookeeper依赖
      实现service层可以在实现的方法里创建接口工程里的实体类的对象,return出实现类对象(这样在另一个项目调用该方法就能得到实体类对象)核心配置文件
          //http://dubbo.apache.org/schema/dubbo引入的是这个
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    消费者工程:除了其他依赖,别忘了zookeeper依赖
      核心配置文件
          //http://dubbo.apache.org/schema/dubbo引入的是这个
      
      
      
      
      
      
      
      
          引用远程服务接口:
          id:自定义的,表示远程服务接口对象的名称    //会进入容器,所有可以自动注入
          interface:调用远程接口的全限定名
          url:访问服务接口的地址
          version匹配提供者的接口实现类版本x.x.x
          check="false"关闭检查。//默认true:会在注册中心检查是否有对应的服务,有则项目注册启动,没有则抛出异常      //通常开发时设置false,去掉属性使用默认值
          timeout属性:超时时间:访问服务不能超过xxx毫秒,否则响应超时       //服务端和消费端都有
      
      
      
      
      
      编写controller
      在controller类里:直接设置私有属性  ---->  private 接口类型 同id名的变量名  --->注解自动注入
      就可以在controller类的方法里使用了

监控中心:dubbo 的使用,其实只需要有注册中心,消费者,提供者这三个就可以使用了,但是并不能看到有哪些消费者和提供者,因此引入dubbo-admin
                  dubbo-admin 可以对消费者和提供者进行管理。
                  图形化的服务管理页面;安装时需要指定注册中心地址,即可从注册中心中获取到所有的提供者 /消费者进行配置管理

下载监控中心, https://github.com/apache/incubator-dubbo-ops

未完使用时候再看

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779634.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号