Skip to content

Commit 62d354c

Browse files
committed
Merge branch 'spring-boot'
close #116
2 parents 89384c0 + a1acf8f commit 62d354c

34 files changed

+235
-63
lines changed

mse-simple-demo/A/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ RUN --mount=type=cache,target=/root/.m2/repository/ \
3636

3737
EXPOSE 20001
3838
ENTRYPOINT ["sh", "-c"]
39-
CMD ["java -jar /app/target/A-1.0.0.jar"]
39+
CMD ["java -jar /app/target/A.jar"]

mse-simple-demo/A/build.sh

+5-2
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,8 @@ set -e
33

44
cd "$(dirname "$0")"
55

6-
mvn clean package
7-
docker build . -t spring-cloud-a:1.0.0
6+
docker build . -t ${REGISTRY}spring-cloud-a:1.1.0
7+
8+
if [ -n "${REGISTRY}" ]; then
9+
docker push ${REGISTRY}spring-cloud-a:1.1.0
10+
fi

mse-simple-demo/A/pom.xml

+2-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.alibabacloud.mse.demo</groupId>
77
<artifactId>A</artifactId>
8-
<version>1.0.0</version>
8+
<version>1.1.0</version>
99
<packaging>jar</packaging>
1010

1111
<name>A</name>
@@ -107,8 +107,7 @@
107107
<artifactId>spring-boot-maven-plugin</artifactId>
108108
</plugin>
109109
</plugins>
110+
<finalName>${project.artifactId}</finalName>
110111
</build>
111112

112-
113113
</project>
114-

mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/AApplication.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.apache.commons.lang3.StringUtils;
55
import org.springframework.boot.SpringApplication;
66
import org.springframework.boot.autoconfigure.SpringBootApplication;
7+
import org.springframework.boot.web.client.RestTemplateBuilder;
78
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
89
import org.springframework.context.annotation.Bean;
910
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -24,12 +25,20 @@ public static void main(String[] args) {
2425
SpringApplication.run(AApplication.class, args);
2526
}
2627

27-
@Bean
28+
@Bean(name = "loadBalancedRestTemplate")
2829
@LoadBalanced
29-
RestTemplate restTemplate() {
30+
RestTemplate loadBalancedRestTemplate() {
3031
return new RestTemplate();
3132
}
3233

34+
@Bean(name = "restTemplate")
35+
RestTemplate restTemplate() {
36+
return new RestTemplateBuilder(rt -> rt.getInterceptors().add((request, body, execution) -> {
37+
request.getHeaders().add("Connection", "close");
38+
return execution.execute(request, body);
39+
})).build();
40+
}
41+
3342
@Bean(name = "serviceTag")
3443
String serviceTag() {
3544
String tag = parseServiceTag("/etc/podinfo/labels");

mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/AController.java

+20-6
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.apache.http.impl.client.HttpClientBuilder;
1313
import org.apache.http.util.EntityUtils;
1414
import org.springframework.beans.factory.annotation.Autowired;
15+
import org.springframework.beans.factory.annotation.Qualifier;
1516
import org.springframework.beans.factory.annotation.Value;
1617
import org.springframework.cloud.commons.util.InetUtils;
1718
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -30,12 +31,17 @@
3031
class AController {
3132

3233
@Autowired
33-
RestTemplate restTemplate;
34+
@Qualifier("loadBalancedRestTemplate")
35+
private RestTemplate loadBalancedRestTemplate;
36+
37+
@Autowired
38+
@Qualifier("restTemplate")
39+
private RestTemplate restTemplate;
3440

3541
@Autowired
3642
InetUtils inetUtils;
3743

38-
@Reference(application = "${dubbo.application.id}", version = "1.0.0")
44+
@Reference(application = "${dubbo.application.id}", version = "1.1.0")
3945
private HelloServiceB helloServiceB;
4046

4147
@Autowired
@@ -81,13 +87,21 @@ public String a(HttpServletRequest request) throws ExecutionException, Interrupt
8187
}
8288
}
8389

84-
String result=restTemplate.getForObject("http://sc-B/b", String.class);
90+
String result = loadBalancedRestTemplate.getForObject("http://sc-B/b", String.class);
8591
// String result = taskExecutor.submit(() ->
8692
// restTemplate.getForObject("http://sc-B/b", String.class)
8793
// ).get();
8894

89-
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + "[config=" + configValue + "]" + " -> " +
90-
result;
95+
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" +
96+
"[config=" + configValue + "]" + " -> " + result;
97+
}
98+
99+
@GetMapping("/spring_boot")
100+
public String spring_boot(HttpServletRequest request) {
101+
String result = restTemplate.getForObject("http://sc-b:20002/spring_boot", String.class);
102+
103+
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" +
104+
" -> " + result;
91105
}
92106

93107
@ApiOperation(value = "HTTP 全链路灰度入口", tags = {"入口应用"})
@@ -104,7 +118,7 @@ public String aZone(HttpServletRequest request) {
104118
}
105119
}
106120
return "A" + serviceTag + "[" + currentZone + "]" + " -> " +
107-
restTemplate.getForObject("http://sc-B/b-zone", String.class);
121+
loadBalancedRestTemplate.getForObject("http://sc-B/b-zone", String.class);
108122
}
109123

110124
@ApiOperation(value = "Dubbo 全链路灰度入口", tags = {"入口应用"})

mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/service/HelloServiceAImpl.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
import org.springframework.beans.factory.annotation.Autowired;
77
import org.springframework.cloud.commons.util.InetUtils;
88

9-
@Service(version = "1.0.0")
9+
@Service(version = "1.1.0")
1010
public class HelloServiceAImpl implements HelloServiceA {
1111

1212
@Autowired
1313
InetUtils inetUtils;
1414

15-
@Reference(application = "${dubbo.application.id}", version = "1.0.0")
15+
@Reference(application = "${dubbo.application.id}", version = "1.1.0")
1616
private HelloServiceB helloServiceB;
1717

1818
@Autowired

mse-simple-demo/B/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ RUN --mount=type=cache,target=/root/.m2/repository/ \
3636

3737
EXPOSE 20002
3838
ENTRYPOINT ["sh", "-c"]
39-
CMD ["java -jar /app/target/B-1.0.0.jar"]
39+
CMD ["java -jar /app/target/B.jar"]

mse-simple-demo/B/build.sh

+5-2
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@
22

33
cd "$(dirname "$0")"
44

5-
mvn clean package
6-
docker build . -t spring-cloud-b:1.0.0
5+
docker build . -t ${REGISTRY}spring-cloud-b:1.1.0
6+
7+
if [ -n "${REGISTRY}" ]; then
8+
docker push ${REGISTRY}spring-cloud-b:1.1.0
9+
fi

mse-simple-demo/B/pom.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.alibabacloud.mse.demo</groupId>
77
<artifactId>B</artifactId>
8-
<version>1.0.0</version>
8+
<version>1.1.0</version>
99
<packaging>jar</packaging>
1010

1111
<name>B</name>
@@ -88,6 +88,7 @@
8888
<artifactId>spring-boot-maven-plugin</artifactId>
8989
</plugin>
9090
</plugins>
91+
<finalName>${project.artifactId}</finalName>
9192
</build>
9293

9394

mse-simple-demo/B/src/main/java/com/alibabacloud/mse/demo/BApplication.java

+16-3
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,19 @@
44
import org.apache.commons.lang3.StringUtils;
55
import org.springframework.boot.SpringApplication;
66
import org.springframework.boot.autoconfigure.SpringBootApplication;
7+
import org.springframework.boot.web.client.RestTemplateBuilder;
78
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
89
import org.springframework.context.annotation.Bean;
10+
import org.springframework.http.HttpMethod;
11+
import org.springframework.http.client.ClientHttpRequest;
12+
import org.springframework.http.client.ClientHttpRequestFactory;
13+
import org.springframework.http.client.SimpleClientHttpRequestFactory;
914
import org.springframework.web.client.RestTemplate;
1015

1116
import java.io.File;
1217
import java.io.FileReader;
1318
import java.io.IOException;
19+
import java.net.URI;
1420
import java.util.Properties;
1521

1622
@SpringBootApplication
@@ -20,13 +26,20 @@ public static void main(String[] args) {
2026
SpringApplication.run(BApplication.class, args);
2127
}
2228

23-
24-
@Bean
29+
@Bean(name = "loadBalancedRestTemplate")
2530
@LoadBalanced
26-
RestTemplate restTemplate() {
31+
RestTemplate loadBalancedRestTemplate() {
2732
return new RestTemplate();
2833
}
2934

35+
@Bean(name = "restTemplate")
36+
RestTemplate restTemplate() {
37+
return new RestTemplateBuilder(rt -> rt.getInterceptors().add((request, body, execution) -> {
38+
request.getHeaders().add("Connection", "close");
39+
return execution.execute(request, body);
40+
})).build();
41+
}
42+
3043
@Bean(name = "serviceTag")
3144
String serviceTag() {
3245
String tag = parseServiceTag("/etc/podinfo/labels");

mse-simple-demo/B/src/main/java/com/alibabacloud/mse/demo/BController.java

+15-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.apache.http.impl.client.HttpClientBuilder;
88
import org.apache.http.util.EntityUtils;
99
import org.springframework.beans.factory.annotation.Autowired;
10+
import org.springframework.beans.factory.annotation.Qualifier;
1011
import org.springframework.cloud.commons.util.InetUtils;
1112
import org.springframework.web.bind.annotation.GetMapping;
1213
import org.springframework.web.bind.annotation.RestController;
@@ -19,7 +20,12 @@
1920
class BController {
2021

2122
@Autowired
22-
RestTemplate restTemplate;
23+
@Qualifier("loadBalancedRestTemplate")
24+
private RestTemplate loadBalancedRestTemplate;
25+
26+
@Autowired
27+
@Qualifier("restTemplate")
28+
private RestTemplate restTemplate;
2329

2430
@Autowired
2531
InetUtils inetUtils;
@@ -50,12 +56,18 @@ private void init() {
5056
@GetMapping("/b")
5157
public String b(HttpServletRequest request) {
5258
return "B" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " -> " +
53-
restTemplate.getForObject("http://sc-C/c", String.class);
59+
loadBalancedRestTemplate.getForObject("http://sc-C/c", String.class);
5460
}
5561

5662
@GetMapping("/b-zone")
5763
public String bZone(HttpServletRequest request) {
5864
return "B" + serviceTag + "[" + currentZone + "]" + " -> " +
59-
restTemplate.getForObject("http://sc-C/c-zone", String.class);
65+
loadBalancedRestTemplate.getForObject("http://sc-C/c-zone", String.class);
66+
}
67+
68+
@GetMapping("/spring_boot")
69+
public String spring_boot(HttpServletRequest request) {
70+
return "B" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " -> " +
71+
restTemplate.getForObject("http://sc-c:20003/spring_boot", String.class);
6072
}
6173
}

mse-simple-demo/B/src/main/java/com/alibabacloud/mse/demo/service/HelloServiceBImpl.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import org.springframework.beans.factory.annotation.Autowired;
66
import org.springframework.cloud.commons.util.InetUtils;
77

8-
@Service(version = "1.0.0")
8+
@Service(version = "1.1.0")
99
public class HelloServiceBImpl implements HelloServiceB {
1010

1111
@Autowired
@@ -14,7 +14,7 @@ public class HelloServiceBImpl implements HelloServiceB {
1414
@Autowired
1515
String serviceTag;
1616

17-
@Reference(application = "${dubbo.application.id}", version = "1.0.0")
17+
@Reference(application = "${dubbo.application.id}", version = "1.1.0")
1818
private HelloServiceC helloServiceC;
1919

2020
@Override

mse-simple-demo/C/Dockerfile

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22

33
FROM maven:3-eclipse-temurin-8-alpine as build
44

5-
# copy arthas
6-
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
7-
85
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
96

107
COPY <<EOF /root/.m2/settings.xml
@@ -35,8 +32,11 @@ RUN --mount=type=cache,target=/root/.m2/repository/ \
3532

3633
FROM dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-extended-ga-centos
3734

38-
COPY --from=build /app/target/C-1.0.0.jar /app/target/C-1.0.0.jar
35+
# copy arthas
36+
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
37+
38+
COPY --from=build /app/target/C.jar /app/target/C.jar
3939

4040
EXPOSE 20003
4141
ENTRYPOINT ["sh", "-c"]
42-
CMD ["java -jar /app/target/C-1.0.0.jar"]
42+
CMD ["java -jar /app/target/C.jar"]

mse-simple-demo/C/build.sh

+5-2
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,8 @@ set -e
33

44
cd "$(dirname "$0")"
55

6-
mvn clean package
7-
docker build . -t spring-cloud-c:1.0.0
6+
docker build . -t ${REGISTRY}spring-cloud-c:1.1.0
7+
8+
if [ -n "${REGISTRY}" ]; then
9+
docker push ${REGISTRY}spring-cloud-c:1.1.0
10+
fi

mse-simple-demo/C/pom.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.alibabacloud.mse.demo</groupId>
77
<artifactId>C</artifactId>
8-
<version>1.0.0</version>
8+
<version>1.1.0</version>
99
<packaging>jar</packaging>
1010

1111
<name>C</name>
@@ -97,6 +97,7 @@
9797
<artifactId>spring-boot-maven-plugin</artifactId>
9898
</plugin>
9999
</plugins>
100+
<finalName>${project.artifactId}</finalName>
100101
</build>
101102

102103

mse-simple-demo/C/src/main/java/com/alibabacloud/mse/demo/CApplication.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.apache.commons.lang3.StringUtils;
44
import org.springframework.boot.SpringApplication;
55
import org.springframework.boot.autoconfigure.SpringBootApplication;
6+
import org.springframework.boot.web.client.RestTemplateBuilder;
67
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
78
import org.springframework.context.annotation.Bean;
89
import org.springframework.web.client.RestTemplate;
@@ -19,12 +20,19 @@ public static void main(String[] args) {
1920
SpringApplication.run(CApplication.class, args);
2021
}
2122

22-
@Bean
23+
@Bean(name = "loadBalancedRestTemplate")
2324
@LoadBalanced
24-
RestTemplate restTemplate() {
25+
RestTemplate loadBalancedRestTemplate() {
2526
return new RestTemplate();
2627
}
2728

29+
@Bean(name = "restTemplate")
30+
RestTemplate restTemplate() {
31+
return new RestTemplateBuilder(rt -> rt.getInterceptors().add((request, body, execution) -> {
32+
request.getHeaders().add("Connection", "close");
33+
return execution.execute(request, body);
34+
})).build();
35+
}
2836

2937
@Bean(name = "serviceTag")
3038
String serviceTag() {

0 commit comments

Comments
 (0)