dubbo实战之四:管理控制台dubbo-admin

osc_cxi2ewsx 2020-11-11 13:27:28
docker Dubbo zookeeper github


欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

《dubbo实战》系列导航

  1. 准备和初体验
  2. 与SpringBoot集成
  3. 使用Zookeeper注册中心
  4. 管理控制台dubbo-admin

本篇概览

  • 本文是《dubbo实战》系列的第四篇,内容是部署和启动dubbo管理控制台服务,该服务在开发、测试、生产等环节都非常重要,接下来一起通过实战学习和了解它,官方GitHub地址:https://github.com/apache/dubbo-admin
  • 整篇文章由以下内容构成:
  1. 准备工作(注册中心、服务提供者、服务消费者);
  2. 准备工作(配置信息);
  3. 体验docker版;
  4. 下载源码自行构建;

准备工作(注册中心、服务提供者、服务消费者)

  1. 所谓准备工作,就是准备一个相对完整的dubbo环境,里面有注册中心、服务提供者、服务消费者;
  2. 在上一篇《dubbo实战之三:使用Zookeeper注册中心》,咱们已经创建和验证了服务提供者和消费者,并且以zookeeper作为注册中心,现在请把这些服务全部启动起来,我这边的服务情况如下所示:
服务 IP 端口 项目名称 作用
zookeeper 192.168.50.43 2181 注册中心、配置中心 作用
springboot-zk-provider 192.168.50.12 8080 springbootzkprovider 服务提供者
springboot-zk-consumer 192.168.50.12 8081 springbootzkconsumer 服务消费者
  1. 确保zookeeper、服务提供者、服务消费者全部启动且功能正常;

准备工作(配置信息)

  1. 接下来要准备配置信息,首选要强调的是dubbo-admin有三个重要的配置项:admin.config-center(配置中心),admin.registry.address(注册中心)、admin.metadata-report.address(元数据中心);
  2. 如果在配置文件中只有admin.registry.address(旧版本的做法),此时dubbo-admin会将admin.registry.address的值作为注册中心和配置中心使用,元数据中心将无法使用,因此官方不推荐这样的配置;
  3. 官方推荐的做法:在配置文件中只有admin.config-center,此配置的值是zookeeper地址,在zookeeper服务中有个节点,路径是/dubbo/config/dubbo/dubbo.properties,内容是admin.registry.address和admin.metadata-report.address的配置,如下所示:
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.metadata-report.address=zookeeper://127.0.0.1:2181
  1. 简单地说,就是只有配置中心的地址放在本地配置文件中,等到dubbo-admin连接到配置中心后,从配置中心取得其他配置信息,画了个简图辅助理解,如下:
    在这里插入图片描述
  2. 基于上述分析,咱们要先在zookeeper中创建好节点/dubbo/config/dubbo/dubbo.properties,以便dubbo-admin使用,请登录zookeeper所在服务器,进入zookeeper的bin目录;
  3. 由于前面的文章已经使用过zookeeper作为注册中心,因此"/dubbo/config/"目录已经存在,下面的命令会创建/dubbo/config/dubbo节点:
./zkCli.sh create /dubbo/config/dubbo ""
  1. 再创建/dubbo/config/dubbo/dubbo.properties节点:
./zkCli.sh create /dubbo/config/dubbo/dubbo.properties "dubbo.registry.address=zookeeper://192.168.50.43:2181
dubbo.metadata-report.address=zookeeper://192.168.50.43:2181"
  1. 最后,查看是否创建成功,输入和响应如下所示,可见节点创建成功,值也是预期的:
root@zookeeper:/opt/zookeeper-3.4.13/bin# ./zkCli.sh get /dubbo/config/dubbo/dubbo.properties
Connecting to localhost:2181
2020-10-25 03:47:50,512 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT
environment:user.home=/root
2020-10-25 03:47:50,526 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/opt/zookeeper-3.4.13/bin
2020-10-25 03:47:50,529 [myid:] - INFO [main:ZooKeeper@442] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@674e5e21
2020-10-25 03:47:50,584 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1029] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
dubbo.registry.address=zookeeper://192.168.50.43:2181
dubbo.metadata-report.address=zookeeper://192.168.50.43:2181
cZxid = 0x6b5
ctime = Sun Oct 25 03:47:30 UTC 2020
mZxid = 0x6b5
mtime = Sun Oct 25 03:47:30 UTC 2020
pZxid = 0x6b5
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 114
numChildren = 0
  1. 至此,准备工作全部完成,可以部署和尝试dubbo-admin了,先从官方推荐的快速体验方式开始,即docker版;

体验docker版

  1. 请确保docker已部署并正常运行;
  2. 官方Github建议通过docker镜像快速体验管理控制台,如下图,咱们就按照官方的建议先用docker镜像试试:
    在这里插入图片描述
  3. 下载镜像(此步骤可以不执行,我这是想看看下载镜像要多久):
docker pull apache/dubbo-admin
  1. 执行以下命令启动docker容器:
docker run \
-p 8083:8080 \
-e admin.config-center=zookeeper://192.168.50.43:2181 \
--rm \
apache/dubbo-admin
  1. 用上述命令启动的容器是一次性的,如果用Ctrl+C中断控制台,容器就会自动销毁,另外容器的8080端口被映射到了宿主机的8083端口;

  2. 用浏览器访问宿主机的8083端口,如下图所示,dubbo-admin已经启动了:
    在这里插入图片描述

  3. 点击下图红框1中的服务查询菜单,即可看到整个分布式环境中所有已经暴露的服务(即红框2),此时点击右侧的DETAIL按钮,就能看到此服务的详情:
    在这里插入图片描述

  4. 服务详情如下图,基础信息、提供者、消费者都有,但遗憾的是元数据无法正常展示:
    在这里插入图片描述

  5. 以上就是官方提供的体验版,算是让咱们对管理控制台有了基本了解,但这仅是用于体验的镜像,实际生产环境中,首先未必会用docker,并且可能需要有对应的源码以便学习和分析问题,甚至有可能用源码做进一步定制,因此这个docker版本就不适合了,接下来一起下载dubbo-admin源码自行编译构建;

  6. 在启动docker容器的控制台执行Ctrl+C,刚才创建的容器就会自动销毁;

下载源码自行构建

  1. 下载官方源码:
git clone https://github.com/apache/dubbo-admin.git
  1. 修改配置文件dubbo-admin/dubbo-admin-server/src/main/resources/application.properties ,如下所示,只配置admin.registry.address的值,将admin.registry.address和admin.metadata-report.address注释掉,如果要修改端口,也在此添加server.port的配置,我这里配置的是8083端口:
server.port=8083
# centers in dubbo2.7
#admin.registry.address=zookeeper://127.0.0.1:2181
admin.config-center=zookeeper://192.168.50.43:2181
#admin.metadata-report.address=zookeeper://127.0.0.1:2181
admin.root.user.name=root
admin.root.user.password=root
#group
admin.registry.group=dubbo
admin.config-center.group=dubbo
admin.metadata-report.group=dubbo
admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
admin.apollo.appId=test
admin.apollo.env=dev
admin.apollo.cluster=default
admin.apollo.namespace=dubbo
#compress
server.compression.enabled=true
server.compression.mime-types=text/css,text/javascript,application/javascript
server.compression.min-response-size=10240
  1. 在dubbo-admin目录执行以下命令,开始编译:
mvn clean compile -U
  1. 不出意外的话会编译成功,如下:
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ dubbo-admin-test ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 6 source files to /Users/zhaoqin/temp/202010/24/dubbo-admin/dubbo-admin-test/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for dubbo-admin 0.2.0-SNAPSHOT:
[INFO]
[INFO] dubbo-admin ........................................ SUCCESS [ 1.997 s]
[INFO] dubbo-admin-ui ..................................... SUCCESS [ 44.322 s]
[INFO] dubbo-admin-server ................................. SUCCESS [ 4.731 s]
[INFO] dubbo-admin-distribution ........................... SUCCESS [ 0.850 s]
[INFO] dubbo-admin-test ................................... SUCCESS [ 0.815 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 53.105 s
[INFO] Finished at: 2020-10-25T16:24:27+08:00
[INFO] ------------------------------------------------------------------------
[WARNING] The requested profile "nexus" could not be activated because it does not exist.
  1. 启动服务:
mvn --projects dubbo-admin-server spring-boot:run
  1. 启动成功后,在浏览器访问登录页面:http://localhost:8083/#/login ,(一定要先登录),如下图,账号密码都是root,这是application.properties文件中配置的:
    在这里插入图片描述
  2. 登录后可见主页,如下图,和之前的docker体验版还是有些不同的:
    在这里插入图片描述
  3. 点击上图的测试按钮,可以在页面上测试该服务的方法:
    在这里插入图片描述
  4. 再次进入服务详情页,可见元数据也能正常显示了:
    在这里插入图片描述

小结

至此,管理控制台dubbo-admin的编译、部署、基本操作都实战完成了,网页上更多功能您可以自行尝试,(建议部署更多的服务和实例),回顾整个过程其实都很简单,唯一要注意的就是服务的配置那里,本地只有配置中心的地址,其他信息都放在配置中心;

欢迎关注公众号:程序员欣宸

微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界…

版权声明
本文为[osc_cxi2ewsx]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4303238/blog/4712616

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云