Dubbo 介绍及入门实战

前言

在java项目中,很多更加大型的项目其实已经采用springCloud 了。很多中小型项目其实我们很多项目并不需要这么多模块,将项目拆分为过多的模块,dubbo仍然有适合自己一些场景。在自己从头搭建一套项目的时候,有时候没有一套dubbo 模板导致刚刚搭建的时候就耗费挺多时间。这里将一套模板springboot + dubbo 模板贴出来,提高从头搭建项目的速率。

Dubbo 简单介绍

Dubbo 介绍及入门实战_第1张图片

dubbo调用的整体的流程:
首先服务提供者 Provider 启动然后向注册中心注册自己所能提供的服务。
服务消费者 Consumer 启动向注册中心订阅自己所需的服务。然后注册中心将提供者元信息通知给 Consumer, 之后 Consumer 因为已经从注册中心获取提供者的地址,因此可以通过负载均衡选择一个 Provider 直接调用 。之后服务提供方元数据变更的话注册中心会把变更推送给服务消费者。
服务提供者和消费者都会在内存中记录着调用的次数和时间,然后定时的发送统计数据到监控中心。

Dubbo 入门实战

一、构建三个模块
Dubbo 介绍及入门实战_第2张图片

二、common 的一些内容
1、在common模块构建dubbo模块间调用的接口(各个模块都会用到常量、返回类型这里主要演示dubo故值定义dubbo模块间调用的接口)

public interface ProviderService {
    String getProviderData(String data);

}

三、provider构建内容

3.1 构建maven依赖(common的依赖、和dubbo所需要maven包)

 
        11
        2.7.1
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            com.yin
            common
            1.0-SNAPSHOT
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        


        
        
            org.apache.dubbo
            dubbo-dependencies-zookeeper
            ${dubbo.version}
            pom
            
                
                    log4j
                    log4j
                
                
                    org.slfj
                    slf4j-log4j12
                
            
        

        
        
            org.apache.dubbo
            dubbo-spring-boot-starter
            ${dubbo.version}
        

        
        
            org.apache.dubbo
            dubbo
            ${dubbo.version}
        
    

3.2 构建provider 的application.properties 文件

server.port=9090
dubbo.application.name=dubbo-provider
dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper://192.168.25.128:2181
dubbo.protocol.name=dubbo
dubbo.provider.timeout=30000
#这里需要注意,我们很多项目可能会引入多个dubbo调用者,group 需要把group 放到代码
dubbo.provider.group=dev
dubbo.protocol.port=20880
dubbo.config-center.timeout=50000
dubbo.registry.timeout=4000
#部分dubbo 版本注册默认,非动态注册(导致在zookeeper注册的永久节点)
dubbo.provider.dynamic=true
dubbo.service.version=1.0.0

3.3 构建provider 在启动内上添加扫描目录

@SpringBootApplication
@EnableDubbo(scanBasePackages = {"com.yin.dubboprovider.provider"})
public class DubboProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboProviderApplication.class, args);
    }

}

3、4 启动类上添加注册版本号(其余信息都交由自动加载配置文件内容)

@Service(version = "${dubbo.service.version}")
public class ProviderServiceImpl implements ProviderService {
    @Override
    public String getProviderData(String data) {
        return "get provider data is"+data;
    }
}

四、consumer构建内容

4.1 构建maven依赖(common的依赖、和dubbo所需要maven包)


        11
        2.7.1
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            com.yin
            common
            1.0-SNAPSHOT
        

        
        
            org.apache.dubbo
            dubbo-dependencies-zookeeper
            ${dubbo.version}
            pom
            
                
                    log4j
                    log4j
                
                
                    org.slfj
                    slf4j-log4j12
                
            
        

        
        
            org.apache.dubbo
            dubbo-spring-boot-starter
            ${dubbo.version}
        

        
        
            org.apache.dubbo
            dubbo
            ${dubbo.version}
        




        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    

4.2 构建provider 的application.properties 文件

server.port=9091
dubbo.application.name=dubbo-consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper://192.168.25.128:2181
dubbo.protocol.name=dubbo
dubbo.consumer.timeout=30000
#这里需要注意,我们很多项目可能会引入多个dubbo调用者,group 需要把group 放到代码
test.dubbo.consumer.group=dev
dubbo.protocol.port=20880
dubbo.config-center.timeout=50000
dubbo.registry.timeout=4000
dubbo.registry.id=moa-provider-api
dubbo.service.version=1.0.0

4、3 引入common里面接口进行调用

@RestController
@RequestMapping("/dubbo")
public class DubboController {
    @Reference(version="${dubbo.service.version}",registry = "${dubbo.registry.id}",group = "${test.dubbo.consumer.group}")
    private ProviderService service;

    @RequestMapping("/getProviderData")
    public String getProviderData(@RequestParam("data") String data) {
        return service.getProviderData(data);
    }
}

五、dubbo调用结果
Dubbo 介绍及入门实战_第3张图片
可以看到dubbo将信息注册到zookeeper上面了
在这里插入图片描述

你可能感兴趣的:(dubbo,dubbo,springboot,zookeeper,分布式)