Переглянути джерело

Some structure refactor for Sentinel Dashboard

Signed-off-by: Eric Zhao <sczyh16@gmail.com>
master
Eric Zhao 6 роки тому
джерело
коміт
9a27f395e6
10 змінених файлів з 38 додано та 35 видалено
  1. +12
    -9
      sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/client/SentinelApiClient.java
  2. +2
    -2
      sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/repository/rule/InMemDegradeRuleStore.java
  3. +2
    -2
      sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/repository/rule/InMemFlowRuleStore.java
  4. +2
    -2
      sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/repository/rule/InMemSystemRuleStore.java
  5. +2
    -2
      sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/repository/rule/InMemoryRuleRepositoryAdapter.java
  6. +1
    -1
      sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/repository/rule/RuleRepository.java
  7. +5
    -5
      sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/view/DegradeController.java
  8. +5
    -5
      sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/view/FlowController.java
  9. +2
    -2
      sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/view/ResourceController.java
  10. +5
    -5
      sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/view/SystemController.java

sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/inmem/HttpHelper.java → sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/client/SentinelApiClient.java Переглянути файл

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.taobao.csp.sentinel.dashboard.inmem;
package com.taobao.csp.sentinel.dashboard.client;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
@@ -53,31 +53,31 @@ import org.springframework.stereotype.Component;
* @author leyou
*/
@Component
public class HttpHelper {
public class SentinelApiClient {

private static Logger logger = LoggerFactory.getLogger(HttpHelper.class);
private static Logger logger = LoggerFactory.getLogger(SentinelApiClient.class);
private static final Charset defaultCharset = Charset.forName(SentinelConfig.charset());

private CloseableHttpAsyncClient httpclient;
private CloseableHttpAsyncClient httpClient;

private final String resourceUrlPath = "jsonTree";
private final String clusterNodePath = "clusterNode";

private final String getRulesPath = "getRules";
private final String setRulesPath = "setRules";
private final String flowRuleType = "flow";
private final String degradeRuleType = "degrade";
private final String systemRuleType = "system";

public HttpHelper() {
public SentinelApiClient() {
IOReactorConfig ioConfig = IOReactorConfig.custom().setConnectTimeout(3000).setSoTimeout(3000)
.setIoThreadCount(Runtime.getRuntime().availableProcessors() * 2).build();
httpclient = HttpAsyncClients.custom().setRedirectStrategy(new DefaultRedirectStrategy() {
httpClient = HttpAsyncClients.custom().setRedirectStrategy(new DefaultRedirectStrategy() {
@Override
protected boolean isRedirectable(final String method) {
return false;
}
}).setMaxConnTotal(4000).setMaxConnPerRoute(1000).setDefaultIOReactorConfig(ioConfig).build();
httpclient.start();
httpClient.start();
}

public List<NodeVo> fetchResourceOfMachine(String ip, int port, String type) {
@@ -282,7 +282,7 @@ public class HttpHelper {
final HttpGet httpGet = new HttpGet(url);
final CountDownLatch latch = new CountDownLatch(1);
final AtomicReference<String> reference = new AtomicReference<>();
httpclient.execute(httpGet, new FutureCallback<HttpResponse>() {
httpClient.execute(httpGet, new FutureCallback<HttpResponse>() {
@Override
public void completed(final HttpResponse response) {
try {
@@ -324,4 +324,7 @@ public class HttpHelper {
return EntityUtils.toString(response.getEntity(), charset != null ? charset : defaultCharset);
}

public void close() throws Exception {
httpClient.close();
}
}

sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/inmem/InMemDegradeRuleStore.java → sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/repository/rule/InMemDegradeRuleStore.java Переглянути файл

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.taobao.csp.sentinel.dashboard.inmem;
package com.taobao.csp.sentinel.dashboard.repository.rule;

import java.util.concurrent.atomic.AtomicLong;

@@ -24,7 +24,7 @@ import org.springframework.stereotype.Component;
* @author leyou
*/
@Component
public class InMemDegradeRuleStore extends InMemRepositoryAdapter<DegradeRuleEntity> {
public class InMemDegradeRuleStore extends InMemoryRuleRepositoryAdapter<DegradeRuleEntity> {

private static AtomicLong ids = new AtomicLong(0);


sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/inmem/InMemFlowRuleStore.java → sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/repository/rule/InMemFlowRuleStore.java Переглянути файл

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.taobao.csp.sentinel.dashboard.inmem;
package com.taobao.csp.sentinel.dashboard.repository.rule;

import java.util.concurrent.atomic.AtomicLong;

@@ -26,7 +26,7 @@ import org.springframework.stereotype.Component;
* @author leyou
*/
@Component
public class InMemFlowRuleStore extends InMemRepositoryAdapter<FlowRuleEntity> {
public class InMemFlowRuleStore extends InMemoryRuleRepositoryAdapter<FlowRuleEntity> {
private static AtomicLong ids = new AtomicLong(0);

@Override

sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/inmem/InMemSystemRuleStore.java → sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/repository/rule/InMemSystemRuleStore.java Переглянути файл

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.taobao.csp.sentinel.dashboard.inmem;
package com.taobao.csp.sentinel.dashboard.repository.rule;

import java.util.concurrent.atomic.AtomicLong;

@@ -24,7 +24,7 @@ import org.springframework.stereotype.Component;
* @author leyou
*/
@Component
public class InMemSystemRuleStore extends InMemRepositoryAdapter<SystemRuleEntity> {
public class InMemSystemRuleStore extends InMemoryRuleRepositoryAdapter<SystemRuleEntity> {

private static AtomicLong ids = new AtomicLong(0);


sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/inmem/InMemRepositoryAdapter.java → sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/repository/rule/InMemoryRuleRepositoryAdapter.java Переглянути файл

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.taobao.csp.sentinel.dashboard.inmem;
package com.taobao.csp.sentinel.dashboard.repository.rule;

import java.util.ArrayList;
import java.util.List;
@@ -27,7 +27,7 @@ import com.taobao.csp.sentinel.dashboard.discovery.MachineInfo;
/**
* @author leyou
*/
public abstract class InMemRepositoryAdapter<T extends RuleEntity> implements RuleRepository<T, Long> {
public abstract class InMemoryRuleRepositoryAdapter<T extends RuleEntity> implements RuleRepository<T, Long> {
/**
* {@code <machine, <id, rule>>}
*/

sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/inmem/RuleRepository.java → sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/repository/rule/RuleRepository.java Переглянути файл

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.taobao.csp.sentinel.dashboard.inmem;
package com.taobao.csp.sentinel.dashboard.repository.rule;

import java.util.List;


+ 5
- 5
sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/view/DegradeController.java Переглянути файл

@@ -22,8 +22,8 @@ import com.alibaba.csp.sentinel.util.StringUtil;

import com.taobao.csp.sentinel.dashboard.datasource.entity.DegradeRuleEntity;
import com.taobao.csp.sentinel.dashboard.discovery.MachineInfo;
import com.taobao.csp.sentinel.dashboard.inmem.HttpHelper;
import com.taobao.csp.sentinel.dashboard.inmem.InMemDegradeRuleStore;
import com.taobao.csp.sentinel.dashboard.client.SentinelApiClient;
import com.taobao.csp.sentinel.dashboard.repository.rule.InMemDegradeRuleStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -42,7 +42,7 @@ public class DegradeController {
@Autowired
InMemDegradeRuleStore repository;
@Autowired
private HttpHelper httpHelper;
private SentinelApiClient sentinelApiClient;

@ResponseBody
@RequestMapping("/rules.json")
@@ -57,7 +57,7 @@ public class DegradeController {
return Result.ofFail(-1, "port can't be null");
}
try {
List<DegradeRuleEntity> rules = httpHelper.fetchDegradeRuleOfMachine(app, ip, port);
List<DegradeRuleEntity> rules = sentinelApiClient.fetchDegradeRuleOfMachine(app, ip, port);
rules = repository.saveAll(rules);
return Result.ofSuccess(rules);
} catch (Throwable throwable) {
@@ -195,6 +195,6 @@ public class DegradeController {

private boolean publishRules(String app, String ip, Integer port) {
List<DegradeRuleEntity> rules = repository.findAllByMachine(MachineInfo.of(app, ip, port));
return httpHelper.setDegradeRuleOfMachine(app, ip, port, rules);
return sentinelApiClient.setDegradeRuleOfMachine(app, ip, port, rules);
}
}

+ 5
- 5
sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/view/FlowController.java Переглянути файл

@@ -22,8 +22,8 @@ import com.alibaba.csp.sentinel.util.StringUtil;

import com.taobao.csp.sentinel.dashboard.datasource.entity.FlowRuleEntity;
import com.taobao.csp.sentinel.dashboard.discovery.MachineInfo;
import com.taobao.csp.sentinel.dashboard.inmem.HttpHelper;
import com.taobao.csp.sentinel.dashboard.inmem.InMemFlowRuleStore;
import com.taobao.csp.sentinel.dashboard.client.SentinelApiClient;
import com.taobao.csp.sentinel.dashboard.repository.rule.InMemFlowRuleStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -45,7 +45,7 @@ public class FlowController {
private InMemFlowRuleStore repository;

@Autowired
private HttpHelper httpHelper;
private SentinelApiClient sentinelApiClient;

@ResponseBody
@RequestMapping("/rules.json")
@@ -60,7 +60,7 @@ public class FlowController {
return Result.ofFail(-1, "port can't be null");
}
try {
List<FlowRuleEntity> rules = httpHelper.fetchFlowRuleOfMachine(app, ip, port);
List<FlowRuleEntity> rules = sentinelApiClient.fetchFlowRuleOfMachine(app, ip, port);
rules = repository.saveAll(rules);
return Result.ofSuccess(rules);
} catch (Throwable throwable) {
@@ -244,6 +244,6 @@ public class FlowController {

private boolean publishRules(String app, String ip, Integer port) {
List<FlowRuleEntity> rules = repository.findAllByMachine(MachineInfo.of(app, ip, port));
return httpHelper.setFlowRuleOfMachine(app, ip, port, rules);
return sentinelApiClient.setFlowRuleOfMachine(app, ip, port, rules);
}
}

+ 2
- 2
sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/view/ResourceController.java Переглянути файл

@@ -22,7 +22,7 @@ import com.alibaba.csp.sentinel.util.StringUtil;
import com.alibaba.csp.sentinel.command.vo.NodeVo;

import com.taobao.csp.sentinel.dashboard.domain.ResourceTreeNode;
import com.taobao.csp.sentinel.dashboard.inmem.HttpHelper;
import com.taobao.csp.sentinel.dashboard.client.SentinelApiClient;
import com.taobao.csp.sentinel.dashboard.view.vo.ResourceVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,7 +41,7 @@ public class ResourceController {

private static Logger logger = LoggerFactory.getLogger(ResourceController.class);
@Autowired
HttpHelper httpFetcher;
SentinelApiClient httpFetcher;

/**
* Fetch real time statistics info of the machine.


+ 5
- 5
sentinel-dashboard/src/main/java/com/taobao/csp/sentinel/dashboard/view/SystemController.java Переглянути файл

@@ -22,8 +22,8 @@ import com.alibaba.csp.sentinel.util.StringUtil;

import com.taobao.csp.sentinel.dashboard.datasource.entity.SystemRuleEntity;
import com.taobao.csp.sentinel.dashboard.discovery.MachineInfo;
import com.taobao.csp.sentinel.dashboard.inmem.HttpHelper;
import com.taobao.csp.sentinel.dashboard.inmem.InMemSystemRuleStore;
import com.taobao.csp.sentinel.dashboard.client.SentinelApiClient;
import com.taobao.csp.sentinel.dashboard.repository.rule.InMemSystemRuleStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -43,7 +43,7 @@ public class SystemController {
@Autowired
private InMemSystemRuleStore repository;
@Autowired
private HttpHelper httpHelper;
private SentinelApiClient sentinelApiClient;

@ResponseBody
@RequestMapping("/rules.json")
@@ -58,7 +58,7 @@ public class SystemController {
return Result.ofFail(-1, "port can't be null");
}
try {
List<SystemRuleEntity> rules = httpHelper.fetchSystemRuleOfMachine(app, ip, port);
List<SystemRuleEntity> rules = sentinelApiClient.fetchSystemRuleOfMachine(app, ip, port);
rules = repository.saveAll(rules);
return Result.ofSuccess(rules);
} catch (Throwable throwable) {
@@ -209,6 +209,6 @@ public class SystemController {

private boolean publishRules(String app, String ip, Integer port) {
List<SystemRuleEntity> rules = repository.findAllByMachine(MachineInfo.of(app, ip, port));
return httpHelper.setSystemRuleOfMachine(app, ip, port, rules);
return sentinelApiClient.setSystemRuleOfMachine(app, ip, port, rules);
}
}

Завантаження…
Відмінити
Зберегти