微服务框架 Dubbo简单学习

96 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第22天,点击查看活动详情

什么是Dubbo

Dubbo 是阿里巴巴公司开发的一个优秀的高性能开源的微服务框架,它提供了 RPC 通信与微服务治理两大关键能力。这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力,同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。

➡️ Dubbo 框架的服务发现原理图

接下来我们来看看 Dubbo 基于消费端到自动服务发现能力,其基本原理如下图所示:

image.png

从上图可以看出,服务发现的一个核心组件是注册中心,Consumer 从注册中心读取和订阅 Provider 地址列表。

这里我们用 ZooKeeper 作为注册中心,如下代码所示:

# application.properties
dubbo
 registry
  address: zookeeper://127.0.0.1:2181

➡️ Dubbo 服务发现说明

a. 节点角色说明:

  • Provider:暴露服务的服务提供方。
  • Consumer:调用远程服务的服务消费方。
  • Registry:服务注册与发现的注册中心。
  • Monitor:统计服务的调用次数和调用时间的监控中心。
  • Container:服务运行容器。

b. 调用关系说明:

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

Dubbo 环境搭建

👨‍🏫:我们在实际开发时,需要知道 ZooKeeper 注册中心都注册了哪些服务,有哪些消费者来消费了这些服务。为了更好的掌握这些信息,我们可以借助可视化工具来帮助我们管理每一个服务和每一个节点。

这里我们可以通过部署一个管理中心实现,而这个管理中心就是一个 Web 应用,原来是一个 war 包,需要部署到 Tomcat 服务中。现在是 jar 包,可以直接通过 java 命令运行。

➡️ Dubbo 源码下载

  • 进入 Dubbo 官网 ,点击 Github,进行下载,如下图所示:

image.png

  • 进入到 Github 页面后,一直往下找到 dubbo-admin/dubbo-monitor ,如下图所示:

image.png

  • 点击进去以后,页面中看到的是 dubbo-admin-server,没有 dubbo-admin,这是因为此时的分支是 develop,需要将分支切换为 master,如下图所示:

image.png 往下拉,可以看见官方给出的启动可视化工具的,具体方式:

image.png

首先在终端通过以下命令进行下载并解压,Linux下载这省略。然后对下载文件解压缩,进入dubbo-admin-server/src/main/resources/application.properties 目录下,可以看到注册中心为 ZooKeeper 的地址,这里默认本机就可以了,如下图所示:

image.png

回到 dubbo-admin-master 目录下,使用 maven 进行打包,如下所示(第一次执行,会比较慢,请耐心等候):

cd /home/project/dubbo-admin-master
mvn clean package -Dmaven.test.skip=true

出现如下 BUILD SUCCESS,表示打包成功

打包成功后,在 dubbo-admin-distribution 目录下会生成一个 target 目录,在 target 目录下会有一个 jar 包,你可以使用 java 命令运行此 jar 包。

启动Zookeeper

  • a. 在启动之前先在 zoo.cfg 配置文件中修改 The AdminServer 服务占用的 8080 端口,添加如下配置:

    admin.serverPort=8060
    

    ⭐ 说明:如果觉得上面这个服务没用的话,也可以在配置文件 zoo.cfg 中通过 admin.enableServer=false 进行关闭。

    b. 修改完之后,启动 ZooKeeper 服务:

    cd /home/project/apache-zookeeper-3.6.3-bin/bin
    bash zkServer.sh start
    
  • 使用 java 命令运行 /home/project/dubbo-admin-0.3.0.jar 的 jar 包,如下图所示:

    java -jar dubbo-admin-0.3.0.jar
    

    ⭐ 说明:此程序默认端口是 8080。

  • 浏览器访问 http://127.0.0.1:8080,由于平台默认端口设置的就是 8080。