Dubbo学习——基础使用

目录

一、Dubbo的发展历程

二、Dubbo基本知识

三、基于Zookeeper注册中心的demo

四、监控中心dubbo-admin


一、Dubbo的发展历程

         Apache Dubbo 是一款微服务框架,为大规模微服务实践提供高性能 RPC 通信、流量治理、可观测性等解决方案,涵盖 Java、Golang 等多种语言 SDK 实现。
        Dubbo出自于Alibaba公司,2011年开源至GitHub;
        2014年11月发布dubbo2.4.11后停止更新;
        此后一段时间,很多公司根据自己的业务推出了基于dubbo的改良版本,如当当网(Dubbo X)、网易考拉(Dubbo K);
        2017年,SpringCloud发布,Dubbo继续更新;
        2018年,阿里合并Dubbo X,发布2.6版本并将其贡献给Apache继续维护,更名为  Apache Dubbo

二、Dubbo基本知识

        Dubbo支持多种协议:

  •         dubbo 协议 (默认)
  •         rmi 协议
  •         hessian 协议
  •         http 协议
  •         webservice 协议
  •         thrift 协议
  •         memcached 协议
  •         redis 协议
  •         RestFull

        Dubbo的注册中心:

  •         Nacos(目前最主流)
  •         Zookeeper
  •         Multicast
  •         Redis
  •         Simple
    ....

        Dubbo的监控中心:

  •         dubbo-admin

三、基于Zookeeper注册中心的demo

        1.创建springboot项目并添加三个子模块,即服务的提供方和消费方,存放公用的服务接口

        2.定义服务接口和实体对象

public class User implements Serializable {
    public String name;
    public Integer id;
}
public interface UserService {
    User getById(int id);
}

实体类要实现Serializable接口,RPC调用的对象数据的传输需要序列化和反序列化

        3.生产者暴露服务到Zookeeper注册中心

        3.1实现UserService服务

import org.apache.dubbo.config.annotation.Service;

@Service
public class MyUserService implements UserService {
    @Override
    public User getById(int id) {
        return new User("Max", id);
    }
}

        3.2配置application.yml

server:
  #该应用在本机的端口号
  port: 8081
#dubbo设置
dubbo:
  application:
    name: provider
  #注册中心
  registry:
    address: zookeeper://localhost:2181
  #元中心地址
  metadata-report:
    address: zookeeper://localhost:2181
  #使用的传输协议
  protocal:
    name: dubbo
  #需要暴露的服务的包
  scan:
    base-package: com.examaple

元数据地址:将provider、consumer以及注册中心中非服务配置持久化储存在zookeeper或者redis中,减少服务调用过程中传输的数据量,提高效率。

        3.3启动应用

package com.example;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class Application {

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

        4.消费者消费服务

package com.example;

import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class Consume implements CommandLineRunner {
    
    @DubboReference
    private UserService userService;

    @Override
    public void run(String... args) throws Exception {
        System.out.println(userService.getById(1));
    }
}
package com.example;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class Application {

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

四、监控中心dubbo-admin

        dubbo-admin是图形化的服务管理页面;安装时需要指定注册中心地址,可从注册中心中获取到服务提供者/消费者的全部信息并进行配置管理,结合admin管理控制后台使用,可以清晰的看到服务的访问记录、成功次数、失败次数等

        1.下载项目GitHub - apache/dubbo-admin: The ops and reference implementation for Apache Dubbo

        2.在/dubbo-admin/dubbo-admin-server/src/main/resources/application.properties目录下配置注册中心地址(这里以zookeeper为例)

        3.在/dubbo-admin目录下执行

mvn clean package

 显示BUILD SUCCESS即打包成功 

        4.启动项目

        在dubbo-admin\dubbo-admin-distribution\target目录下执行

java -jar dubbo-admin-0.5.0.jar

        启动springboot应用 

        5.登录

        在dubbo-admin\dubbo-admin-ui目录下执行

npm run dev


        获取默认地址                localhost:8082
        默认账号和密码            root/root