微服务平台 TSF 本地开发联调

开发者通过搭建本地轻量级注册中心,将本地服务注册到轻量级注册中心上,服务之间通过服务名来进行调用。

相关产品
微服务平台 TSF 产品页,含版本规格、价格与购买入口。

这篇说说了三种本地开发联调的使用场景:

·本地普通服务之间调用

·本地微服务网关和普通服务之间的调用

·本地服务调用云端服务

一、步骤1:启动轻量级注册中心

本地开发调试时,需要使用轻量级注册中心,轻量级注册中心包含了 TSF 服务注册发现服务端的轻量版,详请参见 轻量级服务注册中心。

二、步骤2:启动应用

本地启动应用可以通过 IDE 和 FatJar 两种方式。你可以单击以下页签,查看两种方式的操作步骤:

IDE 中启动FatJar 启动

在 IDE 中启动,通过 VM options 配置启动参数-Dtsf_consul_ip=127.0.0.1 -Dtsf_consul_port=8500 -Dtsf_application_id=a -Dtsf_group_id=b -Dtsf.swagger.enabled=false,通过 main 方法直接启动。
其中 IP 和 port 取值为轻量级服务注册中心的地址,使用了分布式配置功能的模块,需要设置-Dtsf_application_id=a -Dtsf_group_id=b, 取值可为任意值。

1. 添加 FatJar 打包方式:

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins></build>

2. 打包 FatJar 文件:
添加完插件后,在工程的主目录下,使用 Maven 命令mvn clean package进行打包,即可在 target 目录下找到打包好的 FatJar 文件。

3. 通过 Java 命令启动:

java -Dtsf_instance_id=1111 -Dtsf_consul_ip=127.0.0.1 -Dtsf_consul_port=8500 -Dtsf.swagger.enabled=false -jar provider-demo-0.0.1-SNAPSHOT.jar

其中127.0.0.1和8500为轻量级服务注册中心地址,在本地调试时 tsf_application_id 和 tsf_group_id 可以填任意值。

三、步骤3:验证

启动服务,分别进行调用,观察调用结果。

·http://{consumer-demo-ip}:{consumer-demo-port}/echo-rest/test?user=test-tsf

·http://{consumer-demo-ip}:{consumer-demo-port}/echo-async-rest/test?user=test-tsf

·http://{consumer-demo-ip}:{consumer-demo-port}/test?user=test-tsf

四、操作场景

开发者通过搭建本地轻量级注册中心,将本地服务注册到轻量级注册中心上,服务之间通过服务名来进行调用。

五、步骤1:启动轻量级注册中心

本地开发调试时,需要使用轻量级注册中心,轻量级注册中心包含了 TSF 服务注册发现服务端的轻量版,详请参见 轻量级服务注册中心。

六、步骤2:本地启动微服务网关应用

本地启动应用可以通过 IDE 和 FatJar 两种方式。你可以单击以下页签,查看两种方式的操作步骤:

IDE 中启动FatJar 启动

在 IDE 中启动,通过 VM options 配置启动参数-Dtsf_consul_ip=127.0.0.1 -Dtsf_consul_port=8500 -Dtsf_application_id=a -Dtsf_group_id=b -Dtsf_token=c -Dtsf_app_id=d -Dtsf.swagger.enabled=false,通过 main 方法直接启动。
其中 IP 和 port 取值为轻量级服务注册中心的地址,使用了分布式配置功能的模块,需要设置-Dtsf_application_id=a -Dtsf_group_id=b -Dtsf_token=c -Dtsf_app_id=d, 取值可为任意值。注意:TSF 1.29.5-Finchley-RELEASE、1.29.1-Greenwich-RELEASE、1.29.3-Hoxton-Higher-RELEASE 之前的版本必须需要设置以上参数才能在本地环境正常启动,否则会报错。

1. 添加 FatJar 打包方式

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>

2. 打包 FatJar 文件
添加完插件后,在工程的主目录下,使用 Maven 命令mvn clean package进行打包,即可在 target 目录下找到打包好的 FatJar 文件。

3. 通过 Java 命令启动

java -jar -Dtsf_consul_ip=127.0.0.1 -Dtsf_consul_port=8500 -Dtsf_application_id=a -Dtsf_group_id=b -Dtsf_token=c -Dtsf_app_id=d -Dtsf.swagger.enabled=false msgw-scg-0.0.1-SNAPSHOT.jar

其中127.0.0.1和8500为轻量级服务注册中心地址,在本地调试时 tsf_application_id、tsf_group_id、tsf_token 和 tsf_app_id 可以填任意值。

七、步骤3:配置分组和分组 API

将 localtest.zip 包中的 group.json 和 api.json 复制到 /$user.home/tsf/gateway/ 下,其中 $user.home 指的是用户目录,例如:/root(Linux),或 C:\\Users\\<用户名>(Windows),或/Users/<用户名>(MacOs)。其中 group.json 是部署组下的分组信息,api.json 是部署组下的分组 API 信息,默认要调用的下游微服务名是 provider-demo。

八、步骤4:验证

http://{msgw-scg-ip}:{msgw-scg-port}/test_group1/test_namespace/provider-demo/echo/1234

请求路径是:http://网关ip:网关port/网关分组context/命名空间名称/微服务名/API路径

如果本地网关调用的微服务名不是 provider-demo,则想要修改分组 API 配置中的微服务名,即需要修改 api.json 里的 serviceName 属性的值(修改下图中红框标出的内容):

group.json 内容解释:
其中 gatewayName 是部署组名称,gatewayGroupId 是部署组ID,groupId 是网关分组ID,groupName 是网关分组名称,groupContext 是网关分组 context。

{ "gatewayName":"test-group", //部署组名称 "gatewayGroupId":"group-yrlkqnly", //部署组ID "reversion":24, "updatedTime":"2021-03-29 11:56:52", "result":[ { "groupId":"grp-60khzyb4", //网关分组ID "groupName":"group1", //网关分组名称 "groupContext":"/test_group1", //网关分组 context "authMode":"none", "groupType":"ms" }, { "groupId":"grp-sh1b4f4w", "groupName":"group2", "groupContext":"/test_group2", "authMode":"none", "groupType":"ms" } ]}

api.json 内容解释:
其中 gatewayName 是部署组名称,gatewayGroupId 是部署组ID,groupId 是网关分组ID(与 group.json 中的 groupId 保持一致时会认为该 API 属于该网关分组),apiId 是网关分组 API 的 ID,serviceName 是网关下游的微服务名(也就是下游微服务的名称),path 是网关分组 API 的路径(也就是下游微服务的 API)

{ "gatewayName":"test-group", //部署组名称 "gatewayGroupId":"group-yrlkqnly", //部署组ID "reversion":80, "updatedTime":"2021-03-29 11:56:52", "result":[ { "apiId":"api-c5zjvdbq", //网关分组 API 的 ID "groupId":"grp-60khzyb4", //网关分组ID(与 group.json 中的 groupId 保持一致时会认为该 API 属于该网关分组) "path":"/echo/{param}", //网关分组 API 的路径(也就是下游微服务的 API) "method":"GET", "serviceName":"provider-demo", //网关下游的微服务名(也就是下游微服务的名称) "namespaceId":"namespace-v6m6pp5a", "namespaceName":"test_namespace", "usableStatus":"enabled", "pathMapping":"/echo/{param}", "apiType":"ms" }, { "apiId":"api-lc5cxghw", "groupId":"grp-60khzyb4", "path":"/echo/slow/{param}", "method":"GET", "serviceName":"provider-demo", "namespaceId":"namespace-v6m6pp5a", "namespaceName":"test_namespace", "usableStatus":"enabled", "pathMapping":"/echo/slow/{param}", "apiType":"ms" } ]}

赞 (0)
上一篇 4天前
下一篇 4天前