diff --git a/spring-cloud-tencent-examples/lossless-example/lossless-callee-service/src/main/resources/bootstrap.yml b/spring-cloud-tencent-examples/lossless-example/lossless-callee-service/src/main/resources/bootstrap.yml index cdd07b831..4e8c2a8ce 100644 --- a/spring-cloud-tencent-examples/lossless-example/lossless-callee-service/src/main/resources/bootstrap.yml +++ b/spring-cloud-tencent-examples/lossless-example/lossless-callee-service/src/main/resources/bootstrap.yml @@ -20,8 +20,9 @@ spring: port: 28084 lossless: enabled: true - healthCheckPath: /lossless/callee/health - healthCheckInterval: 5000 + port: 28084 + #healthCheckPath: /actuator/health + #healthCheckInterval: 5000 lossless: healthy: delay: @@ -32,5 +33,4 @@ management: exposure: include: - polaris-discovery - - polaris-ratelimit - - polaris-config \ No newline at end of file + - health \ No newline at end of file diff --git a/spring-cloud-tencent-examples/lossless-example/lossless-nacos-callee-service/src/main/resources/bootstrap.yml b/spring-cloud-tencent-examples/lossless-example/lossless-nacos-callee-service/src/main/resources/bootstrap.yml index 1487942e9..a621c8c49 100644 --- a/spring-cloud-tencent-examples/lossless-example/lossless-nacos-callee-service/src/main/resources/bootstrap.yml +++ b/spring-cloud-tencent-examples/lossless-example/lossless-nacos-callee-service/src/main/resources/bootstrap.yml @@ -6,23 +6,15 @@ spring: cloud: nacos: discovery: - server-addr: 9.134.5.52:8848 + server-addr: 127.0.0.1:8848 enabled: true - namespace: "test1" polaris: lossless: enabled: true - healthCheckPath: /lossless/nacos/callee/health + port: 28085 + healthCheckPath: /actuator/health healthCheckInterval: 5000 lossless: healthy: delay: - second: 20 -management: - endpoints: - web: - exposure: - include: - - polaris-discovery - - polaris-ratelimit - - polaris-config \ No newline at end of file + second: 20 \ No newline at end of file diff --git a/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-a/pom.xml b/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-a/pom.xml index ce6588118..580f3679c 100644 --- a/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-a/pom.xml +++ b/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-a/pom.xml @@ -28,6 +28,12 @@ org.springframework.boot spring-boot-starter-actuator + + + com.tencent.cloud + spring-cloud-tencent-lossless-plugin + + diff --git a/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-a/src/main/resources/application.yml b/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-a/src/main/resources/application.yml index 787baac99..c0bc7c4fb 100644 --- a/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-a/src/main/resources/application.yml +++ b/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-a/src/main/resources/application.yml @@ -33,6 +33,11 @@ spring: enabled: true rejectRequestTipsFilePath: reject-tips.html maxQueuingTime: 500 + lossless: + enabled: true + port: 28011 + healthCheckPath: /actuator/health + healthCheckInterval: 5000 tencent: metadata: content: @@ -40,11 +45,14 @@ spring: region: huanan management: endpoints: + health: + enabled: true web: exposure: include: - polaris-discovery - polaris-ratelimit - polaris-config + - health label: key-value: user:zhangsan diff --git a/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-b/pom.xml b/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-b/pom.xml index 0f3495e9e..258c7abfb 100644 --- a/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-b/pom.xml +++ b/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-b/pom.xml @@ -28,6 +28,11 @@ org.springframework.boot spring-boot-starter-actuator + + + com.tencent.cloud + spring-cloud-tencent-lossless-plugin + diff --git a/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-b/src/main/resources/application.yml b/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-b/src/main/resources/application.yml index b74bef5a1..f44130629 100644 --- a/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-b/src/main/resources/application.yml +++ b/spring-cloud-tencent-examples/quickstart-example/quickstart-callee-service-b/src/main/resources/application.yml @@ -32,6 +32,11 @@ spring: ratelimit: enabled: true maxQueuingTime: 500 + lossless: + enabled: true + port: 28012 + healthCheckPath: /actuator/health + healthCheckInterval: 5000 tencent: metadata: content: @@ -45,5 +50,6 @@ management: - polaris-discovery - polaris-ratelimit - polaris-config + - health label: key-value: user2:lisi diff --git a/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/pom.xml b/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/pom.xml index cc72331c6..3d8e23b61 100644 --- a/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/pom.xml +++ b/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/pom.xml @@ -38,6 +38,11 @@ org.springframework.boot spring-boot-starter-actuator + + + com.tencent.cloud + spring-cloud-tencent-lossless-plugin + diff --git a/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/resources/application.yml b/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/resources/application.yml index 6383b4505..5150ab7bc 100644 --- a/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/resources/application.yml +++ b/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/resources/application.yml @@ -28,6 +28,11 @@ spring: # pushgateway: # enabled: true # address: 127.0.0.1:9091 + lossless: + enabled: true + port: 28013 + healthCheckPath: /actuator/health + healthCheckInterval: 5000 tencent: rpc-enhancement: enabled: true @@ -46,3 +51,4 @@ management: include: - polaris-discovery - polaris-circuit-breaker + - health diff --git a/spring-cloud-tencent-examples/quickstart-example/quickstart-gateway-service/pom.xml b/spring-cloud-tencent-examples/quickstart-example/quickstart-gateway-service/pom.xml index 9bfb76041..5cc1b3de4 100644 --- a/spring-cloud-tencent-examples/quickstart-example/quickstart-gateway-service/pom.xml +++ b/spring-cloud-tencent-examples/quickstart-example/quickstart-gateway-service/pom.xml @@ -28,6 +28,16 @@ org.springframework.cloud spring-cloud-starter-gateway + + + org.springframework.boot + spring-boot-starter-actuator + + + + com.tencent.cloud + spring-cloud-tencent-lossless-plugin + diff --git a/spring-cloud-tencent-examples/quickstart-example/quickstart-gateway-service/src/main/resources/application.yml b/spring-cloud-tencent-examples/quickstart-example/quickstart-gateway-service/src/main/resources/application.yml index fd9dd9f05..e9b286aa0 100644 --- a/spring-cloud-tencent-examples/quickstart-example/quickstart-gateway-service/src/main/resources/application.yml +++ b/spring-cloud-tencent-examples/quickstart-example/quickstart-gateway-service/src/main/resources/application.yml @@ -27,6 +27,11 @@ spring: stat: enabled: true port: 28081 + lossless: + enabled: true + port: 28014 + healthCheckPath: /actuator/health + healthCheckInterval: 5000 gateway: discovery: locator: diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisSDKContextManager.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisSDKContextManager.java index bbab8c26e..a09bfd81c 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisSDKContextManager.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisSDKContextManager.java @@ -158,57 +158,7 @@ public class PolarisSDKContextManager { } public void init() { - if (null == serviceSdkContext) { - try { - // init SDKContext - serviceSdkContext = SDKContext.initContextByConfig(properties.configuration(modifierList, - () -> environment.getProperty("spring.cloud.client.ip-address"), - () -> environment.getProperty("spring.cloud.polaris.local-port", Integer.class, 0))); - serviceSdkContext.init(); - - // init ProviderAPI - providerAPI = DiscoveryAPIFactory.createProviderAPIByContext(serviceSdkContext); - - // init losslessAPI - losslessAPI = DiscoveryAPIFactory.createLosslessAPIByContext(serviceSdkContext); - - // init ConsumerAPI - consumerAPI = DiscoveryAPIFactory.createConsumerAPIByContext(serviceSdkContext); - - // init RouterAPI - routerAPI = RouterAPIFactory.createRouterAPIByContext(serviceSdkContext); - - // init CircuitBreakAPI - circuitBreakAPI = CircuitBreakAPIFactory.createCircuitBreakAPIByContext(serviceSdkContext); - - // init LimitAPI - limitAPI = LimitAPIFactory.createLimitAPIByContext(serviceSdkContext); - - // init AssemblyAPI - assemblyAPI = AssemblyAPIFactory.createAssemblyAPIByContext(serviceSdkContext); - - // add shutdown hook - Runtime.getRuntime().addShutdownHook(new Thread(() -> { - long startTimestamp = System.currentTimeMillis(); - long delay = 0; - while (true) { - if (!isRegistered || delay >= 60000) { - innerDestroy(); - break; - } - else { - delay = System.currentTimeMillis() - startTimestamp; - } - } - })); - LOG.info("create Polaris SDK context successfully. properties: {}, ", properties); - } - catch (Throwable throwable) { - LOG.error("create Polaris SDK context failed. properties: {}, ", properties, throwable); - throw throwable; - } - } - + initService(); initConfig(); } @@ -225,37 +175,37 @@ public class PolarisSDKContextManager { } public SDKContext getSDKContext() { - init(); + initService(); return serviceSdkContext; } public ProviderAPI getProviderAPI() { - init(); + initService(); return providerAPI; } public LosslessAPI getLosslessAPI() { - init(); + initService(); return losslessAPI; } public ConsumerAPI getConsumerAPI() { - init(); + initService(); return consumerAPI; } public RouterAPI getRouterAPI() { - init(); + initService(); return routerAPI; } public CircuitBreakAPI getCircuitBreakAPI() { - init(); + initService(); return circuitBreakAPI; } public LimitAPI getLimitAPI() { - init(); + initService(); return limitAPI; } @@ -268,6 +218,59 @@ public class PolarisSDKContextManager { return configSDKContext; } + public void initService() { + if (null == serviceSdkContext) { + try { + // init SDKContext + serviceSdkContext = SDKContext.initContextByConfig(properties.configuration(modifierList, + () -> environment.getProperty("spring.cloud.client.ip-address"), + () -> environment.getProperty("spring.cloud.polaris.local-port", Integer.class, 0))); + serviceSdkContext.init(); + + // init ProviderAPI + providerAPI = DiscoveryAPIFactory.createProviderAPIByContext(serviceSdkContext); + + // init losslessAPI + losslessAPI = DiscoveryAPIFactory.createLosslessAPIByContext(serviceSdkContext); + + // init ConsumerAPI + consumerAPI = DiscoveryAPIFactory.createConsumerAPIByContext(serviceSdkContext); + + // init RouterAPI + routerAPI = RouterAPIFactory.createRouterAPIByContext(serviceSdkContext); + + // init CircuitBreakAPI + circuitBreakAPI = CircuitBreakAPIFactory.createCircuitBreakAPIByContext(serviceSdkContext); + + // init LimitAPI + limitAPI = LimitAPIFactory.createLimitAPIByContext(serviceSdkContext); + + // init AssemblyAPI + assemblyAPI = AssemblyAPIFactory.createAssemblyAPIByContext(serviceSdkContext); + + // add shutdown hook + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + long startTimestamp = System.currentTimeMillis(); + long delay = 0; + while (true) { + if (!isRegistered || delay >= 60000) { + innerDestroy(); + break; + } + else { + delay = System.currentTimeMillis() - startTimestamp; + } + } + })); + LOG.info("create Polaris SDK context successfully. properties: {}, ", properties); + } + catch (Throwable throwable) { + LOG.error("create Polaris SDK context failed. properties: {}, ", properties, throwable); + throw throwable; + } + } + } + public void initConfig() { // get modifiers for configuration. List configModifierList = new ArrayList<>();