Merge pull request #884 from peng-yongsheng/feature/http_json
The instance heart beat implementation of http JSON protocol.
This commit is contained in:
commit
beda526140
|
|
@ -61,5 +61,15 @@
|
|||
<artifactId>segment-parser-define</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.skywalking</groupId>
|
||||
<artifactId>jvm-define</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.skywalking</groupId>
|
||||
<artifactId>metric-define</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* 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.skywalking.apm.collector.agent.jetty.provider.handler;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import java.io.IOException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import org.apache.skywalking.apm.collector.analysis.metric.define.AnalysisMetricModule;
|
||||
import org.apache.skywalking.apm.collector.analysis.metric.define.service.IInstanceHeartBeatService;
|
||||
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
|
||||
import org.apache.skywalking.apm.collector.server.jetty.ArgumentsParseException;
|
||||
import org.apache.skywalking.apm.collector.server.jetty.JettyHandler;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @author peng-yongsheng
|
||||
*/
|
||||
public class InstanceHeartBeatServletHandler extends JettyHandler {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(InstanceHeartBeatServletHandler.class);
|
||||
|
||||
private final IInstanceHeartBeatService instanceHeartBeatService;
|
||||
private final Gson gson = new Gson();
|
||||
|
||||
private static final String INSTANCE_ID = "ii";
|
||||
private static final String HEARTBEAT_TIME = "ht";
|
||||
|
||||
public InstanceHeartBeatServletHandler(ModuleManager moduleManager) {
|
||||
this.instanceHeartBeatService = moduleManager.find(AnalysisMetricModule.NAME).getService(IInstanceHeartBeatService.class);
|
||||
}
|
||||
|
||||
@Override public String pathSpec() {
|
||||
return "/instance/heartbeat";
|
||||
}
|
||||
|
||||
@Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException, IOException {
|
||||
JsonObject responseJson = new JsonObject();
|
||||
try {
|
||||
JsonObject heartBeat = gson.fromJson(req.getReader(), JsonObject.class);
|
||||
int instanceId = heartBeat.get(INSTANCE_ID).getAsInt();
|
||||
long heartBeatTime = heartBeat.get(HEARTBEAT_TIME).getAsLong();
|
||||
|
||||
instanceHeartBeatService.heartBeat(instanceId, heartBeatTime);
|
||||
} catch (IOException e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
}
|
||||
return responseJson;
|
||||
}
|
||||
}
|
||||
|
|
@ -26,7 +26,5 @@ import org.apache.skywalking.apm.collector.core.module.Service;
|
|||
public interface IInstanceIDService extends Service {
|
||||
int getOrCreateByAgentUUID(int applicationId, String agentUUID, long registerTime, String osInfo);
|
||||
|
||||
void recover(int instanceId, int applicationId, long registerTime, String osInfo);
|
||||
|
||||
int getOrCreateByAddressId(int applicationId, int addressId, long registerTime);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,8 +29,6 @@ import org.apache.skywalking.apm.collector.core.module.ModuleManager;
|
|||
import org.apache.skywalking.apm.collector.core.util.BooleanUtils;
|
||||
import org.apache.skywalking.apm.collector.core.util.Const;
|
||||
import org.apache.skywalking.apm.collector.core.util.ObjectUtils;
|
||||
import org.apache.skywalking.apm.collector.storage.StorageModule;
|
||||
import org.apache.skywalking.apm.collector.storage.dao.register.IInstanceRegisterDAO;
|
||||
import org.apache.skywalking.apm.collector.storage.table.register.Instance;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
|
@ -45,7 +43,6 @@ public class InstanceIDService implements IInstanceIDService {
|
|||
private final ModuleManager moduleManager;
|
||||
private InstanceCacheService instanceCacheService;
|
||||
private Graph<Instance> instanceRegisterGraph;
|
||||
private IInstanceRegisterDAO instanceRegisterDAO;
|
||||
private ApplicationCacheService applicationCacheService;
|
||||
|
||||
public InstanceIDService(ModuleManager moduleManager) {
|
||||
|
|
@ -66,13 +63,6 @@ public class InstanceIDService implements IInstanceIDService {
|
|||
return instanceRegisterGraph;
|
||||
}
|
||||
|
||||
private IInstanceRegisterDAO getInstanceRegisterDAO() {
|
||||
if (ObjectUtils.isEmpty(instanceRegisterDAO)) {
|
||||
instanceRegisterDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceRegisterDAO.class);
|
||||
}
|
||||
return instanceRegisterDAO;
|
||||
}
|
||||
|
||||
private ApplicationCacheService getApplicationCacheService() {
|
||||
if (ObjectUtils.isEmpty(applicationCacheService)) {
|
||||
this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class);
|
||||
|
|
@ -123,19 +113,4 @@ public class InstanceIDService implements IInstanceIDService {
|
|||
}
|
||||
return instanceId;
|
||||
}
|
||||
|
||||
@Override public void recover(int instanceId, int applicationId, long registerTime, String osInfo) {
|
||||
logger.debug("instance recover, instance id: {}, application id: {}, register time: {}", instanceId, applicationId, registerTime);
|
||||
Instance instance = new Instance();
|
||||
instance.setId(String.valueOf(instanceId));
|
||||
instance.setApplicationId(applicationId);
|
||||
instance.setApplicationCode(getApplicationCacheService().getApplicationById(applicationId).getApplicationCode());
|
||||
instance.setAgentUUID("");
|
||||
instance.setRegisterTime(registerTime);
|
||||
instance.setHeartBeatTime(registerTime);
|
||||
instance.setInstanceId(instanceId);
|
||||
instance.setOsInfo(osInfo);
|
||||
|
||||
getInstanceRegisterDAO().save(instance);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue