Dubbo学习笔记3:Dubbo管理控制台与监控中心的搭建
Dubbo源码下载与编译
本文来讲下如何在Dubbo源码编译后,得到用于搭建管理控制台的war包和监控平台的jar包。
首先需要到Github上下载Dubbo的源码,解压后如下:

在dubbo-2.5.x目录执行 mvn clean package -Dmaven.test.skip=true 会生成如下结果:
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] dubbo-parent ...................................... SUCCESS [2.857s]
[INFO] Hessian Lite(Alibaba embed version) ............... SUCCESS [6.518s]
[INFO] dubbo-common ...................................... SUCCESS [7.706s]
[INFO] dubbo-container ................................... SUCCESS [0.057s]
[INFO] dubbo-container-api ............................... SUCCESS [3.398s]
[INFO] dubbo-container-spring ............................ SUCCESS [1.099s]
[INFO] dubbo-container-jetty ............................. SUCCESS [1.164s]
[INFO] dubbo-container-log4j ............................. SUCCESS [1.196s]
[INFO] dubbo-container-logback ........................... SUCCESS [1.138s]
[INFO] dubbo-remoting .................................... SUCCESS [0.045s]
[INFO] dubbo-remoting-api ................................ SUCCESS [3.615s]
[INFO] dubbo-remoting-netty .............................. SUCCESS [1.959s]
[INFO] dubbo-remoting-mina ............................... SUCCESS [1.602s]
[INFO] dubbo-remoting-grizzly ............................ SUCCESS [1.752s]
[INFO] dubbo-remoting-p2p ................................ SUCCESS [2.148s]
[INFO] dubbo-remoting-http ............................... SUCCESS [2.154s]
[INFO] dubbo-remoting-zookeeper .......................... SUCCESS [2.165s]
[INFO] dubbo-remoting-netty4 ............................. SUCCESS [2.721s]
[INFO] dubbo-rpc ......................................... SUCCESS [0.060s]
[INFO] dubbo-rpc-api ..................................... SUCCESS [3.397s]
[INFO] dubbo-rpc-default ................................. SUCCESS [3.278s]
[INFO] dubbo-rpc-injvm ................................... SUCCESS [1.706s]
[INFO] dubbo-rpc-rmi ..................................... SUCCESS [1.373s]
[INFO] dubbo-rpc-hessian ................................. SUCCESS [1.791s]
[INFO] dubbo-rpc-http .................................... SUCCESS [1.210s]
[INFO] dubbo-rpc-webservice .............................. SUCCESS [1.816s]
[INFO] dubbo-cluster ..................................... SUCCESS [2.690s]
[INFO] dubbo-registry .................................... SUCCESS [0.033s]
[INFO] dubbo-registry-api ................................ SUCCESS [2.548s]
[INFO] dubbo-monitor ..................................... SUCCESS [0.020s]
[INFO] dubbo-monitor-api ................................. SUCCESS [1.309s]
[INFO] dubbo-filter ...................................... SUCCESS [0.023s]
[INFO] dubbo-filter-validation ........................... SUCCESS [1.474s]
[INFO] dubbo-filter-cache ................................ SUCCESS [1.395s]
[INFO] dubbo-registry-default ............................ SUCCESS [1.402s]
[INFO] dubbo-monitor-default ............................. SUCCESS [1.258s]
[INFO] dubbo-registry-multicast .......................... SUCCESS [1.336s]
[INFO] dubbo-config ...................................... SUCCESS [0.018s]
[INFO] dubbo-config-api .................................. SUCCESS [3.498s]
[INFO] dubbo-config-spring ............................... SUCCESS [3.326s]
[INFO] dubbo-rpc-thrift .................................. SUCCESS [2.115s]
[INFO] dubbo-rpc-memcached ............................... SUCCESS [1.476s]
[INFO] dubbo-rpc-redis ................................... SUCCESS [1.367s]
[INFO] dubbo-registry-zookeeper .......................... SUCCESS [1.597s]
[INFO] dubbo-registry-redis .............................. SUCCESS [2.111s]
[INFO] dubbo-plugin ...................................... SUCCESS [0.027s]
[INFO] dubbo-qos ......................................... SUCCESS [2.574s]
[INFO] dubbo ............................................. SUCCESS [2.662s]
[INFO] dubbo-simple ...................................... SUCCESS [0.017s]
[INFO] dubbo-registry-simple ............................. SUCCESS [5.246s]
[INFO] dubbo-monitor-simple .............................. SUCCESS [11.301s]
[INFO] dubbo-admin ....................................... SUCCESS [11.472s]
[INFO] dubbo-demo ........................................ SUCCESS [0.034s]
[INFO] dubbo-demo-api .................................... SUCCESS [1.097s]
[INFO] dubbo-demo-provider ............................... SUCCESS [1.892s]
[INFO] dubbo-demo-consumer ............................... SUCCESS [1.473s]
[INFO] dubbo-test ........................................ SUCCESS [0.022s]
[INFO] dubbo-test-benchmark .............................. SUCCESS [5.324s]
[INFO] dubbo-test-compatibility .......................... SUCCESS [0.017s]
[INFO] dubbo-test-spring3 ................................ SUCCESS [1.719s]
[INFO] dubbo-test-integration ............................ SUCCESS [0.149s]
[INFO] dubbo-test-examples ............................... SUCCESS [3.413s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2:16.562s
[INFO] Finished at: Wed Mar 14 17:19:06 CST 2018
[INFO] Final Memory: 38M/654M
[INFO] ------------------------------------------------------------------------
进入/Users/xxx/Downloads/dubbo-2.5.x/dubbo-admin/target目录,会发现生成了dubbo-admin-2.5.10.war。
进入/Users/xxx/Downloads/dubbo-2.5.x/dubbo-simple/dubbo-monitor-simple/target目录,会发现生成了dubbo-monitor-simple-2.5.10-assembly.tar.gz。
管理控制台的搭建
开源的Dubbo的服务管理控制台是阿里巴巴内部裁剪版本,开源部分主要包含:路由规则/动态配置/服务降级/访问控制/权重调整/负载均衡等管理功能。
接着上面的操作,进入/Users/xxx/Downloads/dubbo-2.5.x/dubbo-admin/target目录,会发现生成了dubbo-admin-2.5.10.war。

然后解压拷贝dubbo-admin-2.5.10.war后拷贝到一个Servlet容器,本文使用Tomcat容器,可以在Tomcat 官网下载Tomcat的二进制包,然后拷贝dubbo-admin-2.5.10到apache-tomcat-7.0.10/webapps 目录下:

然后进入 dubbo-admin-2.5.10/WEB-INF目录修改dubbo.properties文件:
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
这里的dubbo.registry.address为Zookeeper的地址。
最后在 apache-tomcat-7.0.10/bin 下执行 sh catalina.sh run 启动Tomcat。
启动后访问 http://127.0.0.1:8080/dubbo-admin-2.5.10/ 会出现下面界面:

用户名和密码都输入root后,单机登陆,进入下面界面:

至此说明管理控制台搭建完毕了。
现在你就可以使用管理控制台管理和查看服务信息了。
比如你可以搜索一个服务:dubbo/com.test.UserServiceBo:1.0.0。

单机搜索后页面跳转到:

比如你可以查看服务提供者:

比如比可以查看服务消费者:

比如你可以查看当前都有哪些应用:

注:管理控制台不是使用Dubbo搭建分布式系统必须的,但是有了它我们可以对服务进行很好的治理和监控。
监控平台搭建
Dubbo-Monitor主要用来统计服务的调用次数和调用时间,服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心,监控中心则使用数据绘制图表来显示。
服务消费方和提供方需要显示开启Monitor。
如果使用Spring配置的服务消费方和提供方,则需要在对应xml添加下面配置:
<dubbo:monitor protocol="registry"/>
其中protocol为“registry”,表示服务提供方和消费方从服务注册中心发现监控中心(Monitor)地址。
如果使用的Dubbo API方式需要首先创建一个MonitorConfig对象。
MonitorConfig monitorConfig = new MonitorConfig();
monitorConfig.setProtocol("registry");
然后调用 reference.setMonitor(monitorConfig);设置到消费配置对象里面。
进入 /Users/zhuizhumengxiang/Downloads/dubbo-2.5.x/dubbo-simple/dubbo-monitor-simple/target 目录,会发现生成了 dubbo-monitor-simple-2.5.10-assembly.tar.gz:
'
解压 dubbo-monitor-simple-2.5.10-assembly.tar.gz,进入 dubbo-monitor-simple-2.5.10/conf/ 目录修改dubbo.properties:
dubbo.container=log4j,spring,registry,jetty
dubbo.application.name=simple-monitor
dubbo.application.owner=jiaduo
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.port=7070
dubbo.jetty.port=8081
dubbo.jetty.directory=/Users/zhuizhumengxiang/Downloads/dubbo-2.5.x/dubbo-simple/dubbo-monitor-simple/target/dubbo-monitor-simple-2.5.10/monitor
dubbo.charts.directory=/Users/zhuizhumengxiang/Downloads/dubbo-2.5.x/dubbo-simple/dubbo-monitor-simple/target/dubbo-moniotr-simple-2.5.10/charts
dubbo.statistics.directory=/Users/zhuizhumengxiang/Downloads/dubbo-2.5.x/dubbo-simple/dubbo-monitor-simple/target/dubbo-monitor-simple-2.5.10/monitor/statistics
dubbo.log4j.file=logs/dubbo-monitor-simple.log
dubbo.log4j.level=WARN
其中 dubbo.registry.address=zookeeper://127.0.0.1:2181 设置注册中心地址,这里设置为Zookeeper的地址。
dubbo.protocol.port=7070,是Monitor提供的远程服务监听端口,服务提供者和消费者会调用这个端口提供的服务,发送统计信息到Monitor。
dubbo.charts.directory和dubbo.statistics.directory为Monitor本地存放的监控数据文件的位置。
dubbo.jetty.port=8081,设置Jetty容器的监听地址,类似于Tomcat的8080端口,这里设置为8081。
然后进入dubbo-monitor-simple-2.5.10/bin,执行 sh start.sh 启动Monitor:

至此Monitor启动了,访问 http://127.0.0.1:8081/ 会出现下面界面:

然后我们就可以使用监控平台做一些事情了。
比如服务查看:

比如应用程序查看:

比如调用情况统计:


注:Dubbo-Monitor也不是使用Dubbo搭建分布式系统必须的组件,但是它用来统计服务的调用次数和调用时间的控制中心,这些数据有助于系统运维和调优。
Dubbo学习笔记3:Dubbo管理控制台与监控中心的搭建的更多相关文章
- Dubbo学习笔记(二) Dubbo的基本配置
Check启动检查 根据之前的学习,我们简单理解的Dubbo远程调用的基本流程,服务提供者注册到注册中心,然后服务消费者通过监听注册中心达到远程调用的目的,那么如果注册中心中没有消费者对应的接口会怎么 ...
- dubbo学习笔记(二)dubbo中的filter
转:https://www.cnblogs.com/cdfive2018/p/10219730.html dubbo框架提供了filter机制的扩展点(本文基于dubbo2.6.0版本). 扩展接口 ...
- (转)Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境
Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境(一)注意:工程必须添加两个宏:“配置属性”/“C或C++”/“预处理器”/“预处理器定义”,添加两个宏:_CRT_SECURE_ ...
- 阿里巴巴分布式服务框架dubbo学习笔记
Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的 ...
- Dubbo 学习笔记
分布式基础理论 1. 什么是分布式系统? 分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个系统 2. 应用架构演变 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起 ...
- Spring Cloud失散多年的哥哥Dubbo学习笔记
Spring Cloud失散多年的哥哥Dubbo 随着互联网项目用户量的急剧增长,访问并发良突然暴增,将一个应用使用多个独立的工程共同实现的系统架构,称为SOA系统架构,各个工程可以允许在不同的机器上 ...
- Dubbo学习笔记(一) 基础知识HelloWorld
Dubbo是由阿里巴巴研发出的一款基于Java实现的RPC框架,现由Apache进行维护管理,笔记中使用zookeeper作为注册中心,dubbo+zookeeper环境安装教程:https://ww ...
- Dubbo学习笔记6:Dubbo增强SPI与SPI中扩展点自动包装的实现原理
在Dubbo整体架构分析中介绍了Dubbo中除了Service和Config层为API外,其他各层均为SPI,为SPI意味着下面各层都是组件化可以被替换的,也就是扩展性比较强,这也是Dubbo比较好的 ...
- Dubbo学习笔记2:Dubbo服务提供端与消费端应用的搭建
Demo结构介绍 Demo使用Maven聚合功能,里面有三个模块,目录如下: 其中Consumer模块为服务消费者,里面TestConsumer和consumer.xml组成了基于Spring配置方式 ...
随机推荐
- 新的Calculator的规范作业
附加作业题目 第三次作业 mygithub:sonnypp 这是开学来第一次写随笔,这一次的作业是对上一次作业的修改,对于上一次作业,在学长老师的帮助下,我重新修改了下代码,将.h文件分成了一个Sca ...
- php 把数字转化为大写中文
PHP 数字转大写中文 PHP入门小菜鸟一枚.下午要求写一个把数字转成大写中文的脚本,百度了一波,几十个博客和网站都是用的那四个代码,第一个运行不了,第二个有问题,不合要求,第三个第四个太长,懒得看, ...
- 电梯调度系统(界面由C图形库编绘)
电梯调度系统编程 1.编程题目 电梯调度. 2.结对编程组员 黄冠译,刘畅. 3.编程语言 C语言图形库. 4.题目要求: 5.代码运行及结果调试: ① 运行界面为C++图形库支持,开始运行的初始界面 ...
- 10_Java面向对象_第10天(继承、抽象类)_讲义
今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在Jav ...
- 项目报错“JavaServer Faces 2.2 can not be installed : One or more constraints”等一系列问题
在做springmvc+maven项目时,经常遇到如下错误: 解决办法(这里以jdk1.8,web3.0为例): 一:保证build path的jre版本 remove掉旧版本的,add新版本 二:保 ...
- Prism6下的MEF:第一个Hello World
最近看书比较多,正好对过去几年的软件开发做个总结.写这个的初衷只是为了简单的做一些记录. 前言 复杂的应用程序总是面临很多的页面之间的数据交互,怎样创建松耦合的程序一直是多数工程师所思考的问题.诸如依 ...
- c语言文法定义
<程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...
- PAT 甲级 1155 Heap Paths
https://pintia.cn/problem-sets/994805342720868352/problems/1071785408849047552 In computer science, ...
- windows多线程(十一) 更安全的创建线程方式_beginthreadex()
一.原因分析 CreateThread()函数是Windows提供的API接口,在C/C++语言另有一个创建线程的函数_beginthreadex(),我们应该尽量使用_beginthreadex() ...
- ACM数论之旅16---母函数(又名生成函数)(痛并快乐着(╭ ̄3 ̄)╭)
(前排出售零食瓜子) 前言: 母函数是个很难的东西,难在数学 而ACM中所用的母函数只是母函数的基础 应该说除了不好理解外,其他都是非常简单的 母函数即生成函数,是组合数学中尤其是计数方面的一个重要理 ...