Dubbo

Dubbo_第1张图片

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

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

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

智能容错和负载均衡:注册中心------负责调度
Dubbo_第4张图片

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

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

直连方式 dubbo

创建服务提供者

  1. 创建maven的javaweb工程
  2. 添加spring相关依赖、dubbo依赖(maven网站搜)
  3. 创建service层接口,实现接口
  4. 在resources创建配置文件,对外暴露service层的服务
    
        //http://dubbo.apache.org/schema/dubbo引入的是这个
    
    
    
    
    
    
    
    
     
    
    
  5. 在web.xml里配置监听器、加载上面的xml配置文件

  6. 配置Tomcat

创建服务消费者:

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


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


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

每个接口都应定义版本号,为后续不兼容升级提供可能,如:version="1.0" />。

 推荐使用Zookeeper注册中心。
 

Dubbo_第6张图片

 安装Zookeeper:Apache ZooKeeper

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

 Dubbo_第11张图片Linux启动
Linux关闭

使用注册中心

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

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

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

未完使用时候再看

你可能感兴趣的:(工具使用,java,java,spring)