Dubbo入门程序(一)

目录

  • Dubbo 入门程序
    • 1.Dubbo简介
      • 1.1Dubbo 相关概念
    • 1.2 Dubbo 的相关术语
    • 1.3 Dubbo结构图以及执行流程
  • 2.入门程序
    • 2.1 安装注册中心
    • 2.2 启动服务
    • 2.3 关闭服务
    • 2.4 编写服务提供方
      • 2.4.1 创建项目
      • 2.4.2 编写pom文件
      • 2.4.3 dubbox-provider.xml文件
      • 2.4.4 编写web.xml 文件
      • 2.4.5 编写service接口以及实现类
    • 2.5 编写服务消费方
      • 2.5.1 创建项目
      • 2.5.2 编写pom文件
      • 2.5.3 dubbox-consumer.xml文件
      • 2.5.4 创建并编辑web.xml文件
      • 2.5.5 复制接口代码到该工程中
      • 2.5.6 编写Controller
    • 2.6 测试
      • 2.6.1 启动服务提供方
      • 2.6.2 启动服务消费放
      • 2.6.3 访问

Dubbo 入门程序

1.Dubbo简介

1.1Dubbo 相关概念

Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维护,为了与原有的Dubbo区分,故将其命名为Dubbox。

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

1.2 Dubbo 的相关术语

  • provider:服务提供方,将接口暴露到注册中心
  • consumer:服务消费放,首先需要监听注册中心,如果注册中心有服务,服务消费放方血药的服务,可消费服务
  • registry:注册中心:容器(存放接口消息)。在dubbo中可以使用Redis,Muticast,Zookeeper作为注册中心
  • container:容器,服务运行的容器,Tomcat
  • monitor:监控软件

1.3 Dubbo结构图以及执行流程

执行流程

  • 容器启动加载服务提供者,
  • 服务提供方在启动的时候,向注册中心暴露(注册自己的服务)
  • 服务消费方向注册中心订阅自己所需要的服务
  • 注册中心向服务消费放返回服务的地址列表,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  • 服务消费者从返回的地址列表中用软负载均衡算法选一个服务进行调用,如果调用失败,在选另一个服务进行调用
  • 服务消费者和提供者,在内存中调用次数和调用时间,每分钟向Monitor(监控中心)发送一次

2.入门程序

2.1 安装注册中心

官方推荐使用 zookeeper 注册中心。注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。

Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbox 服务的注册中心,工业强度较高,可用于生产环境。

  • zookeeper 的压缩包上传到 linux 系统
    Alt+P 进入SFTP ,输入put d:\zookeeper-3.4.6.tar.gz 上传
  • 解压缩压缩包
    tar -zxvf zookeeper-3.4.6.tar.gz
  • 进入conf目录 ,把 zoo_sample.cfg 改名为 zoo.cfg
    cd conf
    mv zoo_sample.cfg zoo.cfg
  • 编辑zoo.cfg文件, 修改 dataDir 属性:
    dataDir=/root/zookeeper-3.4.6/data

2.2 启动服务

./zkServer.sh start

2.3 关闭服务

./zkServer.sh stop

2.4 编写服务提供方

2.4.1 创建项目

Dubbo入门程序(一)_第1张图片

2.4.2 编写pom文件


	
		4.2.4.RELEASE
	
	
	
		
			org.springframework
			spring-context
			${spring.version}
		
		
			org.springframework
			spring-beans
			${spring.version}
		
		
			org.springframework
			spring-webmvc
			${spring.version}
		
		
			org.springframework
			spring-jdbc
			${spring.version}
		
		
			org.springframework
			spring-aspects
			${spring.version}
		
		
			org.springframework
			spring-jms
			${spring.version}
		
		
			org.springframework
			spring-context-support
			${spring.version}
		
		
		
			com.alibaba
			dubbo
			2.8.4
		
		
			org.apache.zookeeper
			zookeeper
			3.4.6
		
		
			com.github.sgroschupf
			zkclient
			0.1
		
		
			javassist
			javassist
			3.11.0.GA
		
	
	
	
		
			
			
				org.apache.maven.plugins
				maven-compiler-plugin
				2.3.2
				
					1.7
					1.7
				
			
			
			
				org.apache.tomcat.maven
				tomcat7-maven-plugin
				
					
					8081
					
					/
				
			
		
	

2.4.3 dubbox-provider.xml文件




    
	
	
	
	
	

2.4.4 编写web.xml 文件




  
    contextConfigLocation
    
    
    classpath:dubbox-provider.xml
  

  
  
    org.springframework.web.context.ContextLoaderListener
  


2.4.5 编写service接口以及实现类

接口:

package com.wlqk.dubbo.service;

import com.alibaba.dubbo.config.annotation.Service;

/**
 * @Description:
 * @Author: zc
 * @CreateDate: 2019/2/21$ 9:16$
 */
public interface ProviderService {
    public void getName(String name);
}

实现类:

package com.wlqk.dubbo.service;

import com.alibaba.dubbo.config.annotation.Service;

/**
 * @Description:
 * @Author: zc
 * @CreateDate: 2019/2/21$ 9:17$
 */
@Service
public class ProviderServiceImpl implements ProviderService {
    @Override
    public void getName(String name) {
        System.out.println("服务消费方传递参数:"+name);
    }
}

注意点:

Dubbo入门程序(一)_第2张图片

2.5 编写服务消费方

2.5.1 创建项目

2.5.2 编写pom文件

2.5.3 dubbox-consumer.xml文件



    
    
    
    
    
    
    

2.5.4 创建并编辑web.xml文件




  
    dobbox-web
    org.springframework.web.servlet.DispatcherServlet
    
    
      contextConfigLocation
      classpath:dubbox-consumer.xml
    
  
  
    dobbox-web
    *.do
  


2.5.5 复制接口代码到该工程中

连个接口的包名要一致

Dubbo入门程序(一)_第3张图片

2.5.6 编写Controller

@Reference 注解必须是dubbo的

package com.wlqk.dubbo.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.wlqk.dubbo.service.ProviderService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description:
 * @Author: zc
 * @CreateDate: 2019/2/21$ 9:34$
 */
@RestController
@RequestMapping("user")
public class CunsumerController {

    @Reference
    private ProviderService providerService;
    @RequestMapping("/getName.do")
    public String getName(){
        return providerService.getName("张三");
    }
}

2.6 测试

2.6.1 启动服务提供方

Dubbo入门程序(一)_第4张图片

2.6.2 启动服务消费放

Dubbo入门程序(一)_第5张图片

2.6.3 访问

在这里插入图片描述

你可能感兴趣的:(Dubbo)