You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by ky...@apache.org on 2021/08/27 03:34:04 UTC
[dubbo] branch 3.0-multi-instances updated: Extract
FrameworkStatusReportService from FrameworkStatusReporter
This is an automated email from the ASF dual-hosted git repository.
kylixs pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0-multi-instances by this push:
new af377bf Extract FrameworkStatusReportService from FrameworkStatusReporter
af377bf is described below
commit af377bf7af4369e1e4d0150fa615d5dcd5fcd1f5
Author: gongdewei <ky...@qq.com>
AuthorDate: Fri Aug 27 11:33:42 2021 +0800
Extract FrameworkStatusReportService from FrameworkStatusReporter
---
...rter.java => FrameworkStatusReportService.java} | 64 ++++++++++--------
.../status/reporter/FrameworkStatusReporter.java | 77 +---------------------
.../dubbo/config/bootstrap/DubboBootstrap.java | 2 +
.../dubbo/config/utils/ConfigValidationUtils.java | 11 ++--
.../client/migration/MigrationInvoker.java | 16 ++---
.../client/migration/MigrationRuleHandler.java | 11 ++--
6 files changed, 59 insertions(+), 122 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReporter.java b/dubbo-common/src/main/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReportService.java
similarity index 63%
copy from dubbo-common/src/main/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReporter.java
copy to dubbo-common/src/main/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReportService.java
index e34996c..0e97d94 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReporter.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReportService.java
@@ -16,49 +16,55 @@
*/
package org.apache.dubbo.common.status.reporter;
-import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.common.extension.ExtensionScope;
-import org.apache.dubbo.common.extension.SPI;
+import com.google.gson.Gson;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.rpc.model.ApplicationModel;
-
-import com.google.gson.Gson;
+import org.apache.dubbo.rpc.model.ScopeModelAware;
import java.util.HashMap;
import java.util.Set;
-@SPI(scope = ExtensionScope.APPLICATION)
-public interface FrameworkStatusReporter {
- static final Gson gson = new Gson();
- Logger logger = LoggerFactory.getLogger(FrameworkStatusReporter.class);
- String REGISTRATION_STATUS = "registration";
- String ADDRESS_CONSUMPTION_STATUS = "consumption";
- String MIGRATION_STEP_STATUS = "migrationStepStatus";
+/**
+ *
+ */
+public class FrameworkStatusReportService implements ScopeModelAware {
+
+ private static final Logger logger = LoggerFactory.getLogger(FrameworkStatusReporter.class);
+ public static final String REGISTRATION_STATUS = "registration";
+ public static final String ADDRESS_CONSUMPTION_STATUS = "consumption";
+ public static final String MIGRATION_STEP_STATUS = "migrationStepStatus";
- void report(String type, Object obj);
+ private ApplicationModel applicationModel;
+ private Set<FrameworkStatusReporter> reporters;
+ private Gson gson = new Gson();
+
+ @Override
+ public void setApplicationModel(ApplicationModel applicationModel) {
+ this.applicationModel = applicationModel;
+ reporters = applicationModel.getExtensionLoader(FrameworkStatusReporter.class).getSupportedExtensionInstances();
+ }
- static void reportRegistrationStatus(Object obj) {
+ public void reportRegistrationStatus(Object obj) {
doReport(REGISTRATION_STATUS, obj);
}
- static void reportConsumptionStatus(Object obj) {
+ public void reportConsumptionStatus(Object obj) {
doReport(ADDRESS_CONSUMPTION_STATUS, obj);
}
- static void reportMigrationStepStatus(Object obj) {
+ public void reportMigrationStepStatus(Object obj) {
doReport(MIGRATION_STEP_STATUS, obj);
}
- static boolean hasReporter() {
- return ExtensionLoader.getExtensionLoader(FrameworkStatusReporter.class).getSupportedExtensions().size() > 0;
+ public boolean hasReporter() {
+ return reporters.size() > 0;
}
- static void doReport(String type, Object obj) {
+ private void doReport(String type, Object obj) {
// TODO, report asynchronously
try {
- Set<FrameworkStatusReporter> reporters = ExtensionLoader.getExtensionLoader(FrameworkStatusReporter.class).getSupportedExtensionInstances();
if (CollectionUtils.isNotEmpty(reporters)) {
FrameworkStatusReporter reporter = reporters.iterator().next();
reporter.report(type, obj);
@@ -68,18 +74,18 @@ public interface FrameworkStatusReporter {
}
}
- static String createRegistrationReport(String status) {
+ public String createRegistrationReport(String status) {
return "{\"application\":\"" +
- ApplicationModel.defaultModel().getName() +
- "\",\"status\":\"" +
- status +
- "\"}";
+ applicationModel.getName() +
+ "\",\"status\":\"" +
+ status +
+ "\"}";
}
- static String createConsumptionReport(String interfaceName, String version, String group, String status) {
+ public String createConsumptionReport(String interfaceName, String version, String group, String status) {
HashMap<String, String> migrationStatus = new HashMap<>();
migrationStatus.put("type", "consumption");
- migrationStatus.put("application", ApplicationModel.defaultModel().getName());
+ migrationStatus.put("application", applicationModel.getName());
migrationStatus.put("service", interfaceName);
migrationStatus.put("version", version);
migrationStatus.put("group", group);
@@ -87,10 +93,10 @@ public interface FrameworkStatusReporter {
return gson.toJson(migrationStatus);
}
- static String createMigrationStepReport(String interfaceName, String version, String group, String originStep, String newStep, String success) {
+ public String createMigrationStepReport(String interfaceName, String version, String group, String originStep, String newStep, String success) {
HashMap<String, String> migrationStatus = new HashMap<>();
migrationStatus.put("type", "migrationStepStatus");
- migrationStatus.put("application", ApplicationModel.defaultModel().getName());
+ migrationStatus.put("application", applicationModel.getName());
migrationStatus.put("service", interfaceName);
migrationStatus.put("version", version);
migrationStatus.put("group", group);
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReporter.java b/dubbo-common/src/main/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReporter.java
index e34996c..293bb49 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReporter.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/status/reporter/FrameworkStatusReporter.java
@@ -16,87 +16,14 @@
*/
package org.apache.dubbo.common.status.reporter;
-import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.extension.ExtensionScope;
import org.apache.dubbo.common.extension.SPI;
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.utils.CollectionUtils;
-import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelAware;
-import com.google.gson.Gson;
-
-import java.util.HashMap;
-import java.util.Set;
@SPI(scope = ExtensionScope.APPLICATION)
-public interface FrameworkStatusReporter {
- static final Gson gson = new Gson();
- Logger logger = LoggerFactory.getLogger(FrameworkStatusReporter.class);
- String REGISTRATION_STATUS = "registration";
- String ADDRESS_CONSUMPTION_STATUS = "consumption";
- String MIGRATION_STEP_STATUS = "migrationStepStatus";
+public interface FrameworkStatusReporter extends ScopeModelAware {
void report(String type, Object obj);
- static void reportRegistrationStatus(Object obj) {
- doReport(REGISTRATION_STATUS, obj);
- }
-
- static void reportConsumptionStatus(Object obj) {
- doReport(ADDRESS_CONSUMPTION_STATUS, obj);
- }
-
- static void reportMigrationStepStatus(Object obj) {
- doReport(MIGRATION_STEP_STATUS, obj);
- }
-
- static boolean hasReporter() {
- return ExtensionLoader.getExtensionLoader(FrameworkStatusReporter.class).getSupportedExtensions().size() > 0;
- }
-
- static void doReport(String type, Object obj) {
- // TODO, report asynchronously
- try {
- Set<FrameworkStatusReporter> reporters = ExtensionLoader.getExtensionLoader(FrameworkStatusReporter.class).getSupportedExtensionInstances();
- if (CollectionUtils.isNotEmpty(reporters)) {
- FrameworkStatusReporter reporter = reporters.iterator().next();
- reporter.report(type, obj);
- }
- } catch (Exception e) {
- logger.info("Report " + type + " status failed because of " + e.getMessage());
- }
- }
-
- static String createRegistrationReport(String status) {
- return "{\"application\":\"" +
- ApplicationModel.defaultModel().getName() +
- "\",\"status\":\"" +
- status +
- "\"}";
- }
-
- static String createConsumptionReport(String interfaceName, String version, String group, String status) {
- HashMap<String, String> migrationStatus = new HashMap<>();
- migrationStatus.put("type", "consumption");
- migrationStatus.put("application", ApplicationModel.defaultModel().getName());
- migrationStatus.put("service", interfaceName);
- migrationStatus.put("version", version);
- migrationStatus.put("group", group);
- migrationStatus.put("status", status);
- return gson.toJson(migrationStatus);
- }
-
- static String createMigrationStepReport(String interfaceName, String version, String group, String originStep, String newStep, String success) {
- HashMap<String, String> migrationStatus = new HashMap<>();
- migrationStatus.put("type", "migrationStepStatus");
- migrationStatus.put("application", ApplicationModel.defaultModel().getName());
- migrationStatus.put("service", interfaceName);
- migrationStatus.put("version", version);
- migrationStatus.put("group", group);
- migrationStatus.put("originStep", originStep);
- migrationStatus.put("newStep", newStep);
- migrationStatus.put("success", success);
- return gson.toJson(migrationStatus);
- }
}
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
index 0aaa3c3..5217dcc 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
@@ -29,6 +29,7 @@ import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.lang.ShutdownHookCallbacks;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.status.reporter.FrameworkStatusReportService;
import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;
import org.apache.dubbo.common.utils.ArrayUtils;
import org.apache.dubbo.common.utils.CollectionUtils;
@@ -278,6 +279,7 @@ public class DubboBootstrap {
beanFactory.registerBean(MetadataReportInstance.class);
beanFactory.registerBean(RemoteMetadataServiceImpl.class);
+ beanFactory.registerBean(FrameworkStatusReportService.class);
}
public ApplicationModel getApplicationModel() {
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
index d6188b7..c0b90cb 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
@@ -24,7 +24,7 @@ import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.serialize.Serialization;
import org.apache.dubbo.common.status.StatusChecker;
-import org.apache.dubbo.common.status.reporter.FrameworkStatusReporter;
+import org.apache.dubbo.common.status.reporter.FrameworkStatusReportService;
import org.apache.dubbo.common.threadpool.ThreadPool;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.ConfigUtils;
@@ -62,6 +62,7 @@ import org.apache.dubbo.rpc.ProxyFactory;
import org.apache.dubbo.rpc.cluster.Cluster;
import org.apache.dubbo.rpc.cluster.LoadBalance;
import org.apache.dubbo.rpc.cluster.filter.ClusterFilter;
+import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.support.MockInvoker;
import java.net.InetAddress;
@@ -108,7 +109,6 @@ import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_TYPE_
import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_PROTOCOL;
import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;
import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;
-import static org.apache.dubbo.common.status.reporter.FrameworkStatusReporter.createRegistrationReport;
import static org.apache.dubbo.config.Constants.ARCHITECTURE;
import static org.apache.dubbo.config.Constants.CONTEXTPATH_KEY;
import static org.apache.dubbo.config.Constants.DUBBO_IP_TO_REGISTRY;
@@ -222,10 +222,10 @@ public class ConfigValidationUtils {
}
}
}
- return genCompatibleRegistries(registryList, provider);
+ return genCompatibleRegistries(interfaceConfig.getApplicationModel(), registryList, provider);
}
- private static List<URL> genCompatibleRegistries(List<URL> registryList, boolean provider) {
+ private static List<URL> genCompatibleRegistries(ApplicationModel applicationModel, List<URL> registryList, boolean provider) {
List<URL> result = new ArrayList<>(registryList.size());
registryList.forEach(registryURL -> {
if (provider) {
@@ -264,7 +264,8 @@ public class ConfigValidationUtils {
}
}
- FrameworkStatusReporter.reportRegistrationStatus(createRegistrationReport(registerMode));
+ FrameworkStatusReportService reportService = applicationModel.getBeanFactory().getBean(FrameworkStatusReportService.class);
+ reportService.reportRegistrationStatus(reportService.createRegistrationReport(registerMode));
} else {
result.add(registryURL);
}
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationInvoker.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationInvoker.java
index c133182..cf81b68 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationInvoker.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationInvoker.java
@@ -20,7 +20,6 @@ import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.status.reporter.FrameworkStatusReporter;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.registry.Registry;
@@ -44,7 +43,6 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
-import static org.apache.dubbo.common.status.reporter.FrameworkStatusReporter.createConsumptionReport;
import static org.apache.dubbo.registry.client.migration.model.MigrationStep.APPLICATION_FIRST;
import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;
@@ -426,9 +424,10 @@ public class MigrationInvoker<T> implements MigrationClusterInvoker<T> {
}
setListener(serviceDiscoveryInvoker, () -> {
latch.countDown();
- FrameworkStatusReporter.reportConsumptionStatus(
- createConsumptionReport(consumerUrl.getServiceInterface(), consumerUrl.getVersion(), consumerUrl.getGroup(), "app")
- );
+ //TODO FrameworkStatusReporter
+// FrameworkStatusReporter.reportConsumptionStatus(
+// createConsumptionReport(consumerUrl.getServiceInterface(), consumerUrl.getVersion(), consumerUrl.getGroup(), "app")
+// );
if (step == APPLICATION_FIRST) {
calcPreferredInvoker(rule);
}
@@ -449,9 +448,10 @@ public class MigrationInvoker<T> implements MigrationClusterInvoker<T> {
}
setListener(invoker, () -> {
latch.countDown();
- FrameworkStatusReporter.reportConsumptionStatus(
- createConsumptionReport(consumerUrl.getServiceInterface(), consumerUrl.getVersion(), consumerUrl.getGroup(), "interface")
- );
+ //TODO FrameworkStatusReporter
+// FrameworkStatusReporter.reportConsumptionStatus(
+// createConsumptionReport(consumerUrl.getServiceInterface(), consumerUrl.getVersion(), consumerUrl.getGroup(), "interface")
+// );
if (step == APPLICATION_FIRST) {
calcPreferredInvoker(rule);
}
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java
index 052f225..5321f04 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java
@@ -98,11 +98,12 @@ public class MigrationRuleHandler<T> {
}
private void report(MigrationStep step, MigrationStep originStep, String success) {
- if (FrameworkStatusReporter.hasReporter()) {
- FrameworkStatusReporter.reportMigrationStepStatus(
- FrameworkStatusReporter.createMigrationStepReport(consumerURL.getServiceInterface(), consumerURL.getVersion(),
- consumerURL.getGroup(), String.valueOf(originStep), String.valueOf(step), success));
- }
+ //TODO FrameworkStatusReporter
+// if (FrameworkStatusReporter.hasReporter()) {
+// FrameworkStatusReporter.reportMigrationStepStatus(
+// FrameworkStatusReporter.createMigrationStepReport(consumerURL.getServiceInterface(), consumerURL.getVersion(),
+// consumerURL.getGroup(), String.valueOf(originStep), String.valueOf(step), success));
+// }
}
private void setMigrationRule(MigrationRule rule) {