基于腾讯云TSF开发商家买单系统
实验预计耗时:90分钟
1. 课程背景
1.1 课程目的
腾讯微服务平台 (TSF) 是一个以微服务注册中心为核心功能的服务治理平台,提供应用全生命周期管理、数据化运营、立体化监控和服务治理等功能。
自建服务治理平台,存在可用性低,功能组件依托开源社区,费事费力等问题。TSF的推出,不仅降低了企业运维成本,而且和腾讯云其他产品完美契合,大大便利了用户微服务部署体验,使用户可以专注于业务的开发。另外,腾讯云官方除了提供SDK之外,还提供了完整的开发Demo和开发指引,让用户可以快速上手,享受微服务带来的开发乐趣。
本次实战课程,我们通过微服务开发商家买单系统,实现诸如商品列表查询,促销规则添加查询,下订单,订单查询等功能。在本地开发实现后,我们还会将代码打包,上传至TSF平台,实现线上快速部署。
相信通过本课程的学习,您可以加深对腾讯云TSF功能的掌握,对TSF服务的优势有很深的体会。
1.2 课前知识准备
学习本课程前,学员需要掌握以下前置知识:
1、能力基础
- Java编程基础:包括数据结构、逻辑语句、函数、注解、面向对象编程以及web开发基础。
- Spring开发基础:了解Spring框架的基本架构和开发思想。
2、相关概念
- 微服务:微服务架构是一项在云中部署应用和服务的新技术。微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。
- 注册中心:注册中心可以说是微服务架构中的“通讯录”,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。
3、相关技术
- Maven:Maven是一个项目管理工具,我们通过创建Maven工程快速获取项目所需要的jar包,并保存在本地仓库,也可以帮助我们对自己的项目进行生成jar包等项目管理操作。
- Spring Boot:Spring Boot是一款流行的Java开发框架,其设计目的是简化Spring应用的初始搭建以及开发过程,使开发人员不再需要定义样板化的配置。其开发流程大致如下:
- Spring Cloud: Spring Cloud是基于Spring Boot实现微服务的框架,其核心是服务的注册与发现,Spring Cloud默认使用Eureka作为服务注册中心。
2. 实验环境
2.1 实验操作环境
本课程需要以下实验操作环境:
- 可以接入互联网的笔记本电脑或者台式机,包括但不限于Windows、MAC系统
- 安装浏览器,包括但不限于谷歌浏览器、火狐浏览器
- 实验环境:计算机本地+腾讯云控制台
- Java软件开发工具包JDK(版本:1.8)
- Maven(版本:3.5及以上)
- Eclipse或者IDEA,此实验采用IDEA作为开发工具
2.2 实验架构图
本实验开发商品管理、订单管理、促销管理共计三个服务,模拟店家通过促销活动影响下单金额的场景,调用关系如图所示:
2.3 实验的数据规划表
资源名称 | 下载地址 |
---|---|
腾讯云账号 | 涉及产品如下:VPC、CVM、TSF |
JDK | 下载JDK |
Maven | 下载Maven |
IntelliJ IDEA | 下载IntelliJ IDEA |
Consul | 下载Consul |
Demo工程 | 下载Demo工程 |
Postman | 下载Postman |
3. 实验流程
第一步,准备基本的开发环境,包括JDK安装, Maven安装,IDE开发工具以及Postman的安装。
接下来,通过Demo项目在本地测试部署,来熟悉微服务项目的开发流程,本环节需要使用Maven将SDK所需依赖下载到本地仓库,且借助轻量级注册中心,让我们可以在本地测试项目。
在了解Demo的运行原理后,我们开始商家卖单系统的开发,通过在SDK依赖已经下载的前提下,使用SpringCloud依次开发商品管理、促销管理和订单管理三个服务,最终实现查询、下单等基本功能。
项目完成后,我们将项目代码打包上传至TSF平台,并对应用进行线上部署。本环节,我们需要创建TSF集群,添加云主机,上传应用,最后使用部署组部署应用。
最后一个环节,我们在客户端进行线上项目的使用测试,并体验TSF平台实现基本的监控功能。
4. 实验步骤
任务1 开发环境准备
【任务目标】
在本地计算机安装Java开发环境,使学员能够在本地进行代码开发。
【任务步骤】
1、安装 Java环境
1.安装Java
如果没有安装 Java,请下载安装 Java 软件开发套件(JDK)。官方下载连接:https://www.oracle.com/technetwork/java/javase/downloads/index.html
2.设置 Java 环境
设置JAVA_HOME环境变量,并指向您机器上的 Java 安装目录。
以 Java 1.8.0_144 版本为例,操作系统的输出如下:
操作系统 | 输出 |
---|---|
Windows | JAVA_HOME:D:\develop\Java\jdk1.8.0_144 Path添加变量值:;% JAVA _HOME%\bin |
Linux | export JAVA_HOME=/usr/local/java-current |
Mac OSX | export JAVA_HOME=/Library/Java/Home |
3.检查 Java 安装
打开终端,执行如下命令:
java -version
如果输出 Java 版本号,说明 Java 安装成功。
2、安装 Maven环境
1.下载安装 Maven
官方下载连接:https://maven.apache.org/download.cgi
2.设置 MAVEN_HOME 和 PATH 环境变量
操作系统 | 输出 |
---|---|
Windows | MAVEN_HOME:D:\develop\maven Path添加变量值:;%MAVEN_HOME%\bin |
Linux/ Mac OSX | Export MAVEN_HOME=/usr/local/maven/apache-maven-3.3.9 export PATH=$MAVEN_HOME/bin:$PATH |
3.验证 Maven 安装
当 Maven 安装完成后, 通过执行如下命令验证 Maven 是否安装成功。
mvn --version
4.Maven 配置 TSF 私服地址
找到 Maven 所使用的配置文件,一般在~/.m2/settings.xml中,在 settings.xml 中加入如下连接中的配置:
https://main.qcloudimg.com/raw/0e3c73b64c4ec64ae9b16d1a347db462/settings.xml
注:其中 localRepository 标签默认被注释,该标签用于指定本地仓库位置,用于存放后续步骤中下载的SDK。学员可以根据自己的需要配置到一个自定义目录,参考如下:
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<div id="saka-gui-root"/>
<localRepository>D:\develop\maven\repository</localRepository>
<pluginGroups/>
<proxies/>
<servers/>
<mirrors/>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://repo1.maven.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://repo1.maven.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>qcloud-repo</id>
<repositories>
<repository>
<id>qcloud-central</id>
<name>qcloud mirror central</name>
<url>
http://mirrors.cloud.tencent.com/nexus/repository/maven-public/
</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>qcloud-plugin-central</id>
<url>
http://mirrors.cloud.tencent.com/nexus/repository/maven-public/
</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
<activeProfile>qcloud-repo</activeProfile>
</activeProfiles>
</settings>
- 验证配置是否成功
配置完settings后,可以在CMD命令行窗口执行如下命令。
mvn help:effective-settings
运行命令后,当我们看到BUILD SUCCESS时,表明 settings.xml 格式正确。
3、安装 IDE开发工具
1.下载IntelliJ IDEA
下载地址:https://www.jetbrains.com/idea/download/#section=windows
请学员下载对应系统的安装包后自行安装
- 配置IDEA
在Configure选项栏下,点击Settings
在搜索栏搜索maven,将maven的位置进行配置。配置的内容包括:
- Maven home directory:Maven安装路径
- User settings file:刚刚配制好的settings.xml文件
- Local repository:本地仓库位置
任务2 项目测试部署
【任务目标】
学员能够在本地安装TSF SDK,并能够顺利运行Demo项目。
【任务步骤】
1、启动轻量级服务注册中心
1.Consul下载
Consul下载连接:https://www.consul.io/downloads.html。
本地使用轻量服务注册中心场景下支持 Windows 和 Linux / MacOS 操作系统。请学员下载自己操作系统对应的软件包。
2.Consul启动
解压软件包后进入解压目录,启动服务注册中心,启动命令如下:
Windows 操作系统:
.\consul.exe agent -dev
Linux / macOS 操作系统:
./consul agent -dev
- Consul启动验证
通过浏览器查看服务注册中心页面,http://127.0.0.1:8500。页面如下图所示:
2、安装 SDK
1.下载Demo工程
下载地址:
https://cloud.tencent.com/document/product/649/20261
tsf-demo-simple-develop工程目录如下:
|- consumer-demo:服务消费者
|- provider-demo:服务提供者
|- kafka-demo:Kafka微服务示例
|- zuul-demo:基于 Zuul 的微服务网关示例
|- cmq-producer-demo:CMQ 消息队列消息生产者示例
|- cmq-consumer-demo:CMQ 消息队列消息消费者示例
|- mongodb-demo:调用 MongoDB 的微服务示例
|- mysql-demo:调用 MySQL 的微服务示例
|- redis-demo:调用 Redis 的微服务示例
|- pom.xml
2.安装 SDK
使用IDEA点击Open打开tsf-demo-simple-develop工程,IDEA会在项目启动时下载项目所需SDK以及其他依赖。
你也可以使用maven命令,在pom.xml所在目录执行如下命令,即可下载 TSF SDK。
mvn clean package
下载成功后,我们可以在maven仓库中查看到新下载的依赖,如下图所示:
3.启动demo工程
我们分别运行provider-demo和consumer-demo两个模块。运行时首先配置参数,让我们的服务可以注册在本地的服务注册中心,参数如下:
-Dtsf_consul_ip=127.0.0.1:指定注册中心IP为本地
-Dtsf_consul_port=8500:指定注册中心端口号8500
-Dtsf_application_id=a
-Dtsf_group_id=b
-Dtsf.swagger.enabled=false
参数配置如下图:
配置成功后分别运行两个模块,我们可以在注册中心查看到服务注册的信息:
在浏览器中输入:http://127.0.0.1:18083/echo-rest/hello。
可以得到如下图返回信息,说明本地运行成功。
注:这里调用的是consumer-demo中的第一个服务接口,学员可以测试使用其他接口的调用效果。
任务3 微服务代码开发
【任务目标】
在demo工程基础上,在本地开发商家买单系统。项目结构如下:
|- tsf-goods:商品管理
|- tsf-sales:促销管理
|- tsf-orders:订单管理
|- pom.xml:原demo工程的pom文件
【任务步骤】
1、商品管理模块开发
1.项目模块创建
首先创建子模块tsf-goods,邮件点击:项目名称>New>Module,新建一个模块。
选择项目类型为Maven,然后直接点击Next。
输入ArtifactId为tsf-goods,点击Next。
接下来,确认好模块的位置和目录名称后,点击Finish进行创建。
刚才创建的tsf-goods模块,打开模块中的pom.xml文件,将dependencies标签修改如下。
<dependencies>
<!-- TSF启动器 包含完整依赖 -->
<dependency>
<groupId>com.tencent.tsf</groupId>
<artifactId>spring-cloud-tsf-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.7</version>
</dependency>
</dependencies>
注:依赖内容就是将consumer-demo中的依赖复制过来并添加了一个fastjson依赖,fastjson可以用来处理json字符串的转换。
配置启动类:
@SpringBootApplication
@EnableFeignClients
@EnableTsf
public class GoodsApplication {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(GoodsApplication.class, args);
}
}
配置application.yml:
server:
port: 8090
spring:
application:
name: goods
创建一个Goods类,并生成Goods类的构造方法和setter/getter方法。
public class Goods {
private String goodsId;
private String goodsName;
private Double goodsPrices;
// 请补充构造方法和setter/getter方法
}
创建GoodsController类,并创建一个全局Map用于存储商品信息。
@RestController
public class GoodsController {
private static Map<String, Goods> goodsMap = new HashMap<>();
@Autowired
private RestTemplate restTemplate;
}
2.商品查询功能
在GoodsController中添加getGoodsById函数,代码如下:
@RequestMapping(value = "/goods/{goodsId}", method = RequestMethod.GET)
public String getGoodsById(@PathVariable String goodsId) {
if (goodsMap.containsKey(goodsId)) {
return JSON.toJSONString(goodsMap.get(goodsId));
} else {
return "No goods";
}
}
3.商品列表查询
初次查询没有商品时,会自动添加
@RequestMapping(value = "/goods/list", method = RequestMethod.GET)
public String list() {
List<Goods> goodsList = new ArrayList<>();
if (goodsMap.isEmpty()) {
for (int i = 1; i < 11; i++) {
Goods goods = new Goods();
String goodsId = "goodsId-" + i;
String goodsName = "goodsName-" + i;
goods.setGoodsId(goodsId);
goods.setGoodsName(goodsName);
goods.setGoodsPrices(Double.parseDouble(10 + i + ""));
goodsMap.put(goodsId, goods);
}
}
for (String key : goodsMap.keySet()) {
goodsList.add(goodsMap.get(key));
}
return JSON.toJSONString(goodsList);
}
模块完成后的结构如下:
4.运行测试
和demo工程一样,配置如下启动参数:
-Dtsf_consul_ip=127.0.0.1:指定注册中心IP为本地
-Dtsf_consul_port=8500:指定注册中心端口号8500
-Dtsf_application_id=a
-Dtsf_group_id=b
-Dtsf.swagger.enabled=false
启动后,我们在本地浏览器输入如下请求:
127.0.0.1:8090/goods/list
可以看到如下返回内容:
2、促销管理模块开发
1.项目模块创建
创建子模块tsf-sales,添加tsf相关依赖与fastjaon依赖,并配置启动类
配置application.yml:
server:
port: 8094
spring:
application:
name: sales
创建一个Sales类,并生成构造方法,setter/getter类。
public class Sales {
private String salesId;
private String goodsId;
private Double discount;
// 自行生成构造方法,setter/getter类
}
创建SalesController类,并创建一个全局Map用于存储促销信息。
@RestController
public class SalesController {
private static Map<String, Sales> salesMap = new HashMap<String, Sales>();
}
2.添加促销规则
在SalesController中添加increase函数,代码如下:
@RequestMapping(value = "/sales/increase", method = RequestMethod.POST)
public Boolean increase(@RequestBody Sales newSales) {
String goodsId = newSales.getGoodsId();
for (String key : salesMap.keySet()) {
Sales sales = salesMap.get(key);
if (sales.getGoodsId().equals(goodsId)) {
salesMap.put(key,newSales);
}
}
salesMap.put(newSales.getSalesId(),newSales);
return true;
}
- 查询促销规则
@RequestMapping("/sales/{goodsId}")
public String getSalesById(@PathVariable String goodsId) {
if (salesMap.isEmpty()) {
return "No discount";
} else {
for (String key : salesMap.keySet()) {
Sales sales = salesMap.get(key);
if (sales.getGoodsId().equals(goodsId)) {
Sales resultSales = salesMap.get(sales.getSalesId());
return JSON.toJSONString(resultSales);
}
}
return "No discount";
}
}
- 删除促销规则
@RequestMapping("/sales/decrease/{salesId}")
public Boolean decrease(@PathVariable String salesId) {
if (salesMap.containsKey(salesId)) {
salesMap.remove(salesId);
return true;
}
return false;
}
5.项目启动与测试
配置与商品管理模块想相同的启动参数,运行主程序类,启动项目。
使用postman进行测试,在postman中增加一条促销规则:
http://IP:8094/sales/increase
"Content-type: application/json",
{"salesId":"sales-7","goodsId":"goods-1","discount":0.8}
点击Send后,返回true,说明项目代码无误。
3、订单管理模块开发
1.项目模块创建
创建子模块tsf-orders,添加tsf相关依赖,并配置启动类:
@SpringBootApplication
@EnableFeignClients // 使用Feign微服务调用时请启用
@EnableTsf
public class OrdersApplication {
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(OrdersApplication.class, args);
}
}
配置application.yml:
server:
port: 8092
spring:
application:
name: orders
创建GoodsController类,并创建一个全局Map用于存储商品信息。
@RestController
public class OrdersController {
private static Map<String,Orders> ordersMap = new HashMap<>();
@Autowired
private RestTemplate restTemplate;
}
2.创建一些实体类
类名称与私有属性如下,学员需自行补充构造函数,getter/setter方法:
类名称 | 私有属性 |
---|---|
Orders | private String ordersId; private String userId; private Double total; private List<GoodsInOrder> goods; |
GoodsInOrder | private String goodsId; private Double number; |
Orders | 同tsf-sales中Sales类 |
Goods | 同tsf-goods中Goods类 |
3.下单购买功能
在OrdersController中添加buy函数,代码如下:
@RequestMapping(value = "/orders/buy", method = RequestMethod.POST)
public Map<String, Object> buy(@RequestBody Orders newOrders) {
Double total = 0.0;
List<GoodsInOrder> goodsInOrders = newOrders.getGoods();
// 对商品订单进行遍历
for(GoodsInOrder goodsInOrder:goodsInOrders){
String goodsJson = restTemplate.getForObject("http://tsf-goods/goods/" + goodsInOrder.getGoodsId(), String.class);
String salesJson = restTemplate.getForObject("http://tsf-sales/sales/" + goodsInOrder.getGoodsId(), String.class);
// 确认商品是否存在
if(!goodsJson.equals("No goods")){
Goods goods = JSON.parseObject(goodsJson, Goods.class);
// 确认促销是否存在
if (!salesJson.equals("No discount")){
Sales sales = JSON.parseObject(salesJson, Sales.class);
// 计算商品价格
total += sales.getDiscount()*goods.getGoodsPrices()*goodsInOrder.getNumber();
}else {
total += goods.getGoodsPrices()*goodsInOrder.getNumber();
}
}
}
// 编辑返回信息
HashMap<String, Object> map = new HashMap<>();
Orders orders = new Orders();
orders.setOrdersId(newOrders.getOrdersId());
orders.setUserId(newOrders.getUserId());
orders.setGoods(newOrders.getGoods());
orders.setTotal(total);
ordersMap.put(newOrders.getOrdersId(),orders);
map.put("total",total);
return map;
}
4.订单查询功能和统计功能
在OrdersController中添加 ordersInfo和 report函数,代码如下:
@RequestMapping("/orders/{ordersId}")
public String ordersInfo(@PathVariable("ordersId") String ordersId) {
if (ordersMap.isEmpty()) {
return "No orders";
} else {
Orders orders = ordersMap.get(ordersId);
return JSON.toJSONString(orders);
}
}
@RequestMapping("/orders/report")
public List<Map<String, Object>> report() {
ArrayList<Map<String, Object>> maps = new ArrayList<>();
if (ordersMap.isEmpty()) {
return null;
} else {
System.out.println(ordersMap);
for (String key : ordersMap.keySet()) {
Orders orders = ordersMap.get(key);
HashMap<String, Object> map = new HashMap<>();
map.put("orderId",orders.getOrdersId());
map.put("userId",orders.getUserId());
map.put("total",orders.getTotal());
maps.add(map);
}
}
return maps;
}
4、本地功能测试
本地启动项目,在postman中增加一条购买请求:
http://127.0.0.1:8094/orders/buy
"Content-type: application/json",
{"ordersId":"orders-1","userId":"user-1",
"goods":[{"goodsId":"goods-1","number":1},
{"goodsId":"goods-2","number":1}]
}
发送成功后得到订单的总金额,如下图所示:
5、服务应用打包
应用的功能确认后,我们使用Maven对每一个服务进行生成jar包,jar包是一个java项目编译结果的封装,可以在本地运行,可以部署到TSF集群上运行和管理。
使用IDEA,点击右侧Maven选项卡,点击每一模块下的Lifecycle,双击生命周期中的package,即可开始打包。
打包运行结果大致如下,其中我们看到BUILD SUCCESS时,表示打包成功:
打包成功后,我们可以在该模块目录的target文件夹下,查看到已有jar包。
<img src="https://course-public-resources-1252758970.cos.ap-chengdu.myqcloud.com/%E5%AE%9E%E6%88%98%E8%AF%BE/201912TSF/tsf/image028.png" alt="image028" style="zoom:80%;" />
依次打包tsf-goods、tsf-sales、tsf-orders三个模块的jar包,等待上传TSF平台。
任务4 项目线上部署
【任务目标】
对已有服务的jar包进行线上部署,部署关系如下:
项目jar包 | 实例 | 部署组 | 应用组 |
---|---|---|---|
tsf-goods | Instance-1 | Group-1 | App-1 |
tsf-sales | Instance-2 | Group-2 | App-2 |
tsf-orders | Instance-3 | Group-3 | App-3 |
【任务步骤】
1、新建TSF集群
进入腾讯微服务平台,点击集群页,创建一个集群,集群网络需要用户提前新建。
2、导入云主机
创建后,点击导入云主机,此时如果可用区下没有可以实用的云服务器,我们就需要在同一可用区下新建3个云主机。
1.新建云主机
点击新建云主机,进入到CVM购买界面,本实验购买的CVM基本参数如下:
参数 | 配置说明 |
---|---|
地域与机型 | 与TSF同可用区下的低配机型即可 |
镜像 | CentOS 7.6 64位 |
存储与宽带 | 50G系统盘;按使用流量 |
安全组 | 放通全部端口 |
2.导入云主机
创建实例成功后,将全部CVM导入TSF集群。
导入方式选择安装Agent。
3.安装Agent
Agent是TSF用来管理CVM的软件,需要手动安装在每一台云主机上。只需要复制安装脚本到每一台CVM内粘贴运行,即可安装成功。点击安装Agent,我们可以看到如下安装脚本:
cd /root && if [ -f tsf-agent/uninstall ]; then chmod +x tsf-agent/uninstall; tsf-agent/uninstall; fi && if [ -f tsf-agent/ops/uninstall.sh ]; then chmod +x tsf-agent/ops/uninstall.sh; tsf-agent/ops/uninstall.sh; fi && rm -rf tsf-agent* && wget https://tsf-ap-guangzhou-1254962064.cos.ap-guangzhou.myqcloud.com/tsf-agent/install/tsf-agent.tar.gz -O tsf-agent.tar.gz && tar --no-same-owner -xzf tsf-agent.tar.gz && chmod +x tsf-agent/ops/install.sh; tsf-agent/ops/install.sh
分别登录每一台CVM,粘贴并运行脚本代码,安装信息如下所示。
安装成功后,在云主机列表,我们可以看到可用状态为绿色的可用,就表明此时TSF可以接入该云主机。
3、上传应用
集群创建成功后,我们就可以上传打包好的应用了。
1.创建应用
点击应用管理,新建应用,选择虚拟机部署,普通应用。
<img src="https://course-public-resources-1252758970.cos.ap-chengdu.myqcloud.com/%E5%AE%9E%E6%88%98%E8%AF%BE/201912TSF/tsf/image037.png" alt="image037" style="zoom:80%;" />
2.上传应用包
点击应用后,选择程序包管理,分别上传我们的jar包,使用时间戳作为版本号,并备注一下,便于我们自己区分。
<img src="https://course-public-resources-1252758970.cos.ap-chengdu.myqcloud.com/%E5%AE%9E%E6%88%98%E8%AF%BE/201912TSF/tsf/image038.png" alt="image038" style="zoom:80%;" />
4、应用部署
1.新建部署组
选择部署组,点击新建部署组,选择关联app,并启用日志配置项,点击保存&下一步。
<img src="https://course-public-resources-1252758970.cos.ap-chengdu.myqcloud.com/%E5%AE%9E%E6%88%98%E8%AF%BE/201912TSF/tsf/image039.png" alt="image039" style="zoom:80%;" />
在下一步中,选择部署的实例。
2.部署应用
部署组创建成功后,依次点击部署应用,部署应用成功后最终效果如下,此时服务已经可以调用了。
任务5 功能测试与监控
【任务目标】
将我们打包的服务jar包进行线上部署,对应关系如下:
【任务步骤】
1、功能测试
1.添加商品列表
使用app-1对应的公网IP地址,访问/goods/list。
在postman或浏览器地址栏输入如下请求:Instance1-IP:8090/goods/list
如返回结果成功,效果如下:
2.添加促销规则
使用app-2对应的公网IP地址,添加促销规则:
Instance2-IP:8094/sales/increase
3.使用下单功能
使用app-3对应的公网IP地址,使用下单功能:
Instance3-IP:8092/orders/buy
4.使用下单查询功能:
Instance3-IP:8092/orders/orders-1
如返回信息均无误,说明实验运行成功。至此,微服务的基本功能在腾讯云TSF上都已实现了。
2、微服务监控
1.日志查询
接下来我们使用TSF上的一些功能,来查看服务调用的情况。点击日志服务,选择日志索引,我们可以查看到微服务日志信息。
2.服务依赖拓扑
点击服务依赖拓扑,可以查看可视化的微服务调用拓扑。
3.调用链查询
点击调用链查询,可以查看每一个Trace ID下的调用情况,从而分析时延原因等。
至此,商家买单系统的功能开发与部署就全部完成了。
学员评价