[ 
https://issues.apache.org/jira/browse/SCB-582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16478372#comment-16478372
 ] 

ASF GitHub Bot commented on SCB-582:
------------------------------------

wujimin commented on a change in pull request #704: [SCB-582]Provide a way to 
protect instance removal
URL: 
https://github.com/apache/incubator-servicecomb-java-chassis/pull/704#discussion_r188819940
 
 

 ##########
 File path: 
service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/SimpleMicroserviceInstancePing.java
 ##########
 @@ -0,0 +1,47 @@
+/*
+ * 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.serviceregistry.consumer;
+
+import java.io.IOException;
+import java.net.Socket;
+
+import org.apache.servicecomb.foundation.common.net.IpPort;
+import org.apache.servicecomb.foundation.common.net.NetUtils;
+import 
org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
+
+/**
+ * Simple implementation of .MicroserviceInstancePing using telnet
+ */
+public class SimpleMicroserviceInstancePing implements 
MicroserviceInstancePing {
+  @Override
+  public int getOrder() {
+    return 100;
+  }
+
+  @Override
+  public boolean ping(MicroserviceInstance instance) {
+    if (instance.getEndpoints() != null && instance.getEndpoints().size() > 0) 
{
+      IpPort ipPort = 
NetUtils.parseIpPortFromURI(instance.getEndpoints().get(0));
+      try (Socket s = new Socket(ipPort.getHostOrIp(), ipPort.getPort())) {
 
 Review comment:
   lost heartbeat means tens of seconds passed
   if deployment managered by docker, in this time, maybe already start another 
microservce instance for this ip and port

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> Provide a way to protection for instance removal
> ------------------------------------------------
>
>                 Key: SCB-582
>                 URL: https://issues.apache.org/jira/browse/SCB-582
>             Project: Apache ServiceComb
>          Issue Type: New Feature
>          Components: Java-Chassis
>            Reporter: liubao
>            Assignee: liubao
>            Priority: Major
>             Fix For: java-chassis-1.0.0-m2
>
>
> In some applications, each microservice have fixed instances and rarely 
> change. But for some reason, heartbeat to service center is not stable. In 
> this scenario, instances will get lost and result in invocation failure. 
>  
> To deal with this problem, we need to provide a way to protect instance 
> removal. That's when there is instance removal, we first check(ping)the 
> instance to see if it is reachable. If it's reachable, we don't remove it. 
>  
> Since this protection is not fit for docker applications or scenarios where 
> instances are constantly removed and added, and resources(hosts ,ip, port) 
> are reused, this feature is an optional feature and users can open it when 
> necessary. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to