ServiceComb课题实验手册(二)

在本系列的上一篇文章中,我们搭建了 ServiceComb 的开发环境并开发了一个服务,在本文中,我们将继续搭建一个 Gateway 服务,以便于从为业务服务提供附加的能力。

构建Gateway服务项目

在 IDEA 中新建一个 maven 项目,将 GroupI 名为为: org.apache.servicecomb.samples, artifactId 指定为:bmi-gateway。项目建立后,打开项目中的 pom.xml 文件,将其修改为以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.apache.servicecomb.samples</groupId>
<artifactId>bmi-gateway</artifactId>
<version>1.3.0-SNAPSHOT</version>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<java-chassis.version>${project.version}</java-chassis.version>
<spring-boot-1.version>1.5.14.RELEASE</spring-boot-1.version>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>java-chassis-dependencies</artifactId>
<version>${java-chassis.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot-1.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--add rest transport-->
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>transport-rest-vertx</artifactId>
</dependency>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>spring-boot-starter-servicecomb</artifactId>
</dependency>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>spring-boot-starter-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>spring-cloud-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>spring-cloud-zuul-zipkin</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.0.RELEASE</version>
<configuration>
<fork>true</fork>
<mainClass>org.apache.servicecomb.samples.bmi.GatewayApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>

保存以后, IDEA 会自动下载需要的第三方库。

构建项目启动类

因为需要用的能力都是在 ServiceComb 或 Spring Boot / Cloud 中实现了的,所以我们需要定义一个启动类即可。

新建一个 package, 名为: org.apache.servicecomb.samples.bmi, 然后在 package 中新建一个类,名为: GatewayApplication, 代码如下:

1
2
3
4
5
6
7
8
@SpringBootApplication
@EnableZuulProxy
@EnableServiceComb
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}

定义服务配置文件

需要用到两个配置文件,都放在项目的 src/main/resources 目录下。

  1. microservice.yaml
1
2
3
4
5
6
7
8
9
APPLICATION_ID: bmi
service_description:
# name of the declaring microservice
name: gateway
version: 0.0.1
servicecomb:
service:
registry:
address: http://127.0.0.1:30100
  1. application.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
zuul:
routes:
calculator: /calculator/**

# disable netflix eurkea since it's not used for service discovery
ribbon:
eureka:
enabled: false

server:
port: 8889

servicecomb:
tracing:
enabled: false

启动服务

在 IDEA 中运行刚才建的 bmi-gateway 项目。可以看到在 Run TAB 中的输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
2019-10-25 11:11:17.321  INFO 7695 --- [           main] org.apache.servicecomb.core.SCBEngine    : Service information is shown below:
service center: [http://127.0.0.1:30100]
config center: not exist
AppID: bmi
ServiceName: gateway
Version: 0.0.1
Environment: production
ServiceID: 296cb6b50987ec12967e934d1e3df522901b1ccc
InstanceID; 1c2e1bf9f6d511e9ae530242ac110002

2019-10-25 11:11:17.323 INFO 7695 --- [ main] o.a.s.samples.bmi.GatewayApplication : Started GatewayApplication in 16.035 seconds (JVM running for 17.602)
2019-10-25 11:11:17.392 INFO 7695 --- [worker-thread-3] o.a.s.s.c.h.ServiceRegistryClientImpl : watching microservice 296cb6b50987ec12967e934d1e3df522901b1ccc successfully, the chosen service center address is 127.0.0.1:30100

可以看到,已经将自身注册到注册中心了。

验证

在浏览器地址栏中个输入:

1
http://localhost:8889/calculator/bmi?height=170&weight=50

浏览器中显示:

1
{"result":24.2,"instanceId":"c6753089f6cf11e9ae530242ac110002","callTime":"10:42:07"}

下一步

下一篇文章中,将介绍 Gateway 的负载均衡能力。

本文标题:ServiceComb课题实验手册(二)

文章作者:晨星

发布时间:2019年10月25日 - 10:10

最后更新:2020年05月28日 - 16:05

原始链接:https://www.mls-tech.info/microservice/service-comb/servicecomb-practise-manual-02/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。