整合篇:零基础学习与使用Dubbo

配套资料,免费下载
链接:https://pan.baidu.com/s/1jA217UgqXpONi_fV-aOzqw
提取码:bm2g
复制这段内容后打开百度网盘手机App,操作更方便哦

1、Dubbo的概述

1.1、Dubbo概述

RPC

RPC全称为remote procedure call,即远程过程调用。比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据。需要注意的是,RPC并不是一个具体的技术,而是指整个网络远程调用过程。RPC是一个泛化的概念,严格来说一切远程过程调用手段都属于RPC范畴。各种开发语言都有自己的RPC框架, Java 中的RPC框架比较多,广泛使用的有RMI、Hessian、Dubbo等。

Dubbo

Dubbo 是一款高性能、轻量级的开源 Java 服务框架,Dubbo |ˈdʌbəʊ| 提供了六大核心能力:面向接口代理的高性能RPC调用,智能负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。

1.2、Dubbo流程

运行架构:

节点说明:

节点 角色名称
Provider 暴露服务的服务提供方
Consumer 调用服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器,一般就是Spring的IOC容器

关系说明:

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

2、Dubbo的注册中心

2.1、Zookeeper概述

Dubbo 官方推荐使用 Zookeeper 作为服务注册中心(Registry)。Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境并推荐使用 。

2.2、Zookeeper流程

树型目录:

流程说明:

  • 服务提供者(Provider)启动时:向 /dubbo/com.foo.BarService/providers 目录下写入自己的 URL 地址。
  • 服务消费者(Consumer)启动时:订阅 /dubbo/com.foo.BarService/providers 目录下的提供者 URL 地址,并向 /dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址。
  • 监控中心(Monitor)启动时:订阅 /dubbo/com.foo.BarService 目录下的所有提供者和消费者 URL 地址。

2.3、Zookeeper下载

打开下载网址:http://archive.apache.org/dist/zookeeper/

注意:下载完成以后,直接解压到一个不含有中文和空格路径即代表安装完成。

2.4、Zookeeper配置

第一步:创建data数据目录

第二步:拷贝conf配置文件

第三步:配置data数据目录

image-20210122185257645

2.5、Zookeeper启动

image-20210122134557487

3、Dubbo的快速入门

3.1、服务生产者

3.1.1、工程搭建

image-20210122135912333

image-20210122140123919

image-20210122140141327

注意:请您手动将包名com.caochenlei.dubboproducer修改为com.caochenlei

3.1.2、导入依赖

pom.xml

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.8</version>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.6.2</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </exclusion>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>5.1.0</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>5.1.0</version>
</dependency>

3.1.3、编写配置

application.yaml

server:
  port: 9001
  servlet:
    application-display-name: dubbo-producer
dubbo:
  #应用配置
  application:
    name: dubbo-producer
    version: 0.0.1-SNAPSHOT
    logger: slf4j
  #注册中心
  registry:
    protocol: zookeeper
    address: zookeeper://127.0.0.1:2181
    check: false
  #协议配置
  protocol:
    name: dubbo
    port: 20880
  #注解扫描
  scan:
    base-packages: com.caochenlei.service.impl

3.1.4、编写接口

com.caochenlei.service.HelloService

public interface HelloService {
    String sayHello(String msg);
}

3.1.5、编写服务

com.caochenlei.service.impl.HelloServiceImpl

@DubboService
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String msg) {
        return msg;
    }
}

3.1.6、启动工程

请您手动找到启动类,然后启动该工程,只有正常启动以后,您才可以进入下一环节。

3.2、服务消费者

3.2.1、工程搭建

image-20210122145514538

image-20210122145531251

image-20210122145556109

注意:请您手动将包名com.caochenlei.dubboconsumer修改为com.caochenlei

3.2.2、导入依赖

pom.xml

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.8</version>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.6.2</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </exclusion>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>5.1.0</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>5.1.0</version>
</dependency>

3.2.3、编写配置

application.yaml

server:
  port: 9002
  servlet:
    application-display-name: dubbo-consumer
dubbo:
  #应用配置
  application:
    name: dubbo-consumer
    version: 0.0.1-SNAPSHOT
    logger: slf4j
  #注册中心
  registry:
    protocol: zookeeper
    address: zookeeper://127.0.0.1:2181
    check: false
  #注解扫描
  scan:
    base-packages: com.caochenlei.controller

3.2.4、编写接口

com.caochenlei.service.HelloService

public interface HelloService {
    String sayHello(String msg);
}

3.2.5、编写控制器

com.caochenlei.controller.HelloController

@RestController
public class HelloController {
    @DubboReference
    private HelloService helloService;

    @RequestMapping("/sayHello")
    public String sayHello(String msg) {
        return helloService.sayHello(msg);
    }
}

3.2.6、启动工程

请您手动找到启动类,然后启动该工程,只有正常启动以后,您才可以进入下一环节。

3.2.7、测试效果

打开浏览器输入地址:http://localhost:9002/sayHello?msg=zhangsan ,如果一切正常,那么您将看到以下的界面,代表成功了。

image-20210122151952114

4、Dubbo的监控中心

4.1、监控中心介绍

我们在开发时,需要知道 Zookeeper 注册中心都注册了哪些服务,有哪些消费者来消费这些服务,我们可以通过部署一个监控中心来实现管理。

4.2、监控中心启动

找到配套资料中的监控中心dubbo-admin-0.1.jar,使用java -jar dubbo-admin-0.1.jar直接启动,在浏览器输入地址:http://localhost:8080/

image-20210122185525012

相关文章

Nacos 中的参数有很多,如:命名空间、分组名、服务名、保护...
Nacos 支持两种 HTTP 服务请求,一个是 REST Template,另一...
Nacos 是 Spring Cloud Alibaba 中一个重要的组成部分,它提...
Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决...
在 Nacos 的路由策略中有 3 个比较重要的内容:权重、保护阈...
前两天遇到了一个问题,Nacos 中的永久服务删除不了,折腾了...