首页技术文章正文

基于ZK的 Dubbo-admin 与 Dubbo-monitor 搭建【黑马java培训】

更新时间:2019年07月26日 10时48分07秒 来源:黑马程序员论坛

背景
最近项目中使用了 dubbo 在实现服务注册和发现,需要实现对服务提供者和调用者的监控,之前有研究过基于 redis作为注册中心的监控平台,不过本文基于 zk 作为注册中心,进行 dubbo-admin 和 dubbo-monitor 搭建。另外项目基于 dubbo 2.6.4版本,所以该监控版本调整为 dubbo2.6.4。
步骤
  • GitHub
  • 官方组件目前在重构,采用前后分离技术,尚未完成。本文采用的还是 master 分支的老版本 dubbo-admin
  • git clone https://github.com/apache/incubator-dubbo-ops
  • 将项目根目录下的 pom.xml文件中的 dubbo 版本调整为2.6.4 <dubbo_all_version>2.6.4</dubbo_all_version>
  • 将 dubbo-admin 项目下的 pom.xml文件中的 dubbo版本进行调整,并且增加 netty 依赖

  • <dependency>
  • <groupId>com.alibaba</groupId>
  • <artifactId>dubbo</artifactId>
  • <version>2.6.4</version>
  • </dependency>
  • <dependency>
  • <groupId>io.netty</groupId>
  • <artifactId>netty-all</artifactId>
  • <version>4.1.30.Final</version>
  • </dependency>

  • 修改dubbo-admin 项目中 resources 目录下的 applicatio.properties文件

  • server.port=7001
  • spring.velocity.cache=false
  • spring.velocity.charset=UTF-8
  • spring.velocity.layout-url=/templates/default.vm
  • spring.messages.fallback-to-system-locale=false
  • spring.messages.basename=i18n/message
  • # root 用户登录账户和密码
  • spring.root.password=root
  • # guest 用户登录账户和密码
  • spring.guest.password=guest
  • # zk 注册中心地址,可以配置单个或者多个
  • dubbo.registry.address=zookeeper://ip1:2181?backup=ip2:2181,ip3:2181
  • # 配置 zk 中根目录文件夹,不配默认为 dubbo,并非生产者和消费的的分组
  • dubbo.registry.group=ad-dubbo

  • 修改dubbo-admin 项目中 resources 目录下的 dubbo-admin.xml文件,如果没有配置 group 可以不用加 group 配置

  • <dubbo:registry address="${dubbo.registry.address}" group="${dubbo.registry.group}" check="false" file="false"/>

  • 此条如果配置了 provider 和 consumer 的分组时采用,如果没有则跳过。在 dubbo-admin 项目中创建 com.alibaba.dubbo.common包,并新建 URL.java类,复制 dubbo2.6.4中的 URL.java,按照图片修改


说明:如果不这样修改,在管理后台会有问题,官方 issue
  • 在根目录下执行 mvn clean package
  • 启动 dubbo-admin,执行 java -jar dubbo-admin/target/dubbo-admin-0.0.1-SNAPSHOT.jar
  • 打开http://127.0.0.1:7071即可看到界面,登录账户和密码为 applicatio.properties中配置的默认root/root,guest/guest

dubbo-monitor搭建
1、修改 dubbo-monitor-simple 项目 resources/conf 目录下的 dubbo.properties
  • dubbo.container=log4j,spring,registry,jetty-monitor
  • dubbo.application.name=dubbo-admin-monitor
  • dubbo.application.owner=dubbo
  • # zk 注册中心地址同 admin
  • dubbo.registry.address=zookeeper://1p1:2181?backup=ip2:2181,ip3:2181
  • dubbo.protocol.port=7070
  • dubbo.jetty.port=7002
  • dubbo.monitor.queue=1000
  • # 统计数据和图表的生产路径,需要手动提前创建
  • dubbo.jetty.directory=/opt/monitor
  • # charts 目录,必须放到 dubbo.jetty.directory目录下
  • dubbo.charts.directory=${dubbo.jetty.directory}/charts
  • # statistics 目录,必须放到 dubbo.jetty.directory目录下
  • dubbo.statistics.directory=${dubbo.jetty.directory}/statistics
  • dubbo.log4j.file=logs/dubbo-monitor-simple.log
  • dubbo.log4j.level=WARN
  • # zk 注册中心的根目录,不配置默认为 dubbo
  • dubbo.registry.group=ad-dubbo

2、在根目录下执行 mvn clean package,在 dubbo-monitor-simple/target目录下的 dubbo-monitor-simple-2.0.0-assembly.tar.gz拷贝到其他目录,或者本目录,解压并启动
  • tar xzvf dubbo-monitor-simple-2.0.0-assembly.tar.gz
  • cd dubbo-monitor-simple-2.0.0
  • ./assembly.bin/server.sh start

3、打开http://127.0.0.1:7002
配置生产者和消费者,进行调用就会显示类似下面的图,这里的图修改图片生成的时间为1分钟
4、注意事项
  • dubbo.monitor.queue:监测队列大小,默认为100000
  • chart 图片默认五分钟根据统计目录的数据生成一张 png 图片,在SimpleMonitorService.java 中110行,可以修改自己需要的时间间隔,
  • dubbo.jetty.directory=/opt/monitor这个路径必须自己手动提前创建,否则无法自动创建统计和图片目录,导致没有图片显示
  • 如果没有出现图片,在生产者和消费者的配置中添加监控地址 dubbo.monitor.address= 172.20.155.60:7070

  • # 配置文件
  • dubbo.registry.group = ad-dubbo
  • dubbo.monitor.address= 172.20.155.60:7070

  • # 基于 SpringBoot 增加配置
  • @Bean
  • public MonitorConfig monitorConfig() {
  • MonitorConfig config = new MonitorConfig();
  • config.setAddress(monitorAddress);
  • config.setProtocol("registry");
  • return config;
  • }


推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 产品经理培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程【点击播放】

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!