diff --git a/demo/demo-edge/business-2.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/EdgeServiceGovernanceService.java b/demo/demo-edge/business-2.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/EdgeServiceGovernanceService.java
new file mode 100644
index 0000000..f694cac
--- /dev/null
+++ b/demo/demo-edge/business-2.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/EdgeServiceGovernanceService.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.demo.edge.business;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.servicecomb.provider.rest.common.RestSchema;
+import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+
+@RestSchema(schemaId = "EdgeServiceGovernanceService")
+@RequestMapping(path = "/business/v2")
+public class EdgeServiceGovernanceService {
+  private static final Logger LOGGER = LoggerFactory.getLogger(EdgeServiceGovernanceService.class);
+
+  private Map<String, Integer> retryTimes = new HashMap<>();
+
+  private AtomicInteger instanceIsolationIndex = new AtomicInteger();
+
+  @GetMapping("/testEdgeServiceRetry")
+  @ApiResponses({
+      @ApiResponse(code = 200, response = String.class, message = ""),
+      @ApiResponse(code = 502, response = String.class, message = "")})
+  public String testEdgeServiceRetry(@RequestParam(name = "invocationID") String invocationID) {
+    LOGGER.info("invoke service: {}", invocationID);
+    retryTimes.putIfAbsent(invocationID, 0);
+    retryTimes.put(invocationID, retryTimes.get(invocationID) + 1);
+
+    int retry = retryTimes.get(invocationID);
+
+    if (retry == 3) {
+      return "try times: " + retry;
+    }
+    throw new InvocationException(502, "retry", "retry");
+  }
+
+  @GetMapping("/testEdgeServiceInstanceIsolation")
+  @ApiResponses({
+      @ApiResponse(code = 200, response = String.class, message = ""),
+      @ApiResponse(code = 502, response = String.class, message = "")})
+  public String testEdgeServiceInstanceIsolation(@RequestParam(name = "name") String name) {
+    if (instanceIsolationIndex.getAndIncrement() % 3 != 0) {
+      throw new InvocationException(502, "InstanceIsolation", "InstanceIsolation");
+    }
+    return name;
+  }
+
+  @GetMapping("/testEdgeServiceInstanceBulkhead")
+  public String testEdgeServiceInstanceBulkhead(@RequestParam(name = "name") String name) {
+    return name;
+  }
+}
diff --git a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/ConsumerMain.java b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/ConsumerMain.java
index 8feeaeb..8079578 100644
--- a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/ConsumerMain.java
+++ b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/ConsumerMain.java
@@ -17,6 +17,8 @@
 
 package org.apache.servicecomb.demo.edge.consumer;
 
+import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
+import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.demo.edge.model.ChannelRequestBase;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
 import org.apache.servicecomb.foundation.common.utils.Log4jUtils;
@@ -39,5 +41,17 @@
     new Consumer().run("http");
 
     System.out.println("All test case finished.");
+
+    runCategorizedTest();
+
+    TestMgr.summary();
+    if (!TestMgr.errors().isEmpty()) {
+      throw new IllegalStateException("tests failed");
+    }
+  }
+
+  private static void runCategorizedTest() throws Exception {
+    CategorizedTestCaseRunner
+        .runCategorizedTestCase("edge");
   }
 }
diff --git a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/EdgeServiceGovernanceTest.java b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/EdgeServiceGovernanceTest.java
new file mode 100644
index 0000000..ed9b6d1
--- /dev/null
+++ b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/EdgeServiceGovernanceTest.java
@@ -0,0 +1,156 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.demo.edge.consumer;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.apache.servicecomb.demo.CategorizedTestCase;
+import org.apache.servicecomb.demo.TestMgr;
+import org.apache.servicecomb.foundation.common.net.URIEndpointObject;
+import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
+import org.apache.servicecomb.registry.DiscoveryManager;
+import org.apache.servicecomb.registry.RegistrationManager;
+import org.apache.servicecomb.registry.api.registry.Microservice;
+import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
+import org.apache.servicecomb.registry.definition.DefinitionConst;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.HttpServerErrorException;
+import org.springframework.web.client.RestTemplate;
+
+@Component
+public class EdgeServiceGovernanceTest implements CategorizedTestCase {
+  RestTemplate template = RestTemplateBuilder.create();
+
+  String edgePrefix;
+
+  @Override
+  public void testRestTransport() throws Exception {
+    prepareEdge("url");
+    // edge service do not support retry
+//    testEdgeServiceRetry();
+
+    testEdgeServiceInstanceIsolation();
+    testEdgeServiceInstanceBulkhead();
+  }
+
+  private void testEdgeServiceInstanceBulkhead() throws Exception {
+    String url = edgePrefix + "/business/v2/testEdgeServiceInstanceBulkhead";
+
+    CountDownLatch latch = new CountDownLatch(100);
+    AtomicBoolean expectedFailed503 = new AtomicBoolean(false);
+    AtomicBoolean notExpectedFailed = new AtomicBoolean(false);
+
+    for (int i = 0; i < 10; i++) {
+      for (int j = 0; j < 10; j++) {
+        String name = "t-" + i + "-" + j;
+        new Thread(name) {
+          public void run() {
+            try {
+              String result = template.getForObject(url + "?name={1}", String.class, "hello");
+              if (!"\"hello\"".equals(result)) {
+                notExpectedFailed.set(true);
+              }
+            } catch (Exception e) {
+              if (!(e instanceof HttpServerErrorException)) {
+                notExpectedFailed.set(true);
+              } else {
+                if (((HttpServerErrorException) e).getStatusCode().value() == 503) {
+                  expectedFailed503.set(true);
+                }
+              }
+            }
+            latch.countDown();
+          }
+        }.start();
+      }
+      Thread.sleep(100);
+    }
+
+    latch.await(20, TimeUnit.SECONDS);
+    TestMgr.check(true, expectedFailed503.get());
+    TestMgr.check(false, notExpectedFailed.get());
+  }
+
+  private void testEdgeServiceInstanceIsolation() throws Exception {
+    String url = edgePrefix + "/business/v2/testEdgeServiceInstanceIsolation";
+
+    CountDownLatch latch = new CountDownLatch(100);
+    AtomicBoolean expectedFailed502 = new AtomicBoolean(false);
+    AtomicBoolean expectedFailed503 = new AtomicBoolean(false);
+    AtomicBoolean notExpectedFailed = new AtomicBoolean(false);
+
+    for (int i = 0; i < 10; i++) {
+      for (int j = 0; j < 10; j++) {
+        String name = "t-" + i + "-" + j;
+        new Thread(name) {
+          public void run() {
+            try {
+              String result = template.getForObject(url + "?name={1}", String.class, "hello");
+              if (!"\"hello\"".equals(result)) {
+                notExpectedFailed.set(true);
+              }
+            } catch (Exception e) {
+              if (!(e instanceof HttpServerErrorException)) {
+                notExpectedFailed.set(true);
+              } else {
+                if (((HttpServerErrorException) e).getStatusCode().value() == 503) {
+                  expectedFailed503.set(true);
+                }
+                if (((HttpServerErrorException) e).getStatusCode().value() == 502) {
+                  expectedFailed502.set(true);
+                }
+              }
+            }
+            latch.countDown();
+          }
+        }.start();
+      }
+      Thread.sleep(100);
+    }
+
+    latch.await(20, TimeUnit.SECONDS);
+    TestMgr.check(true, expectedFailed502.get());
+    TestMgr.check(true, expectedFailed503.get());
+    TestMgr.check(false, notExpectedFailed.get());
+  }
+
+//  private void testEdgeServiceRetry() {
+//    String url = edgePrefix + "/business/v2/testEdgeServiceRetry";
+//    String invocationID = UUID.randomUUID().toString();
+//    String result = template.getForObject(url + "?invocationID={1}", String.class, invocationID);
+//    TestMgr.check(result, "try times: 3");
+//  }
+
+  private URIEndpointObject prepareEdge(String prefix) {
+    Microservice microservice = RegistrationManager.INSTANCE.getMicroservice();
+    MicroserviceInstance microserviceInstance = (MicroserviceInstance) DiscoveryManager.INSTANCE
+        .getAppManager()
+        .getOrCreateMicroserviceVersionRule(microservice.getAppId(), "edge", DefinitionConst.VERSION_RULE_ALL)
+        .getVersionedCache()
+        .mapData()
+        .values()
+        .stream()
+        .findFirst()
+        .get();
+    URIEndpointObject edgeAddress = new URIEndpointObject(microserviceInstance.getEndpoints().get(0));
+    edgePrefix = String.format("http://%s:%d/%s", edgeAddress.getHostOrIp(), edgeAddress.getPort(), prefix);
+    return edgeAddress;
+  }
+}
diff --git a/demo/demo-edge/edge-service/pom.xml b/demo/demo-edge/edge-service/pom.xml
index 4c322c8..59f27e7 100644
--- a/demo/demo-edge/edge-service/pom.xml
+++ b/demo/demo-edge/edge-service/pom.xml
@@ -27,7 +27,7 @@
   <name>Java Chassis::Demo::Edge::Service</name>
 
   <properties>
-    <demo.main>org.apache.servicecomb.demo.edge.service.EdgeMain</demo.main>
+    <demo.main>org.apache.servicecomb.demo.edge.EdgeMain</demo.main>
   </properties>
 
   <dependencies>
@@ -41,6 +41,10 @@
     </dependency>
     <dependency>
       <groupId>org.apache.servicecomb</groupId>
+      <artifactId>handler-governance</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb</groupId>
       <artifactId>provider-pojo</artifactId>
     </dependency>
   </dependencies>
diff --git a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/EdgeMain.java b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/EdgeMain.java
similarity index 95%
rename from demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/EdgeMain.java
rename to demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/EdgeMain.java
index 1c5aebb..15165ec 100644
--- a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/EdgeMain.java
+++ b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/EdgeMain.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.servicecomb.demo.edge.service;
+package org.apache.servicecomb.demo.edge;
 
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
 import org.apache.servicecomb.foundation.common.utils.Log4jUtils;
diff --git a/demo/demo-edge/edge-service/src/main/resources/microservice.yaml b/demo/demo-edge/edge-service/src/main/resources/microservice.yaml
index 1813c3f..4b2e12b 100644
--- a/demo/demo-edge/edge-service/src/main/resources/microservice.yaml
+++ b/demo/demo-edge/edge-service/src/main/resources/microservice.yaml
@@ -39,9 +39,9 @@
   handler:
     chain:
       Consumer:
-        default: auth,loadbalance
+        default: auth,loadbalance,instance-isolation-consumer,instance-bulkhead-consumer
         service:
-          auth: loadbalance
+          auth: loadbalance,instance-isolation-consumer,instance-bulkhead-consumer
   http:
     dispatcher:
       edge:
@@ -80,4 +80,38 @@
               prefixSegmentCount: 1
               path: "/http/business/v1/dec.*"
               microserviceName: business
-              versionRule: 1.1.0
\ No newline at end of file
+              versionRule: 1.1.0
+
+# 服务治理配置
+  matchGroup:
+    testEdgeServiceRetry: |
+      matches:
+        - apiPath:
+            exact: "/business/v2/testEdgeServiceRetry"
+    testEdgeServiceInstanceIsolation: |
+      matches:
+        - apiPath:
+            exact: "/business/v2/testEdgeServiceInstanceIsolation"
+    testEdgeServiceInstanceBulkhead: |
+      matches:
+        - apiPath:
+            exact: "/business/v2/testEdgeServiceInstanceBulkhead"
+# retry not supported now
+#  retry:
+#    testEdgeServiceRetry: |
+#      maxAttempts: 2
+#      retryOnSame: 0
+  instanceIsolation:
+    testEdgeServiceInstanceIsolation: |
+      minimumNumberOfCalls: 10
+      slidingWindowSize: 20
+      slidingWindowType: COUNT_BASED
+      failureRateThreshold: 50
+      slowCallRateThreshold: 100
+      slowCallDurationThreshold: 3000
+      waitDurationInOpenState: 10000 
+      permittedNumberOfCallsInHalfOpenState: 10
+  instanceBulkhead:
+    testEdgeServiceInstanceBulkhead: |
+      maxConcurrentCalls: 1
+      maxWaitDuration: 1
diff --git a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filterext/IsolationDiscoveryFilter.java b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filterext/IsolationDiscoveryFilter.java
index 2def423..bbbda45 100644
--- a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filterext/IsolationDiscoveryFilter.java
+++ b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filterext/IsolationDiscoveryFilter.java
@@ -75,7 +75,7 @@
   @Override
   public boolean enabled() {
     return DynamicPropertyFactory.getInstance()
-        .getBooleanProperty(ISOLATION_FILTER_ENABLED, true)
+        .getBooleanProperty(ISOLATION_FILTER_ENABLED, false)
         .get();
   }
 
diff --git a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceHandler2.java b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceHandler2.java
index 56cd93f..e2a353d 100644
--- a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceHandler2.java
+++ b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceHandler2.java
@@ -73,6 +73,7 @@
   public static void beforeClass() {
     ConfigUtil.installDynamicConfig();
     ArchaiusUtils.setProperty("servicecomb.loadbalance.userDefinedEndpoint.enabled", "true");
+    ArchaiusUtils.setProperty("servicecomb.loadbalance.filter.isolation.enabled", "true");
     scbEngine = SCBBootstrap.createSCBEngineForTest().run();
   }
 
