未验证 提交 beda5261 编写于 作者: wu-sheng's avatar wu-sheng 提交者: GitHub

Merge pull request #884 from peng-yongsheng/feature/http_json

The instance heart beat implementation of http JSON protocol.
......@@ -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>
\ No newline at end of file
/*
* 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);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册