Dubbo 学习归档

Dubbo 学习归档

目前Dubbo主要版本有两个:Dubbo 2.7和Dubbo 2.6
两个版本最大的差异,在于配置管理中心。Dubbo 2.6版本所有数据都存在注册中心上,Dubbo 2.7版本分成了注册中心,配置中心,和元数据中心。

Dubbo 官网

分布式服务架构
RPC : 远程过程调用
流动计算架构

环境搭建

注册中心 zookeeper 的安装

  • 第一步:
    解压 zookeeper 安装包(zookeeper-3.4.13.tar.gz)

  • 第二步:
    运行 bin 目录下的zkServer.cmd
    第一次运行 zkServer.cmd 会报一个错:
    org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing D:\Software\Dubbo\zookeeper-3.4.13\bin..\conf\zoo.cfg
    初次运行会报错,没有zoo.cfg配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Microsoft Windows [版本 10.0.17134.950]
    (c) 2018 Microsoft Corporation。保留所有权利。

    D:\Software\Dubbo\zookeeper-3.4.13\bin>zkServer.cmd

    D:\Software\Dubbo\zookeeper-3.4.13\bin>call "C:\Program Files\Java\jdk1.8.0_131"\bin\java "-Dzookeeper.log.dir=D:\Software\Dubbo\zookeeper-3.4.13\bin\.." "-Dzookeeper.root.logger=INFO,CONSOLE" -cp "D:\Software\Dubbo\zookeeper-3.4.13\bin\..\build\classes;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\build\lib\*;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\*;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\*;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\conf" org.apache.zookeeper.server.quorum.QuorumPeerMain "D:\Software\Dubbo\zookeeper-3.4.13\bin\..\conf\zoo.cfg"
    2019-09-22 09:06:43,767 [myid:] - INFO [main:QuorumPeerConfig@136] - Reading configuration from: D:\Software\Dubbo\zookeeper-3.4.13\bin\..\conf\zoo.cfg
    2019-09-22 09:06:43,777 [myid:] - ERROR [main:QuorumPeerMain@88] - Invalid config, exiting abnormally
    org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing D:\Software\Dubbo\zookeeper-3.4.13\bin\..\conf\zoo.cfg
    at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:156)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:104)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:81)
    Caused by: java.lang.IllegalArgumentException: D:\Software\Dubbo\zookeeper-3.4.13\bin\..\conf\zoo.cfg file is missing
    at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:140)
    ... 2 more
    Invalid config, exiting abnormally

    D:\Software\Dubbo\zookeeper-3.4.13\bin>endlocal

    D:\Software\Dubbo\zookeeper-3.4.13\bin>
  • 第三步:
    解决:
    在 zookeeper 的解压包下有一个 conf 文件夹,在该目录下有一个 zoo_sample.cfg 的配置文件, 在当前目录下复制一个该配置文件的副本,并且重命名为 zoo.cfg

  • 第四步:
    打开该配置文件(zoo.cfg)

    • dataDir=/tmp/zookeeper 临时数据的存储位置
      这里是 linux 的目录结构,我们可以在 zookeeper 的解压路径下创建一个 tmp文件夹,然后在该目录下创建一个data 文件夹,用来存储临时数据
      修改配置为: dataDir=../tmp/data 并保存配置文件即可
    • clientPort=2181 这是zookeeper的端口号:2181
  • 第五步:
    按第二步再次运行 bin 目录下的 zkServer.cmd

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    D:\Software\Dubbo\zookeeper-3.4.13\bin>zkServer.cmd

    D:\Software\Dubbo\zookeeper-3.4.13\bin>call "C:\Program Files\Java\jdk1.8.0_131"\bin\java "-Dzookeeper.log.dir=D:\Software\Dubbo\zookeeper-3.4.13\bin\.." "-Dzookeeper.root.logger=INFO,CONSOLE" -cp "D:\Software\Dubbo\zookeeper-3.4.13\bin\..\build\classes;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\build\lib\*;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\*;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\*;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\conf" org.apache.zookeeper.server.quorum.QuorumPeerMain "D:\Software\Dubbo\zookeeper-3.4.13\bin\..\conf\zoo.cfg"
    2019-09-22 09:35:38,679 [myid:] - INFO [main:QuorumPeerConfig@136] - Reading configuration from: D:\Software\Dubbo\zookeeper-3.4.13\bin\..\conf\zoo.cfg
    2019-09-22 09:35:38,708 [myid:] - INFO [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3
    2019-09-22 09:35:38,709 [myid:] - INFO [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 0
    2019-09-22 09:35:38,712 [myid:] - INFO [main:DatadirCleanupManager@101] - Purge task is not scheduled.
    2019-09-22 09:35:38,722 [myid:] - WARN [main:QuorumPeerMain@116] - Either no config or no quorum defined in config, running in standalone mode
    2019-09-22 09:35:38,959 [myid:] - INFO [main:QuorumPeerConfig@136] - Reading configuration from: D:\Software\Dubbo\zookeeper-3.4.13\bin\..\conf\zoo.cfg
    2019-09-22 09:35:38,960 [myid:] - INFO [main:ZooKeeperServerMain@98] - Starting server
    2019-09-22 09:35:43,545 [myid:] - INFO [main:Environment@100] - Server environment:zookeeper.version=3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT
    2019-09-22 09:35:43,546 [myid:] - INFO [main:Environment@100] - Server environment:host.name=Gavino
    2019-09-22 09:35:43,552 [myid:] - INFO [main:Environment@100] - Server environment:java.version=1.8.0_131
    2019-09-22 09:35:43,556 [myid:] - INFO [main:Environment@100] - Server environment:java.vendor=Oracle Corporation
    2019-09-22 09:35:43,559 [myid:] - INFO [main:Environment@100] - Server environment:java.home=C:\Program Files\Java\jdk1.8.0_131\jre
    2019-09-22 09:35:43,567 [myid:] - INFO [main:Environment@100] - Server environment:java.class.path=D:\Software\Dubbo\zookeeper-3.4.13\bin\..\build\classes;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\build\lib\*;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\zookeeper-3.4.13.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\audience-annotations-0.5.0.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\jline-0.9.94.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\log4j-1.2.17.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\netty-3.10.6.Final.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\slf4j-api-1.7.25.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\slf4j-log4j12-1.7.25.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\conf
    2019-09-22 09:35:43,569 [myid:] - INFO [main:Environment@100] - Server environment:java.library.path=C:\Program Files\Java\jdk1.8.0_131\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;";C:\Program Files\Java\jdk1.8.0_131\bin";D:\Software\UML\Rational\rose\common;D:\Common Tools\tools package\sublime text\Sublime Text 3;C:\Windows\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;D:\Software\Maven\apache-maven-3.5.4\bin;D:\Software\Git\cmd;D:\Software\Compiler\tdm64-gcc-5.1.0\bin;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;D:\Software\Nodejs\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;D:\Software\py\Python\Python37\Scripts\;D:\Software\py\Python\Python37\;C:\Users\dell\AppData\Local\Microsoft\WindowsApps;C:\Users\dell\AppData\Roaming\npm;.
    2019-09-22 09:35:43,573 [myid:] - INFO [main:Environment@100] - Server environment:java.io.tmpdir=C:\Users\dell\AppData\Local\Temp\
    2019-09-22 09:35:43,586 [myid:] - INFO [main:Environment@100] - Server environment:java.compiler=<NA>
    2019-09-22 09:35:43,591 [myid:] - INFO [main:Environment@100] - Server environment:os.name=Windows 10
    2019-09-22 09:35:43,594 [myid:] - INFO [main:Environment@100] - Server environment:os.arch=amd64
    2019-09-22 09:35:43,599 [myid:] - INFO [main:Environment@100] - Server environment:os.version=10.0
    2019-09-22 09:35:43,604 [myid:] - INFO [main:Environment@100] - Server environment:user.name=dell
    2019-09-22 09:35:43,604 [myid:] - INFO [main:Environment@100] - Server environment:user.home=C:\Users\dell
    2019-09-22 09:35:43,608 [myid:] - INFO [main:Environment@100] - Server environment:user.dir=D:\Software\Dubbo\zookeeper-3.4.13\bin
    2019-09-22 09:35:43,642 [myid:] - INFO [main:ZooKeeperServer@836] - tickTime set to 2000
    2019-09-22 09:35:43,643 [myid:] - INFO [main:ZooKeeperServer@845] - minSessionTimeout set to -1
    2019-09-22 09:35:43,646 [myid:] - INFO [main:ZooKeeperServer@854] - maxSessionTimeout set to -1
    2019-09-22 09:35:44,195 [myid:] - INFO [main:ServerCnxnFactory@117] - Using org.apache.zookeeper.server.NIOServerCnxnFactory as server connection factory
    2019-09-22 09:35:44,204 [myid:] - INFO [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181

此时 zookeeper 正常启动起来了,端口为 2181,(binding to port 0.0.0.0/0.0.0.0:2181)

  • 第六步:
    测试
    在 bin 目录下有个 zkCli.cmd, 使用它连接 zookeeper 服务器,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    D:\Software\Dubbo\zookeeper-3.4.13\bin>zkCli.cmd
    Connecting to localhost:2181
    2019-09-22 09:42:23,193 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT
    2019-09-22 09:42:23,200 [myid:] - INFO [main:Environment@100] - Client environment:host.name=Gavino
    2019-09-22 09:42:23,201 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_131
    2019-09-22 09:42:23,207 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
    2019-09-22 09:42:23,208 [myid:] - INFO [main:Environment@100] - Client environment:java.home=C:\Program Files\Java\jdk1.8.0_131\jre
    2019-09-22 09:42:23,208 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=D:\Software\Dubbo\zookeeper-3.4.13\bin\..\build\classes;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\build\lib\*;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\zookeeper-3.4.13.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\audience-annotations-0.5.0.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\jline-0.9.94.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\log4j-1.2.17.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\netty-3.10.6.Final.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\slf4j-api-1.7.25.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\lib\slf4j-log4j12-1.7.25.jar;D:\Software\Dubbo\zookeeper-3.4.13\bin\..\conf
    2019-09-22 09:42:23,209 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=C:\Program Files\Java\jdk1.8.0_131\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;";C:\Program Files\Java\jdk1.8.0_131\bin";D:\Software\UML\Rational\rose\common;D:\Common Tools\tools package\sublime text\Sublime Text 3;C:\Windows\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;D:\Software\Maven\apache-maven-3.5.4\bin;D:\Software\Git\cmd;D:\Software\Compiler\tdm64-gcc-5.1.0\bin;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;D:\Software\Nodejs\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;D:\Software\py\Python\Python37\Scripts\;D:\Software\py\Python\Python37\;C:\Users\dell\AppData\Local\Microsoft\WindowsApps;C:\Users\dell\AppData\Roaming\npm;.
    2019-09-22 09:42:23,210 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=C:\Users\dell\AppData\Local\Temp\
    2019-09-22 09:42:23,217 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA>
    2019-09-22 09:42:23,219 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Windows 10
    2019-09-22 09:42:23,221 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
    2019-09-22 09:42:23,227 [myid:] - INFO [main:Environment@100] - Client environment:os.version=10.0
    2019-09-22 09:42:23,229 [myid:] - INFO [main:Environment@100] - Client environment:user.name=dell
    2019-09-22 09:42:23,237 [myid:] - INFO [main:Environment@100] - Client environment:user.home=C:\Users\dell
    2019-09-22 09:42:23,240 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=D:\Software\Dubbo\zookeeper-3.4.13\bin
    2019-09-22 09:42:23,246 [myid:] - INFO [main:ZooKeeper@442] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@579bb367
    Welcome to ZooKeeper!
    2019-09-22 09:42:23,791 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1029] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
    2019-09-22 09:42:23,797 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@879] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
    JLine support is enabled
    [zk: localhost:2181(CONNECTING) 0] 2019-09-22 09:42:24,237 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1303] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x100039b26a10000, negotiated timeout = 30000

    WATCHER::

    WatchedEvent state:SyncConnected type:None path:null
    • 测试: 获取根节点下的值 get /

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      WatchedEvent state:SyncConnected type:None path:null
      get /
      cZxid = 0x0
      ctime = Thu Jan 01 08:00:00 CST 1970
      mZxid = 0x0
      mtime = Thu Jan 01 08:00:00 CST 1970
      pZxid = 0x0
      cversion = -1
      dataVersion = 0
      aclVersion = 0
      ephemeralOwner = 0x0
      dataLength = 0
      numChildren = 1
      [zk: localhost:2181(CONNECTED) 1]
    • 测试: ls /

      1
      2
      3
      [zk: localhost:2181(CONNECTED) 2] ls /
      [zookeeper]
      [zk: localhost:2181(CONNECTED) 3]

      说明在根节点下有一个 zookeeper 节点

    • 测试: 在根节点下创建一个临时节点 gavino , 值为 0119 create -e /gavino 0119
      并且查看根目录节点 ls /
      获取临时节点 gavino get /gavino

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      [zk: localhost:2181(CONNECTED) 3] create -e /gavino 0119
      Created /gavino
      [zk: localhost:2181(CONNECTED) 4] ls /
      [zookeeper, gavino]
      [zk: localhost:2181(CONNECTED) 5] get /gavino
      0119
      cZxid = 0x2
      ctime = Sun Sep 22 09:55:55 CST 2019
      mZxid = 0x2
      mtime = Sun Sep 22 09:55:55 CST 2019
      pZxid = 0x2
      cversion = 0
      dataVersion = 0
      aclVersion = 0
      ephemeralOwner = 0x100039b26a10000
      dataLength = 4
      numChildren = 0
      [zk: localhost:2181(CONNECTED) 6]

常用命令:(windows 下 cmd)
输入 zkServer.cmd 点击回车启动 zookeeper
建立节点 create /zk value
获得节点 get /zk
设置节点 set /zk value2
建立子节点 set /zk/subzk value3
输出节点目录 ls /zk
删除节点 delete /zk
关闭客户端 quit
关闭zookeeper服务 Ctrl+C, 选择Y 关闭服务

监控中心的安装

监控中心可以不安装,不影响使用,监控中心会提供可视化的操作

第一步: 安装管理控制台

  1. 先进入到 dubbo 的github 的项目地址(https://github.com/apache/dubbo)

  2. 在该页面往下找到
    Dubbo ecosystem 下面的
    Dubbo Admin - The reference implementation for Dubbo admin
    点击进去下载该项目到本地
    下载代码: git clone https://github.com/apache/dubbo-admin.git

  3. 解压
    在 dubbo-admin-server/src/main/resources/application.properties中指定注册中心地址

    1
    2
    3
    admin.registry.address=zookeeper://127.0.0.1:2181
    admin.config-center=zookeeper://127.0.0.1:2181
    admin.metadata-report.address=zookeeper://127.0.0.1:2181
  4. 构建以及启动
    在dubbo-admin-develop目录下:

  • 构建

    • mvn clean package
  • 启动

    • mvn –projects dubbo-admin-server spring-boot:run
      或者
    • cd dubbo-admin-distribution/target; java -jar dubbo-admin-0.1.jar
  1. 访问
    http://localhost:8080

评论