Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: apache/dubbo-admin
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: develop
Choose a base ref
...
head repository: comsince/dubbo-admin
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: develop
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 1 commit
  • 46 files changed
  • 1 contributor

Commits on May 27, 2019

  1. 增加集群集中统计的功能

    comsince committed May 27, 2019
    Copy the full SHA
    24644f1 View commit details
Showing with 686 additions and 143 deletions.
  1. +9 −9 README.md
  2. +8 −8 README_ZH.md
  3. +125 −0 dubbo-admin-server/dubbo-admin/dubbo-admin
  4. +30 −0 dubbo-admin-server/dubbo-admin/jvm.ini
  5. +13 −0 dubbo-admin-server/pom.xml
  6. +0 −16 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/Constants.java
  7. +1 −0 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/ConvertUtil.java
  8. +0 −15 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/OverrideUtils.java
  9. +1 −0 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/SyncUtils.java
  10. +1 −1 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
  11. +108 −24 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/MetricsCollectController.java
  12. +22 −0 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/MonitorController.java
  13. +1 −1 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ServiceTestController.java
  14. +6 −3 ...server/src/main/java/org/apache/dubbo/admin/model/adapter/BalancingDTO2OverrideConfigAdapter.java
  15. +4 −0 ...erver/src/main/java/org/apache/dubbo/admin/model/adapter/DynamicConfigDTO2OverrideDTOAdapter.java
  16. +4 −0 ...-admin-server/src/main/java/org/apache/dubbo/admin/model/adapter/LoadBalance2OverrideAdapter.java
  17. +3 −0 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/adapter/WeightToOverrideAdapter.java
  18. +1 −1 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/domain/Consumer.java
  19. +1 −1 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/domain/Override.java
  20. +1 −1 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/domain/Provider.java
  21. +1 −1 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/domain/Route.java
  22. +4 −0 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/dto/MetricDTO.java
  23. +3 −2 ...erver/src/main/java/org/apache/dubbo/admin/registry/metadata/impl/ZookeeperMetaDataCollector.java
  24. +22 −0 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/ConsumerService.java
  25. +1 −1 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/RegistryServerSync.java
  26. +164 −4 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/ConsumerServiceImpl.java
  27. +3 −3 dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/OverrideServiceImpl.java
  28. +10 −10 dubbo-admin-server/src/main/resources/application.properties
  29. +56 −0 dubbo-admin-server/src/main/resources/logback.xml
  30. +9 −0 dubbo-admin-server/src/test/java/org/apache/dubbo/admin/common/util/YamlParserTest.java
  31. +2 −1 dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/AccessesControllerTest.java
  32. +1 −0 dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/LoadBalanceControllerTest.java
  33. +1 −0 dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ManagementControllerTest.java
  34. +7 −7 dubbo-admin-server/src/test/java/org/apache/dubbo/admin/service/RegistryServerSyncTest.java
  35. +30 −0 dubbo-admin-server/src/test/resources/LoadBalance1.yml
  36. +1 −1 dubbo-admin-ui/config/index.js
  37. +2 −5 dubbo-admin-ui/src/components/ServiceSearch.vue
  38. +1 −4 dubbo-admin-ui/src/components/governance/AccessControl.vue
  39. +6 −6 dubbo-admin-ui/src/components/governance/LoadBalance.vue
  40. +1 −1 dubbo-admin-ui/src/components/governance/Overrides.vue
  41. +1 −1 dubbo-admin-ui/src/components/governance/RoutingRule.vue
  42. +1 −1 dubbo-admin-ui/src/components/governance/TagRule.vue
  43. +1 −1 dubbo-admin-ui/src/components/governance/WeightAdjust.vue
  44. +0 −6 dubbo-admin-ui/src/lang/en.js
  45. +0 −6 dubbo-admin-ui/src/lang/zh.js
  46. +19 −2 pom.xml
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# Dubbo Admin

[![Build Status](https://travis-ci.org/apache/dubbo-admin.svg?branch=develop)](https://travis-ci.org/apache/dubbo-admin)
[![codecov](https://codecov.io/gh/apache/dubbo-admin/branch/develop/graph/badge.svg)](https://codecov.io/gh/apache/dubbo-admin)
![license](https://img.shields.io/github/license/apache/dubbo-admin.svg)
[![Build Status](https://travis-ci.org/apache/incubator-dubbo-admin.svg?branch=develop)](https://travis-ci.org/apache/incubator-dubbo-admin)
[![codecov](https://codecov.io/gh/apache/incubator-dubbo-admin/branch/develop/graph/badge.svg)](https://codecov.io/gh/apache/incubator-dubbo-admin)
![license](https://img.shields.io/github/license/apache/incubator-dubbo-admin.svg)

[中文说明](README_ZH.md)
### Demo Address
* http://47.91.207.147/#/service
* this demo is the latest version of `develop` branch, you can try it before building from source code
### Screenshot

![index](https://raw.githubusercontent.com/apache/dubbo-admin/develop/doc/images/index.png)
![index](https://raw.githubusercontent.com/apache/incubator-dubbo-admin/develop/doc/images/index.png)

### Service Governance
service governance follows the version of Dubbo 2.7, and compatible for Dubbo 2.6, please refer to [here](https://github.com/apache/dubbo-admin/wiki/The-compatibility-of-service-governance)
service governance follows the version of Dubbo 2.7, and compatible for Dubbo 2.6, please refer to [here](https://github.com/apache/incubator-dubbo-admin/wiki/The-compatibility-of-service-governance)
### admin UI

- [Vue.js](https://vuejs.org) and [Vuetify](https://vuetifyjs.com)
@@ -23,13 +23,13 @@ service governance follows the version of Dubbo 2.7, and compatible for Dubbo 2.
### admin Server

* Standard spring boot project
* [configurations in application.properties](https://github.com/apache/dubbo-admin/wiki/Dubbo-Admin-configuration)
* [configurations in application.properties](https://github.com/apache/incubator-dubbo-admin/wiki/Dubbo-Admin-configuration)


### Production Setup

1. Clone source code on develop branch `git clone https://github.com/apache/dubbo-admin.git`
2. Specify registry address in `dubbo-admin-server/src/main/resources/application.properties`
1. Clone source code on develop branch `git clone https://github.com/apache/incubator-dubbo-admin.git`
2. Specify registry address in `dubbo-admin-server/src/main/resources/application-production.properties`
3. Build

> - `mvn clean package`
@@ -58,4 +58,4 @@ Once deployed, you can check http://localhost:8080/swagger-ui.html to check all
### License

Apache Dubbo admin is under the Apache 2.0 license, Version 2.0.
See [LICENSE](https://github.com/apache/dubbo-admin/blob/develop/LICENSE) for full license text.
See [LICENSE](https://github.com/apache/incubator-dubbo-admin/blob/develop/LICENSE) for full license text.
16 changes: 8 additions & 8 deletions README_ZH.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# Dubbo控制台

[![Build Status](https://travis-ci.org/apache/dubbo-admin.svg?branch=develop)](https://travis-ci.org/apache/dubbo-admin)
[![codecov](https://codecov.io/gh/apache/dubbo-admin/branch/develop/graph/badge.svg)](https://codecov.io/gh/apache/dubbo-admin)
![license](https://img.shields.io/github/license/apache/dubbo-admin.svg)
[![Build Status](https://travis-ci.org/apache/incubator-dubbo-admin.svg?branch=develop)](https://travis-ci.org/apache/incubator-dubbo-admin)
[![codecov](https://codecov.io/gh/apache/incubator-dubbo-admin/branch/develop/graph/badge.svg)](https://codecov.io/gh/apache/incubator-dubbo-admin)
![license](https://img.shields.io/github/license/apache/incubator-dubbo-admin.svg)

[English version](README.md).
### Demo地址
* http://47.91.207.147/#/service
* 该地址是`develop`分支的最新版本,在从源码构建之前,可以先尝试demo
### 页面截图

![index](https://raw.githubusercontent.com/apache/dubbo-admin/develop/doc/images/index.png)
![index](https://raw.githubusercontent.com/apache/incubator-dubbo-admin/develop/doc/images/index.png)

### 服务治理
服务治理的部分,按照Dubbo 2.7的格式进行配置,同时兼容Dubbo 2.6,详见[这里](https://github.com/apache/dubbo-admin/wiki/%E6%9C%8D%E5%8A%A1%E6%B2%BB%E7%90%86%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%B4%E6%98%8E)
服务治理的部分,按照Dubbo 2.7的格式进行配置,同时兼容Dubbo 2.6,详见[这里](https://github.com/apache/incubator-dubbo-admin/wiki/%E6%9C%8D%E5%8A%A1%E6%B2%BB%E7%90%86%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%B4%E6%98%8E)
### 前端部分

- 使用[Vue.js](https://vuejs.org)作为javascript框架,[Vuetify](https://vuetifyjs.com)作为UI框架
@@ -23,13 +23,13 @@
### 后端部分

* 标准spring boot工程
* [application.properties配置说明](https://github.com/apache/dubbo-admin/wiki/Dubbo-Admin%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E)
* [application.properties配置说明](https://github.com/apache/incubator-dubbo-admin/wiki/Dubbo-Admin%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E)


### 生产环境配置

1. 下载代码: `git clone https://github.com/apache/dubbo-admin.git`
2.`dubbo-admin-server/src/main/resources/application.properties`中指定注册中心地址
1. 下载代码: `git clone https://github.com/apache/incubator-dubbo-admin.git`
2.`dubbo-admin-server/src/main/resources/application-production.properties`中指定注册中心地址
3. 构建

> - `mvn clean package`
125 changes: 125 additions & 0 deletions dubbo-admin-server/dubbo-admin/dubbo-admin
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
#!/bin/sh
# 这里可以修改JAVA_HOME的路径
JAVA_HOME=/opt/jdk1.8.0_131

APP_NAME=$(basename "$0")
APP_DIR=/opt/boot/${APP_NAME}
APP_VERSION_FILE=${APP_DIR}/version
APP_LIB=${APP_DIR}/lib
JVM_INI=${APP_DIR}/jvm.ini
JVM_INI_LOCAL=${APP_DIR}/../jvm.ini

if [ -f "${APP_VERSION_FILE}" ]; then
APP_VERSION=$(cat ${APP_VERSION_FILE})
fi

if [ -f "${JVM_INI_LOCAL}" ] && [ -f "${JVM_INI}" ]; then
JVM_OPTIONS="$(sort -t= -k1,1 -s -u ${JVM_INI_LOCAL} ${JVM_INI} | grep -v "^#" | xargs)"
elif [ -f "${JVM_INI}" ]; then
JVM_OPTIONS="$(cat ${JVM_INI} | grep -v "^#" | xargs)"
elif [ -f "${JVM_INI}" ]; then
JVM_OPTIONS="$(cat ${JVM_INI_LOCAL} | grep -v "^#" | xargs)"
else
JVM_OPTIONS=""
fi

#服务器端口
SERVER_PORT=$(echo ${JVM_OPTIONS} | sed 's/.*server\.port=\([[:digit:]]*\).*$/\1/')
if [ -z "$SERVER_PORT" ]; then
SERVER_PORT=8081
fi

echo "server port ${SERVER_PORT}"


do_start()
{
cd ${APP_DIR}
JAR_NAME=$(ls ${APP_LIB} | grep jar)

if [ -z "${JAVA_HOME}" ]; then
JAVA_HOME=/data/java
fi

mkdir -p /opt/boot/$APP_NAME/logs

COMMAND="$JAVA_HOME/bin/java $JVM_OPTIONS -jar $APP_LIB/$JAR_NAME"
(${COMMAND} 2>&1 1> "/opt/boot/$APP_NAME/logs/$APP_NAME.log" &) > /dev/null

sleep 1 #避免进程启动太慢,导致无法进入后续循环

for i in $(ps -ef | grep -w 'java' | grep "$APP_DIR" | grep -w '\-jar' | egrep -v 'grep' | awk '{print $2}') ; do
echo "Starting Instance $i"
RETRY_TIME=0
while [[ ${RETRY_TIME} -lt 24 && -z "$(/usr/bin/curl -s -m 1 "http://127.0.0.1:$SERVER_PORT/monitor/alive" | grep '"code":200')" ]]; do
RETRY_TIME=$(expr ${RETRY_TIME} + 1)
echo "Retry after 5 seconds ... "
sleep 5
done
if [ ${RETRY_TIME} -lt 24 ]; then
echo "Start Success"
exit 0
else
echo "Start Timeout"
exit 1
fi
done

echo "Start Failure"
exit 1
}

do_stop()
{
for i in $(ps -ef | grep -w 'java' | grep "$APP_DIR" | grep -w '\-jar' | egrep -v 'grep' | awk '{print $2}') ; do
if [ ${i} != $$ ]; then
kill ${i}
while [[ -n $(ps -ef | grep -w 'java' | grep "$APP_DIR" | grep -w '\-jar' | egrep -v 'grep' | awk '{print $2}' | grep ${i}) ]] ; do
echo "wait for ${i} exit"
sleep 1;
done
echo "Stop Running Instance ${i}"
fi
done
}

do_status() {
[ -n "${APP_VERSION}" ] && echo "${APP_NAME}-${APP_VERSION}"
if [ -z "$(/usr/bin/curl -s -m 1 "http://127.0.0.1:$SERVER_PORT/monitor/alive" | grep '"code":200')" ] ; then
echo "$APP_NAME is not running."
else
PID=$(ps -ef | grep -w 'java' | grep "$APP_DIR" | grep -w '\-jar' | egrep -v 'grep' | awk '{print $2}')
echo "$APP_NAME is running, pid=$PID."
fi
}

case "$1" in
start)
do_start
exit $?
;;
stop)
do_stop
exit $?
;;
restart)
do_stop
if [ $? -eq 0 ]; then
do_status
do_start
exit $?
else
exit 1
fi
;;
status)
do_status
;;
*)
echo "Usage: $APP_NAME <{start|stop|restart|status}>" >&2
exit 3
;;
esac

#到达这里一定是因为前面的代码出错
exit 1
30 changes: 30 additions & 0 deletions dubbo-admin-server/dubbo-admin/jvm.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#dubug off
#-Xrunjdwp:transport=dt_socket,address=61099,server=y,suspend=n
-Xmx2000m
-Xms2000m
-Xmn800m
-XX:SurvivorRatio=8
-XX:PermSize=256m
-server
-verbose:gc
-XX:ErrorFile=crash.log
-Xloggc:gc.log
-XX:-UseGCLogFileRotation
-XX:GCLogFileSize=1024K
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-XX:+PrintTenuringDistribution
-XX:+PrintCommandLineFlags
-XX:+DisableExplicitGC
-XX:+UseConcMarkSweepGC
-XX:ParallelCMSThreads=2
-XX:+CMSClassUnloadingEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:CMSInitiatingOccupancyFraction=80
-Djava.io.tmpdir=/dev/shm
-Dfile.encoding=UTF-8
-Dsun.jnu.encoding=UTF-8
-Dsun.net.http.allowRestrictedHeaders=true
# 服务器端口配置,配置在这里可以帮助启动脚本识别服务器启动的端口.必选,否则自启动脚本无法检查服务运作状态
-Dserver.port=8082
13 changes: 13 additions & 0 deletions dubbo-admin-server/pom.xml
Original file line number Diff line number Diff line change
@@ -77,6 +77,19 @@
<artifactId>dubbo</artifactId>
</dependency>

<dependency>
<groupId>com.alibaba.middleware</groupId>
<artifactId>metrics-core-api</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.middleware</groupId>
<artifactId>metrics-core-impl</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.middleware</groupId>
<artifactId>metrics-common</artifactId>
</dependency>

<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
Original file line number Diff line number Diff line change
@@ -49,22 +49,6 @@ public class Constants {
public static final String PLUS_SIGNS = "+";
public static final String IP = "ip";
public static final String INTERFACE_KEY = "interface";
public static final String DYNAMIC_KEY = "dynamic";
public static final String CONSUMER_PROTOCOL = "consumer";
public static final String PROVIDER_PROTOCOL = "provider";
public static final String ROUTE_PROTOCOL = "route";
public static final String APPLICATION_KEY = "application";
public static final String ENABLED_KEY = "enabled";
public static final String RULE_KEY = "rule";
public static final String ANYHOST_VALUE = "0.0.0.0";
public static final String OVERRIDE_PROTOCOL = "override";
public static final String CONFIGURATORS_CATEGORY = "configurators";
public static final String EMPTY_PROTOCOL = "empty";
public static final String WEIGHT_KEY = "weight";
public static final int DEFAULT_WEIGHT = 100;
public static final String ADMIN_PROTOCOL = "admin";
public static final String CLASSIFIER_KEY = "classifier";
public static final String CHECK_KEY = "check";
public static final String VERSION_KEY = "version";
public static final String PROVIDERS_CATEGORY = "providers";
public static final String CONSUMERS_CATEGORY = "consumers";
Original file line number Diff line number Diff line change
@@ -17,6 +17,7 @@
package org.apache.dubbo.admin.common.util;

import org.apache.dubbo.admin.model.dto.BaseDTO;
import org.apache.dubbo.common.Constants;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.metadata.definition.model.MethodDefinition;

Original file line number Diff line number Diff line change
@@ -44,21 +44,6 @@ public static OverrideConfig weightDTOtoConfig(WeightDTO weightDTO) {
return overrideConfig;
}

public static OverrideConfig balancingDTOtoConfig(BalancingDTO balancingDTO) {
OverrideConfig overrideConfig = new OverrideConfig();
overrideConfig.setType(Constants.BALANCING);
overrideConfig.setEnabled(true);
overrideConfig.setSide(Constants.CONSUMER_SIDE);
Map<String, Object> parameters = new HashMap<>();
if (balancingDTO.getMethodName().equals("*")) {
parameters.put("loadbalance", balancingDTO.getStrategy());
} else {
parameters.put(balancingDTO.getMethodName() + ".loadbalance", balancingDTO.getStrategy());
}
overrideConfig.setParameters(parameters);
return overrideConfig;
}

public static DynamicConfigDTO createFromOverride(OverrideDTO overrideDTO) {
DynamicConfigDTO dynamicConfigDTO = new DynamicConfigDTO();
dynamicConfigDTO.setConfigVersion(overrideDTO.getConfigVersion());
Original file line number Diff line number Diff line change
@@ -18,6 +18,7 @@

import org.apache.dubbo.admin.model.domain.Consumer;
import org.apache.dubbo.admin.model.domain.Provider;
import org.apache.dubbo.common.Constants;
import org.apache.dubbo.common.URL;

import java.util.ArrayList;
Original file line number Diff line number Diff line change
@@ -151,7 +151,7 @@ MetaDataCollector getMetadataCollector() {
private URL formUrl(String config, String group, String username, String password) {
URL url = URL.valueOf(config);
if (StringUtils.isNotEmpty(group)) {
url = url.addParameter(Constants.GROUP_KEY, group);
url = url.addParameter(org.apache.dubbo.common.Constants.GROUP_KEY, group);
}
if (StringUtils.isNotEmpty(username)) {
url = url.setUsername(username);
Loading