Linux环境下Dubbo入门测试(Dubbo的Hello World搭建)

在Dubbo架构下搭建Hello World入门项目,话不多说直接介绍入门项目搭建的整个过程。

所需环境

1.Linux版本:Ubuntu 18.04.1 LTS
2.Zookeeper:3.4.11 Zookeeper官网
3.Java:JDK1.8+
4.Maven:3.2.5 maven官网
5.Dubbo:2.6.0 Dubbo官方GitHub地址

环境搭建

  • Zookeeper环境搭建

    • Java 环境变量设置
    vim /etc/profile   //修改系统配置文件
    		export JAVA_HOME=/usr/local/software/jdk1.8
      		export JRE_HOME=${JAVA_HOME}/jre
      		export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
      		export PATH=${JAVA_HOME}/bin:$PATH
    
    source /ect/profile   //修改后的配置立刻生效
    
    • Zookeeper安装

    1.解压Zookeeper

    tar -zxvf 
    

    2.将Zookeeper注册为服务
    (此步骤不是必须步骤,只是为了以后方便启动Zookeeper,如果不进行此步骤可以直接使用Zookeeper自带的启动脚本进行启动,使用自带脚本启动的方法会在稍后进行介绍)
    参考Ubuntu 18.04 Zookeeper注册系统服务

    3.启动Zookeeper
    (1)如果将Zookeeper注册为服务

    systemctl start zookeeper.service
    

    (2)如果没有将Zookeeper注册为服务,则使用Zookeeper自带的启动脚本进行启动

    /usr/local/software/zookeeper-3.4.11/bin/zkServer.sh start
    
  • Dubbo Admin环境搭建
    为了让使用户更好的管理或监控众多的dubbo服务,dubbo官方提供了可视化的监控程序——Dubbo Admin。不过不安装监控中心也不会影响dubbo的使用。
    1.下载dubbo admin dubbo admin官方下载地址
    2.进入dubbo admin的src/main/resources目录,修改application.properties中的配置(默认使用zookeeper作为注册中心,一般不需要改动,默认配置即可使用)

       application.properties默认配置:
       server.port=7001
       spring.velocity.cache=false
       spring.velocity.charset=UTF-8
       spring.velocity.layout-url=/templates/default.vm
       spring.messages.fallback-to-system-locale=false
       spring.messages.basename=i18n/message
       spring.root.password=root
       spring.guest.password=guest
       
       dubbo.registry.address=zookeeper://127.0.0.1:2181 
    

    3.将dubbo-admin源码打成jar包

    mvn clean package -Dmaven.test.skip=true
    

至此,Dubbo的基础环境已经搭建完成,在浏览器输入localhost:7001即可看到如下图所示的界面。
提示:Dubbo Admin开启的前提条件是Zookeeper服务必须开启。
Linux环境下Dubbo入门测试(Dubbo的Hello World搭建)_第1张图片

代码编写

在进行服务的划分时,通常建议将服务接口、模型、异常等均放在 API 包中,这样做符合分包原则。并且当后期代码需要进行维护时,只需要修改对应包中的代码,不需要进行大量代码的维护。
由于是Dubbo的入门程序,因此整个服务由共用代码(服务接口、模型)、服务提供者和服务消费者构成。

  1. 共用代码

源代码结构如图:
Linux环境下Dubbo入门测试(Dubbo的Hello World搭建)_第2张图片

public class Message implements Serializable {

    public String name;
    public String msg;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Message() { }

    public Message(String name, String msg) {
        this.name = name;
        this.msg = msg;
    }

    @Override
    public String toString() {
        return "Message{" +
                "name='" + name + '\'' +
                ", msg='" + msg + '\'' +
                '}';
    }
}

在dubbo服务中,共用的模型需要实现Serializable接口

public interface MessageService {
    public String getMessage(Message message);
}

pom.xml



    4.0.0

    com.blue
    dubbo-hello-interface
    1.0-SNAPSHOT

    
        1.8
        1.8
    

  1. 服务提供者

源代码结构如图:
Linux环境下Dubbo入门测试(Dubbo的Hello World搭建)_第3张图片

public class MessageServiceImpl implements MessageService{
    @Override
    public String getMessage(Message message) {
        return "To " + message.getName() + ":\n\t" + message.getMsg();
    }
}
public class ProviderMain {
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-bean.xml");
        System.in.read();
    }
}

spring-bean.xml




    

    
    
    
    
    
    
    
    


pom.xml



    4.0.0

    com.blue
    dubbo-hello-provider
    1.0-SNAPSHOT

    
        
            com.blue
            dubbo-hello-interface
            1.0-SNAPSHOT
        

        
        
            com.alibaba
            dubbo
            2.6.2
        
        
        
            org.apache.curator
            curator-framework
            2.12.0
        

    

    
        1.8
        1.8
    


  1. 服务消费者

源代码结构如图:
Linux环境下Dubbo入门测试(Dubbo的Hello World搭建)_第4张图片

@Service
public class ShowMessage {

    @Autowired
    MessageService messageService;

    public void showMessage(Message message){
        String result = messageService.getMessage(message);
        System.out.println(result);
    }

}
public class ConsumerMain {

    public static void main(String[] args){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-bean.xml");
        Message message = new Message("Dubbo", "Hello World!");
        ShowMessage showMessage = context.getBean(ShowMessage.class);
        showMessage.showMessage(message);
    }
}

spring-bean.xml




    

    
    
    
    


pom.xml代码同服务提供者

测试

先启动服务提供者,然后再启动服务消费者。
运行之后的结果为:
运行结果
dubbo admin(监控中心)中显示只有1个提供者,这是因为消费者在消费了服务之后不会在该界面进行统计,并不是代表消费者没有进行服务的消费。
Linux环境下Dubbo入门测试(Dubbo的Hello World搭建)_第5张图片

你可能感兴趣的:(框架学习)