You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2021/01/04 14:58:41 UTC

[shardingsphere] branch master updated: spi agent refactor (#8887)

This is an automated email from the ASF dual-hosted git repository.

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 27cd2fd  spi agent refactor (#8887)
27cd2fd is described below

commit 27cd2fdd6ebae8c1db4c6be933a892c97ab43606
Author: xiaoyu <54...@qq.com>
AuthorDate: Mon Jan 4 22:58:23 2021 +0800

    spi agent refactor (#8887)
---
 .../agent/spi/{ => boot}/PluginBootService.java    |  3 +-
 .../AbstractPluginDefinitionService.java}          | 15 ++---
 .../spi/definition/PluginDefinitionService.java}   | 24 +++++---
 .../agent/spi/{ => type}/AgentTypedSPI.java        |  2 +-
 .../agent/core/plugin/loader/PluginLoader.java     | 67 ++++++++++------------
 .../plugin/manager/PluginBootServiceManager.java   |  9 ++-
 .../agent/core/spi/AgentTypedSPIRegistry.java      |  2 +-
 .../agent/core/spi/PluginServiceLoader.java}       | 26 ++++++---
 .../src/main/resources/conf/agent.yaml             |  2 +-
 .../shardingsphere-agent-plugin-logging/pom.xml    |  8 ---
 .../shardingsphere-agent-logging-base/pom.xml      |  4 --
 ...ava => BaseLoggingPluginDefinitionService.java} | 17 +++---
 ...e.agent.spi.definition.PluginDefinitionService} |  2 +-
 .../shardingsphere-agent-metrics-api/pom.xml       | 11 ----
 .../agent/metrics/api/MetricsRegisterFactory.java  |  2 +-
 ...on.java => MetricsPluginDefinitionService.java} | 17 +++---
 .../pom.xml                                        |  8 ---
 .../service/PrometheusPluginBootService.java       |  2 +-
 ...hardingsphere.agent.spi.boot.PluginBootService} |  0
 ...e.agent.spi.definition.PluginDefinitionService} |  2 +-
 .../shardingsphere-agent-plugin-tracing/pom.xml    |  8 ---
 .../shardingsphere-agent-tracing-jaeger/pom.xml    |  1 -
 ...ion.java => JaegerPluginDefinitionService.java} | 17 +++---
 .../service/JaegerTracingPluginBootService.java    |  2 +-
 ...hardingsphere.agent.spi.boot.PluginBootService} |  0
 ...e.agent.spi.definition.PluginDefinitionService} |  2 +-
 .../shardingsphere-agent-tracing-zipkin/pom.xml    |  1 -
 ...ion.java => ZipkinPluginDefinitionService.java} | 17 +++---
 .../service/ZipkinTracingPluginBootService.java    |  2 +-
 ...hardingsphere.agent.spi.boot.PluginBootService} |  0
 ...e.agent.spi.definition.PluginDefinitionService} |  2 +-
 31 files changed, 127 insertions(+), 148 deletions(-)

diff --git a/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/PluginBootService.java b/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/boot/PluginBootService.java
similarity index 91%
rename from shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/PluginBootService.java
rename to shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/boot/PluginBootService.java
index b0b5a73..b8b2b55 100644
--- a/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/PluginBootService.java
+++ b/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/boot/PluginBootService.java
@@ -15,9 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.spi;
+package org.apache.shardingsphere.agent.spi.boot;
 
 import org.apache.shardingsphere.agent.config.PluginConfiguration;
+import org.apache.shardingsphere.agent.spi.type.AgentTypedSPI;
 
 /**
  * Plugin boot service that the lifecycle is from the agent start to shutdown.
diff --git a/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/api/definition/PluginDefinition.java b/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/definition/AbstractPluginDefinitionService.java
similarity index 86%
rename from shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/api/definition/PluginDefinition.java
rename to shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/definition/AbstractPluginDefinitionService.java
index 0dbd1a9..e8e7e93 100644
--- a/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/api/definition/PluginDefinition.java
+++ b/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/definition/AbstractPluginDefinitionService.java
@@ -15,11 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.api.definition;
+package org.apache.shardingsphere.agent.spi.definition;
 
 import com.google.common.collect.Maps;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.agent.api.point.PluginInterceptorPoint;
 
 import java.util.List;
@@ -27,18 +25,12 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
- * Plugin definition.
+ * Abstract plugin definition service.
  */
-@RequiredArgsConstructor
-public abstract class PluginDefinition {
+public abstract class AbstractPluginDefinitionService implements PluginDefinitionService {
     
     private final Map<String, PluginInterceptorPoint.Builder> interceptorPointMap = Maps.newHashMap();
     
-    @Getter
-    private final String pluginName;
-    
-    protected abstract void define();
-    
     protected PluginInterceptorPoint.Builder intercept(final String classNameOfTarget) {
         if (interceptorPointMap.containsKey(classNameOfTarget)) {
             return interceptorPointMap.get(classNameOfTarget);
@@ -53,6 +45,7 @@ public abstract class PluginDefinition {
      *
      * @return Collection of pluginInterceptorPoint
      */
+    @Override
     public final List<PluginInterceptorPoint> build() {
         define();
         return interceptorPointMap.values().stream().map(PluginInterceptorPoint.Builder::install).collect(Collectors.toList());
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsRegisterFactory.java b/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/definition/PluginDefinitionService.java
similarity index 57%
copy from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsRegisterFactory.java
copy to shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/definition/PluginDefinitionService.java
index 4a460d3..4341761 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsRegisterFactory.java
+++ b/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/definition/PluginDefinitionService.java
@@ -15,19 +15,29 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.metrics.api;
+package org.apache.shardingsphere.agent.spi.definition;
 
-import org.apache.shardingsphere.agent.spi.AgentTypedSPI;
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.shardingsphere.agent.api.point.PluginInterceptorPoint;
+import org.apache.shardingsphere.agent.spi.type.AgentTypedSPI;
 
 /**
- * Metrics register factory.
+ * Plugin definition service.
  */
-public interface MetricsRegisterFactory extends AgentTypedSPI {
+public interface PluginDefinitionService extends AgentTypedSPI {
     
     /**
-     * New instance metrics register.
+     * Define.
+     */
+    void define();
+    
+    /**
+     * Build collection of plugin interceptor point.
      *
-     * @return the metrics register
+     * @return collection of plugin interceptor point
      */
-    MetricsRegister newInstance();
+    default Collection<PluginInterceptorPoint> build() {
+        return Collections.emptyList();
+    }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/AgentTypedSPI.java b/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/type/AgentTypedSPI.java
similarity index 95%
rename from shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/AgentTypedSPI.java
rename to shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/type/AgentTypedSPI.java
index c022226..8e6e7ff 100644
--- a/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/AgentTypedSPI.java
+++ b/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/spi/type/AgentTypedSPI.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.spi;
+package org.apache.shardingsphere.agent.spi.type;
 
 /**
  * Agent typed SPI.
diff --git a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/loader/PluginLoader.java b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/loader/PluginLoader.java
index b6ee618..5df306c 100644
--- a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/loader/PluginLoader.java
+++ b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/loader/PluginLoader.java
@@ -17,29 +17,17 @@
 
 package org.apache.shardingsphere.agent.core.plugin.loader;
 
-import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.io.ByteStreams;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import net.bytebuddy.description.type.TypeDescription;
-import net.bytebuddy.matcher.ElementMatcher;
-import net.bytebuddy.matcher.ElementMatcher.Junction;
-import org.apache.shardingsphere.agent.core.config.cache.AgentObjectPool;
-import org.apache.shardingsphere.agent.config.AgentConfiguration;
-import org.apache.shardingsphere.agent.core.config.path.AgentPathBuilder;
-import org.apache.shardingsphere.agent.api.definition.PluginDefinition;
-import org.apache.shardingsphere.agent.api.point.PluginInterceptorPoint;
-
 import java.io.ByteArrayOutputStream;
 import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
@@ -53,6 +41,18 @@ import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import java.util.jar.Manifest;
 import java.util.zip.ZipEntry;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import net.bytebuddy.description.type.TypeDescription;
+import net.bytebuddy.matcher.ElementMatcher;
+import net.bytebuddy.matcher.ElementMatcher.Junction;
+import org.apache.shardingsphere.agent.api.point.PluginInterceptorPoint;
+import org.apache.shardingsphere.agent.config.AgentConfiguration;
+import org.apache.shardingsphere.agent.core.config.cache.AgentObjectPool;
+import org.apache.shardingsphere.agent.core.config.path.AgentPathBuilder;
+import org.apache.shardingsphere.agent.core.spi.PluginServiceLoader;
+import org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService;
 
 /**
  * Plugin loader.
@@ -107,29 +107,12 @@ public final class PluginLoader extends ClassLoader implements Closeable {
         Map<String, PluginInterceptorPoint> pointMap = Maps.newHashMap();
         Set<String> ignoredPluginNames = AgentObjectPool.INSTANCE.get(AgentConfiguration.class).getIgnoredPluginNames();
         try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
-            for (File jarFile : jarFiles) {
+            for (File each : jarFiles) {
                 outputStream.reset();
-                JarFile jar = new JarFile(jarFile, true);
-                jars.add(new PluginJar(jar, jarFile));
-                log.info("Loaded jar {}.", jarFile.getName());
-                Attributes attributes = jar.getManifest().getMainAttributes();
-                String entrypoint = attributes.getValue("Entrypoint");
-                if (Strings.isNullOrEmpty(entrypoint)) {
-                    log.warn("Entrypoint is not setting in {}.", jarFile.getName());
-                    continue;
-                }
-                try {
-                    ByteStreams.copy(jar.getInputStream(jar.getEntry(classNameToPath(entrypoint))), outputStream);
-                    PluginDefinition pluginDefinition = (PluginDefinition) defineClass(entrypoint, outputStream.toByteArray(), 0, outputStream.size()).newInstance();
-                    if (!ignoredPluginNames.isEmpty() && ignoredPluginNames.contains(pluginDefinition.getPluginName())) {
-                        continue;
-                    }
-                    buildPluginInterceptorPointMap(pluginDefinition, pointMap);
-                    // CHECKSTYLE:OFF
-                } catch (final Throwable ex) {
-                    // CHECKSTYLE:ON
-                    log.error("Failed to load plugin definition, {}.", entrypoint, ex);
-                }
+                JarFile jar = new JarFile(each, true);
+                jars.add(new PluginJar(jar, each));
+                log.info("Loaded jar {}.", each.getName());
+                loadPluginDefinitionServices(ignoredPluginNames, pointMap);
             }
         }
         interceptorPointMap = ImmutableMap.<String, PluginInterceptorPoint>builder().putAll(pointMap).build();
@@ -268,6 +251,16 @@ public final class PluginLoader extends ClassLoader implements Closeable {
         }
     }
     
+    private void loadPluginDefinitionServices(final Set<String> ignoredPluginNames, final Map<String, PluginInterceptorPoint> pointMap) {
+        Collection<PluginDefinitionService> pluginDefinitionServices = PluginServiceLoader.newServiceInstances(PluginDefinitionService.class);
+        for (PluginDefinitionService each : pluginDefinitionServices) {
+            if (!ignoredPluginNames.isEmpty() && ignoredPluginNames.contains(each.getType())) {
+                continue;
+            }
+            buildPluginInterceptorPointMap(each, pointMap);
+        }
+    }
+    
     private String classNameToPath(final String className) {
         return String.join("", className.replace(".", "/"), ".class");
     }
@@ -286,8 +279,8 @@ public final class PluginLoader extends ClassLoader implements Closeable {
         definePackage(packageName, specTitle, specVersion, specVendor, implTitle, implVersion, implVendor, null);
     }
     
-    private void buildPluginInterceptorPointMap(final PluginDefinition pluginDefinition, final Map<String, PluginInterceptorPoint> pointMap) {
-        pluginDefinition.build().forEach(each -> {
+    private void buildPluginInterceptorPointMap(final PluginDefinitionService pluginDefinitionService, final Map<String, PluginInterceptorPoint> pointMap) {
+        pluginDefinitionService.build().forEach(each -> {
             String target = each.getClassNameOfTarget();
             if (pointMap.containsKey(target)) {
                 PluginInterceptorPoint definition = pointMap.get(target);
diff --git a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/manager/PluginBootServiceManager.java b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/manager/PluginBootServiceManager.java
index ce7967e..5791813 100644
--- a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/manager/PluginBootServiceManager.java
+++ b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/manager/PluginBootServiceManager.java
@@ -18,10 +18,13 @@
 package org.apache.shardingsphere.agent.core.plugin.manager;
 
 import java.util.Map;
+import java.util.Set;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.agent.config.AgentConfiguration;
 import org.apache.shardingsphere.agent.config.PluginConfiguration;
+import org.apache.shardingsphere.agent.core.config.cache.AgentObjectPool;
 import org.apache.shardingsphere.agent.core.spi.AgentTypedSPIRegistry;
-import org.apache.shardingsphere.agent.spi.PluginBootService;
+import org.apache.shardingsphere.agent.spi.boot.PluginBootService;
 
 /**
  * Plugin boot service manager.
@@ -35,9 +38,13 @@ public final class PluginBootServiceManager {
      * @param pluginConfigurationMap plugin configuration map
      */
     public static void startAllServices(final Map<String, PluginConfiguration> pluginConfigurationMap) {
+        Set<String> ignoredPluginNames = AgentObjectPool.INSTANCE.get(AgentConfiguration.class).getIgnoredPluginNames();
         for (Map.Entry<String, PluginConfiguration> entry: pluginConfigurationMap.entrySet()) {
             AgentTypedSPIRegistry.getRegisteredServiceOptional(PluginBootService.class, entry.getKey()).ifPresent(pluginBootService -> {
                 try {
+                    if (!ignoredPluginNames.isEmpty() && ignoredPluginNames.contains(pluginBootService.getType())) {
+                        return;
+                    }
                     pluginBootService.start(entry.getValue());
                     // CHECKSTYLE:OFF
                 } catch (final Throwable ex) {
diff --git a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/spi/AgentTypedSPIRegistry.java b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/spi/AgentTypedSPIRegistry.java
index 97398d0..41e8464 100644
--- a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/spi/AgentTypedSPIRegistry.java
+++ b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/spi/AgentTypedSPIRegistry.java
@@ -22,7 +22,7 @@ import java.util.Optional;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.agent.core.exception.AgentServiceProviderNotFoundException;
-import org.apache.shardingsphere.agent.spi.AgentTypedSPI;
+import org.apache.shardingsphere.agent.spi.type.AgentTypedSPI;
 
 /**
  *  Agent typed SPI registry.
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsRegisterFactory.java b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/spi/PluginServiceLoader.java
similarity index 54%
copy from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsRegisterFactory.java
copy to shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/spi/PluginServiceLoader.java
index 4a460d3..b9de9e1 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsRegisterFactory.java
+++ b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/spi/PluginServiceLoader.java
@@ -15,19 +15,31 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.metrics.api;
+package org.apache.shardingsphere.agent.core.spi;
 
-import org.apache.shardingsphere.agent.spi.AgentTypedSPI;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ServiceLoader;
+import org.apache.shardingsphere.agent.core.plugin.loader.PluginLoader;
 
 /**
- * Metrics register factory.
+ * Plugin service loader.
  */
-public interface MetricsRegisterFactory extends AgentTypedSPI {
+public final class PluginServiceLoader {
     
     /**
-     * New instance metrics register.
+     * New service instances.
      *
-     * @return the metrics register
+     * @param service service type
+     * @param <T> type of class
+     * @return service instances
      */
-    MetricsRegister newInstance();
+    public static <T> Collection<T> newServiceInstances(final Class<T> service) {
+        List<T> result = new LinkedList<>();
+        for (T each : ServiceLoader.load(service, PluginLoader.getInstance())) {
+            result.add(each);
+        }
+        return result;
+    }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-distribution/src/main/resources/conf/agent.yaml b/shardingsphere-agent/shardingsphere-agent-distribution/src/main/resources/conf/agent.yaml
index c71353c..4e6ece9 100644
--- a/shardingsphere-agent/shardingsphere-agent-distribution/src/main/resources/conf/agent.yaml
+++ b/shardingsphere-agent/shardingsphere-agent-distribution/src/main/resources/conf/agent.yaml
@@ -18,7 +18,7 @@
 applicationName: shardingsphere-agent
 metricsType : Prometheus
 ignoredPluginNames:
-  - test
+  - Jaeger
 
 plugins:
   prometheus:
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/pom.xml b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/pom.xml
index 6329b54..c2c6b55 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/pom.xml
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/pom.xml
@@ -34,7 +34,6 @@
     </modules>
     
     <properties>
-        <entrypoint.class />
         <logging.target.directory>${project.basedir}/../target/plugins</logging.target.directory>
     </properties>
     
@@ -50,13 +49,6 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <Entrypoint>${entrypoint.class}</Entrypoint>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
             </plugin>
             <plugin>
                 <artifactId>maven-shade-plugin</artifactId>
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/pom.xml b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/pom.xml
index 75bce1d..cbc62ed 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/pom.xml
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/pom.xml
@@ -28,10 +28,6 @@
     <artifactId>shardingsphere-agent-logging-base</artifactId>
     <name>${project.artifactId}</name>
     
-    <properties>
-        <entrypoint.class>org.apache.shardingsphere.agent.plugin.logging.base.definition.BaseLoggingPluginDefinition</entrypoint.class>
-    </properties>
-    
     <dependencies>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinition.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinitionService.java
similarity index 83%
rename from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinition.java
rename to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinitionService.java
index 982cd38..7d475ee 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinition.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinitionService.java
@@ -18,12 +18,12 @@
 package org.apache.shardingsphere.agent.plugin.logging.base.definition;
 
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.api.definition.PluginDefinition;
+import org.apache.shardingsphere.agent.spi.definition.AbstractPluginDefinitionService;
 
 /**
- * Base logging plugin definition.
+ * Base logging plugin definition service.
  */
-public final class BaseLoggingPluginDefinition extends PluginDefinition {
+public final class BaseLoggingPluginDefinitionService extends AbstractPluginDefinitionService {
     
     private static final String SCHEMA_METADATA_LOADER_CLASS = "org.apache.shardingsphere.infra.metadata.schema.builder.loader.SchemaMetaDataLoader";
     
@@ -31,15 +31,16 @@ public final class BaseLoggingPluginDefinition extends PluginDefinition {
     
     private static final String SCHEMA_METADATA_LOADER_ADVICE_CLASS = "org.apache.shardingsphere.agent.plugin.logging.base.advice.SchemaMetaDataLoaderAdvice";
     
-    public BaseLoggingPluginDefinition() {
-        super("base-logging");
-    }
-    
     @Override
-    protected void define() {
+    public void define() {
         intercept(SCHEMA_METADATA_LOADER_CLASS)
                 .aroundClassStaticMethod(ElementMatchers.named(SCHEMA_METADATA_LOADER_METHOD_NAME))
                 .implement(SCHEMA_METADATA_LOADER_ADVICE_CLASS)
                 .build();
     }
+    
+    @Override
+    public String getType() {
+        return "Logging";
+    }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService
similarity index 88%
copy from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService
copy to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService
index 576ca6d..f78ffaf 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.agent.plugin.tracing.zipkin.service.ZipkinTracingPluginBootService
+org.apache.shardingsphere.agent.plugin.logging.base.definition.BaseLoggingPluginDefinitionService
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/pom.xml b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/pom.xml
index b503b05..54692a0 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/pom.xml
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/pom.xml
@@ -28,10 +28,6 @@
     <artifactId>shardingsphere-agent-metrics-api</artifactId>
     <name>${project.artifactId}</name>
     
-    <properties>
-        <entrypoint.class>org.apache.shardingsphere.agent.metrics.api.definition.MetricsPluginDefinition</entrypoint.class>
-    </properties>
-    
     <dependencies>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
@@ -52,13 +48,6 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <Entrypoint>${entrypoint.class}</Entrypoint>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
             </plugin>
         </plugins>
     </build>
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsRegisterFactory.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsRegisterFactory.java
index 4a460d3..75553ee 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsRegisterFactory.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsRegisterFactory.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.agent.metrics.api;
 
-import org.apache.shardingsphere.agent.spi.AgentTypedSPI;
+import org.apache.shardingsphere.agent.spi.type.AgentTypedSPI;
 
 /**
  * Metrics register factory.
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/definition/MetricsPluginDefinition.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/definition/MetricsPluginDefinitionService.java
similarity index 91%
rename from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/definition/MetricsPluginDefinition.java
rename to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/definition/MetricsPluginDefinitionService.java
index 60449e0..249c84b 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/definition/MetricsPluginDefinition.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/definition/MetricsPluginDefinitionService.java
@@ -18,13 +18,13 @@
 package org.apache.shardingsphere.agent.metrics.api.definition;
 
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.api.definition.PluginDefinition;
+import org.apache.shardingsphere.agent.spi.definition.AbstractPluginDefinitionService;
 import org.apache.shardingsphere.agent.metrics.api.constant.MethodNameConstant;
 
 /**
- * Metrics plugin definition.
+ * Metrics plugin definition service.
  */
-public final class MetricsPluginDefinition extends PluginDefinition {
+public final class MetricsPluginDefinitionService extends AbstractPluginDefinitionService {
     
     private static final String COMMAND_EXECUTOR_TASK_ENHANCE_CLASS = "org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask";
     
@@ -42,12 +42,8 @@ public final class MetricsPluginDefinition extends PluginDefinition {
     
     private static final String TRANSACTION_ADVICE_CLASS = "org.apache.shardingsphere.agent.metrics.api.advice.TransactionAdvice";
     
-    public MetricsPluginDefinition() {
-        super("Metrics");
-    }
-    
     @Override
-    protected void define() {
+    public void define() {
         intercept(COMMAND_EXECUTOR_TASK_ENHANCE_CLASS)
                 .aroundInstanceMethod(ElementMatchers.named(MethodNameConstant.COMMAND_EXECUTOR_RUN))
                 .implement(COMMAND_EXECUTOR_TASK_ADVICE_CLASS)
@@ -66,4 +62,9 @@ public final class MetricsPluginDefinition extends PluginDefinition {
                 .implement(TRANSACTION_ADVICE_CLASS)
                 .build();
     }
+    
+    @Override
+    public String getType() {
+        return "Metrics";
+    }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/pom.xml b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/pom.xml
index ef1e45b..71f345e 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/pom.xml
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/pom.xml
@@ -31,7 +31,6 @@
     <properties>
         <prometheus.version>0.6.0</prometheus.version>
         <prometheus.jmx.version>0.10</prometheus.jmx.version>
-        <entrypoint.class>org.apache.shardingsphere.agent.metrics.api.definition.MetricsPluginDefinition</entrypoint.class>
     </properties>
     
     <dependencies>
@@ -68,13 +67,6 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <Entrypoint>${entrypoint.class}</Entrypoint>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
             </plugin>
             <plugin>
                 <artifactId>maven-shade-plugin</artifactId>
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootService.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootService.java
index 3f61d34..1e46edb 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootService.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootService.java
@@ -22,7 +22,7 @@ import io.prometheus.client.exporter.HTTPServer;
 import io.prometheus.client.hotspot.DefaultExports;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.agent.config.PluginConfiguration;
-import org.apache.shardingsphere.agent.spi.PluginBootService;
+import org.apache.shardingsphere.agent.spi.boot.PluginBootService;
 import org.apache.shardingsphere.agent.metrics.prometheus.collector.BuildInfoCollector;
 
 import java.io.IOException;
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.boot.PluginBootService
similarity index 100%
copy from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService
copy to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.boot.PluginBootService
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService
similarity index 90%
rename from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService
rename to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService
index de7ecdf..435a07f 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.agent.metrics.prometheus.service.PrometheusPluginBootService
+org.apache.shardingsphere.agent.metrics.api.definition.MetricsPluginDefinitionService
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/pom.xml b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/pom.xml
index 695b0fd..a910036 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/pom.xml
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/pom.xml
@@ -35,7 +35,6 @@
     </modules>
     
     <properties>
-        <entrypoint.class/>
         <tracing.target.directory>${project.basedir}/../target/plugins</tracing.target.directory>
     </properties>
     
@@ -55,13 +54,6 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <Entrypoint>${entrypoint.class}</Entrypoint>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
             </plugin>
             <plugin>
                 <artifactId>maven-shade-plugin</artifactId>
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/pom.xml b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/pom.xml
index 37d59bd..2422c05 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/pom.xml
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/pom.xml
@@ -31,7 +31,6 @@
     <properties>
         <jaeger-client.version>0.31.0</jaeger-client.version>
         <opentracing.version>0.31.0</opentracing.version>
-        <entrypoint.class>org.apache.shardingsphere.agent.plugin.tracing.jaeger.definition.JaegerPluginDefinition</entrypoint.class>
     </properties>
     
     <dependencies>
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerPluginDefinition.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerPluginDefinitionService.java
similarity index 91%
rename from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerPluginDefinition.java
rename to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerPluginDefinitionService.java
index eedf235..fb94094 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerPluginDefinition.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerPluginDefinitionService.java
@@ -18,12 +18,12 @@
 package org.apache.shardingsphere.agent.plugin.tracing.jaeger.definition;
 
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.api.definition.PluginDefinition;
+import org.apache.shardingsphere.agent.spi.definition.AbstractPluginDefinitionService;
 
 /**
- * Jaeger plugin definition.
+ * Jaeger plugin definition service.
  */
-public final class JaegerPluginDefinition extends PluginDefinition {
+public final class JaegerPluginDefinitionService extends AbstractPluginDefinitionService {
     
     private static final String COMMAND_EXECUTOR_TASK_ENHANCE_CLASS = "org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask";
     
@@ -45,12 +45,8 @@ public final class JaegerPluginDefinition extends PluginDefinition {
     
     private static final String JDBC_EXECUTOR_CALLBACK_ADVICE_CLASS = "org.apache.shardingsphere.agent.plugin.tracing.advice.JDBCExecutorCallbackAdvice";
     
-    public JaegerPluginDefinition() {
-        super("Jaeger");
-    }
-    
     @Override
-    protected void define() {
+    public void define() {
         intercept(COMMAND_EXECUTOR_TASK_ENHANCE_CLASS)
                 .aroundInstanceMethod(ElementMatchers.named(COMMAND_EXECUTOR_METHOD_NAME))
                 .implement(COMMAND_EXECUTOR_TASK_ADVICE_CLASS)
@@ -67,4 +63,9 @@ public final class JaegerPluginDefinition extends PluginDefinition {
                 .implement(JDBC_EXECUTOR_CALLBACK_ADVICE_CLASS)
                 .build();
     }
+    
+    @Override
+    public String getType() {
+        return "Jaeger";
+    }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/service/JaegerTracingPluginBootService.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/service/JaegerTracingPluginBootService.java
index 474109c..f66c22d 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/service/JaegerTracingPluginBootService.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/service/JaegerTracingPluginBootService.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.agent.plugin.tracing.jaeger.service;
 import io.jaegertracing.Configuration;
 import io.opentracing.util.GlobalTracer;
 import org.apache.shardingsphere.agent.config.PluginConfiguration;
-import org.apache.shardingsphere.agent.spi.PluginBootService;
+import org.apache.shardingsphere.agent.spi.boot.PluginBootService;
 
 /**
  * Jaeger tracing plugin boot service.
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.boot.PluginBootService
similarity index 100%
rename from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService
rename to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.boot.PluginBootService
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService
similarity index 89%
copy from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService
copy to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService
index 576ca6d..3ddbb2b 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.agent.plugin.tracing.zipkin.service.ZipkinTracingPluginBootService
+org.apache.shardingsphere.agent.plugin.tracing.jaeger.definition.JaegerPluginDefinitionService
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/pom.xml b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/pom.xml
index 9e8b524..ce189ac 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/pom.xml
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/pom.xml
@@ -31,7 +31,6 @@
     <properties>
         <zipkin-reporter.version>2.16.2</zipkin-reporter.version>
         <zipkin-brave.version>5.13.2</zipkin-brave.version>
-        <entrypoint.class>org.apache.shardingsphere.agent.plugin.tracing.zipkin.definition.ZipkinPluginDefinition</entrypoint.class>
     </properties>
 
     <dependencies>
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinPluginDefinition.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinPluginDefinitionService.java
similarity index 91%
rename from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinPluginDefinition.java
rename to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinPluginDefinitionService.java
index 2bacce0..f8e8b0e 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinPluginDefinition.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinPluginDefinitionService.java
@@ -18,12 +18,12 @@
 package org.apache.shardingsphere.agent.plugin.tracing.zipkin.definition;
 
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.api.definition.PluginDefinition;
+import org.apache.shardingsphere.agent.spi.definition.AbstractPluginDefinitionService;
 
 /**
- * Zipkin plugin definition.
+ * Zipkin plugin definition service.
  */
-public final class ZipkinPluginDefinition extends PluginDefinition {
+public final class ZipkinPluginDefinitionService extends AbstractPluginDefinitionService {
     
     private static final String COMMAND_EXECUTOR_TASK_ENHANCE_CLASS = "org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask";
     
@@ -45,12 +45,8 @@ public final class ZipkinPluginDefinition extends PluginDefinition {
     
     private static final String JDBC_EXECUTOR_CALLBACK_ADVICE_CLASS = "org.apache.shardingsphere.agent.plugin.tracing.zipkin.advice.JDBCExecutorCallbackAdvice";
     
-    public ZipkinPluginDefinition() {
-        super("Zipkin");
-    }
-    
     @Override
-    protected void define() {
+    public void define() {
         intercept(COMMAND_EXECUTOR_TASK_ENHANCE_CLASS)
                 .aroundInstanceMethod(ElementMatchers.named(COMMAND_EXECUTOR_METHOD_NAME))
                 .implement(COMMAND_EXECUTOR_TASK_ADVICE_CLASS)
@@ -66,4 +62,9 @@ public final class ZipkinPluginDefinition extends PluginDefinition {
                 .implement(JDBC_EXECUTOR_CALLBACK_ADVICE_CLASS)
                 .build();
     }
+    
+    @Override
+    public String getType() {
+        return "Zipkin";
+    }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/service/ZipkinTracingPluginBootService.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/service/ZipkinTracingPluginBootService.java
index c021c62..949cf87 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/service/ZipkinTracingPluginBootService.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/service/ZipkinTracingPluginBootService.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.agent.plugin.tracing.zipkin.service;
 
 import brave.Tracing;
 import org.apache.shardingsphere.agent.config.PluginConfiguration;
-import org.apache.shardingsphere.agent.spi.PluginBootService;
+import org.apache.shardingsphere.agent.spi.boot.PluginBootService;
 import zipkin2.reporter.brave.AsyncZipkinSpanHandler;
 import zipkin2.reporter.okhttp3.OkHttpSender;
 
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.boot.PluginBootService
similarity index 100%
copy from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService
copy to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.boot.PluginBootService
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService
similarity index 89%
rename from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService
rename to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService
index 576ca6d..988b0de 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.PluginBootService
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/resources/META-INF/services/org.apache.shardingsphere.agent.spi.definition.PluginDefinitionService
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.agent.plugin.tracing.zipkin.service.ZipkinTracingPluginBootService
+org.apache.shardingsphere.agent.plugin.tracing.zipkin.definition.ZipkinPluginDefinitionService