Dubbo直连方式

目录
  • 一、dubbo概述
    • 1. 基本架构
    • 2. dubbo 支持的协议
  • 二、直连方法
  • 三、创建服务提供者
    • 1. 思路
    • 1. 创建maven web
    • 2. pom.xml
    • 3. 创建实体
    • 4. 创建服务接口并实现
    • 5. 配置服务提供者的核心配置文件
    • 6. 添加监听器
    • 7. 配置Tomcat
    • 8. 安装本地jar到maven仓库
  • 四、创建服务消费者
    • 1. 思路
    • 1. pom.xml
    • 2. 配置服务消费者的核心配置文件
    • 3. controller
    • 4. applicationContext.xml
    • 5. 配置中央调度器
    • 6. 配置Tomcat
    • 7. 配置测试页面
    • 8. 测试

一、dubbo概述

Apache Dubbo 是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:

  • 面向接口的远程方法调用,
  • 智能容错和负载均衡,
  • 服务自动注册和发现。

Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案、 服务治理方案。

官网:http://dubbo.apache.org/zh-cn/

特性:

Dubbo直连方式_第1张图片

面向接口代理:

调用接口的方法,在 A 服务器调用 B 服务器的方法,由 dubbo 实现对 B 的调用,无需关心实现的细节,就像 MyBatis 访问 Dao 的接口,可以操作数据库一样。不用关心 Dao 接口方法的实现

1. 基本架构

Dubbo直连方式_第2张图片

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

调用关系说明

  1. 服务容器负责启动,加载,运行服务提供者
  2. 服务提供者在启动时,向注册中心注册自己提供的服务
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

2. dubbo 支持的协议

支持多种协议:dubbo , hessian , rmi , http, webservice , thrift , memcached , redis。dubbo 官方推荐使用 dubbo 协议。dubbo 协议默认端口 20880
使用 dubbo 协议,spring 配置文件加入:

二、直连方法

点对点的直连项目:消费者直接访问服务提供者,没有注册中心。消费者必须指定服务提供者的访问地址(url)

消费者直接通过 url 地址访问固定的服务提供者。这个 url 地址是不变的。

Dubbo直连方式_第3张图片

三、创建服务提供者

1. 思路

  1. 创建一个maven web工程:服务的提供者
  2. 创建一个实体bean查询的结果,实现Serializable接口
  3. 提供一个服务接口:xxxx
  4. 实现这个服务接口:xxxxImpl
  5. 配置dubbo服务提供者的核心配置文件
    • 声明dubbo服务提供者的名称:保证唯一
    • 声明dubbo使用的协议和端口号
    • 暴露服务,使用直连方式
  6. 添加监听器

1. 创建maven web

Dubbo直连方式_第4张图片

并添加对应的目录
Dubbo直连方式_第5张图片

2. pom.xml

添加了dubbo依赖




  4.0.0

  com.md
  01-link-userservice-provider
  1.0.0
  war



  
    UTF-8
    1.8
    1.8
  

  
    
      junit
      junit
      4.11
      test
    


    
    
      org.springframework
      spring-context
      4.3.16.RELEASE
    

    
      org.springframework
      spring-webmvc
      4.3.16.RELEASE
    


    
    
      com.alibaba
      dubbo
      2.6.2
    

  

  
    
      
        src/main/java
        
          **/*.properties
          **/*.xml
        
        false
      
    
  


3. 创建实体

package com.md.dubbo.model;

import java.io.Serializable;

/**
 * @author MD
 * @create 2020-08-16 21:30
 */
// model实现序列化
public class User implements Serializable {

    private Integer id;

    private String username;

    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

4. 创建服务接口并实现

package com.md.dubbo.service;

import com.md.dubbo.model.User;

/**
 * @author MD
 * @create 2020-08-16 21:35
 */
public interface UserService {

    /**
     * 根据用户标识获取用户信息
     * @param id
     * @return
     */
    User queryUserById(Integer id);
}
//---------------------------------------
package com.md.dubbo.service.impl;

import com.md.dubbo.model.User;
import com.md.dubbo.service.UserService;

/**
 * @author MD
 * @create 2020-08-16 21:38
 */

public class UserServiceImpl implements UserService {
    @Override
    public User queryUserById(Integer id) {

        // 模拟
        User user = new User();
        user.setId(id);
        user.setUsername("pony");
        user.setAge(20);
        return user;
    }
}

5. 配置服务提供者的核心配置文件

在resources目录下建立dubbo-userservice-provider.xml文件

Dubbo直连方式_第6张图片

这里注意:选择apache的这个




    
    

    
    

    
    

    
    


6. 添加监听器

在web.xml中






  
    contextConfigLocation
    classpath:dubbo-userservice-provider.xml
  

  
    org.springframework.web.context.ContextLoaderListener
  



7. 配置Tomcat

端口号注意修改一下:

HTTP port :8081

JMX port:1098

Dubbo直连方式_第7张图片

8. 安装本地jar到maven仓库

服务接口中的方法要给消费者使用,消费者项目需要知道接口名称和接口中的方法名称、参数等。这些信息服务提供者才知道。需要把接口的 class 文件打包为 jar .
服务接口项目的类文件打包为 jar, 安装到 maven 仓库,仓库中的提供者 jar 可以被消费者使用。
使用 idea 的 maven 窗口执行 install
Dubbo直连方式_第8张图片

四、创建服务消费者

1. 思路

  1. 创建一个maven web工程:服务的消费者
  2. 配置pom文件:添加需要的依赖(spring,dubbo)
  3. 设置dubbo的核心配置文件
  4. 编写controller
  5. 配置中央调度器(就是一个servlet:DispatcherServlet)

基本和服务提供者一样,这里就说一些主要的

1. pom.xml

还是maven web项目

注意:添加了服务提供者的依赖




  4.0.0

  com.md
  02-link-consumer
  1.0.0
  war



  
    UTF-8
    1.8
    1.8
  

  
    
      junit
      junit
      4.11
      test
    

    
    
      org.springframework
      spring-context
      4.3.16.RELEASE
    

    
      org.springframework
      spring-webmvc
      4.3.16.RELEASE
    

    
    
      com.alibaba
      dubbo
      2.6.2
    

    
    
      com.md
      01-link-userservice-provider
      1.0.0
    


  

  
    
      
        src/main/java
        
          **/*.properties
          **/*.xml
        
        false
      
    
  


2. 配置服务消费者的核心配置文件

在resources目录下建立dubbo-consumer.xml文件




    
    


    
    



3. controller

package com.md.dubbo.web;

import com.md.dubbo.model.User;
import com.md.dubbo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author MD
 * @create 2020-08-19 9:00
 */

@Controller
public class UserController {

    // 自动注入
    @Autowired
    private UserService userService;

    @RequestMapping(value = "/user")
    public String userDetail(Model model , Integer id){
        User user = userService.queryUserById(id);
        model.addAttribute("user",user);
        return "userDetail";

    }
}

4. applicationContext.xml

在resources目录下创建spring配置文件




    
    

    
    

    
        
        

    


5. 配置中央调度器

在web.xml中



  


  
    dispatcherServlet
    org.springframework.web.servlet.DispatcherServlet

    
      contextConfigLocation
      classpath:applicationContext.xml,classpath:dubbo-consumer.xml
    

  


  
    dispatcherServlet
    /
  




6. 配置Tomcat

和上面一样,只不过不用修改端口号了
Dubbo直连方式_第9张图片

7. 配置测试页面

在webapp下 建立userDetail.jsp

<%--
  Created by IntelliJ IDEA.
  User: MD
  Date: 2020/8/19
  Time: 9:06
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    用户详情


用户详情

用户标识:${user.id}
用户名称:${user.username}
用户年龄:${user.age}

8. 测试

  1. 首先开服务提供者的Tomcat
  2. 然后开服务消费者的Tomcat
  3. 然后在地址栏输入,就可以看到了

Dubbo直连方式_第10张图片

你可能感兴趣的:(Dubbo直连方式)