练习 - 验证部署并测试应用

已完成

启动安装脚本后不久,Cloud Shell 编辑器将打开初学者解决方案。 编辑器将打开 ~/clouddrive/aspnet-learn/src/ 目录。 你可以在脚本继续将 Docker 容器部署到 Azure Kubernetes 服务 (AKS) 的同时研究解决方案。 执行此操作时,脚本将继续运行。

备注

如果 Cloud Shell 会话由于不活动而断开连接,请重新连接并运行以下命令以返回到此目录并打开 Cloud Shell 编辑器:

cd ~/clouddrive/aspnet-learn/src/ && \
  code .

查看代码

以下 src 子目录包含 .NET Core 项目,其中每个项目均已容器化并部署到 AKS:

项目目录 描述
Aggregators/ 跨多个微服务进行聚合的服务,这些微服务用于某些跨服务操作。 HTTP 聚合器在 ApiGateways/Aggregators/Web.Shopping.HttpAggregator 项目中实现。
BuildingBlocks/ 提供横切功能的服务,例如用于服务间事件的应用事件总线。
Services/ 这些项目实现了应用的业务逻辑。 每个微服务都是自主的,均有其自己的数据存储区。 它们展示了不同的软件模式,包括创建-读取-更新-删除 (CRUD)、域驱动设计 (DDD) 以及命令和查询责任分离 (CQRS)。 已提供新的 Coupon.API 项目,但它不具备复原能力。
Web/ 可实现用户界面的 ASP.NET Core 应用。 WebSPA 是一个使用 Angular 生成的店面 UI。 WebStatus 是用于监视每个服务的操作状态的运行状况检查仪表板。

验证是否已部署到 AKS

应用部署到 AKS 后,命令外壳中会出现以下消息的变体:

The eShop-Learn application has been deployed to "http://203.0.113.55" (IP: 203.0.113.55).

You can begin exploring these services (when ready):
- Centralized logging       : http://203.0.113.55/seq/#/events?autorefresh (See transient failures during startup)
- General application status: http://203.0.113.55/webstatus/ (See overall service status)
- Web SPA application       : http://203.0.113.55/

提示

若要再次显示这些 URL,请运行以下命令:

cat ~/clouddrive/aspnet-learn/deployment-urls.txt

即使应用已进行部署,它仍可能需要几分钟的时间才能进入联机状态。 通过以下步骤验证应用是否已部署并联机:

  1. 选择命令行界面中的 General application status 链接,查看 WebStatus 运行状况检查仪表板。 生成的页面将显示部署中每个微服务的状态。 绿色的复选标记图标表示服务正常运行。 页面每 10 秒自动刷新一次。

    运行状况检查状态仪表板

    备注

    应用启动时,你最初可能会收到来自服务器的 HTTP 503 响应。 几秒后重试。 Seq 日志(可在 Centralized logging URL 中查看)先于其他终结点可用。

  2. 所有服务都正常运行后,请在命令行界面中选择 Web SPA application 链接来测试 eShopOnContainers Web 应用。 这将显示以下页面:

    电子商店单页应用

  3. 按以下步骤完成购买:

    1. 选择右上角的 LOGIN 链接,登录到应用。 在此页上提供登录信息。 选择 Remember me? 复选框,避免再次登录。
    2. 选择图像,将 .NET BLUE HOODIE 添加到购物袋。
    3. 选择右上角的购物袋图标。
    4. 选择 CHECKOUT,然后选择 PLACE ORDER 完成购买。

    显示有 .NET 蓝色连帽衫的购物车

你成功验证了该应用已部署到 AKS 且正常工作。

了解不可复原的应用的响应

完成以下步骤,查看应用在没有复原解决方案的情况下如何进行响应。

配置模拟故障

优惠券服务设计为按需模拟故障。 模拟故障的配置是通过使用优惠券代码的特殊语法完成的。 若要模拟故障,购物车中至少要有一件商品。 完成以下步骤:

  1. 选择 CONTINUE SHOPPING 按钮。

  2. 选择 .NET FOUNDATION PIN。

  3. 选择购物车图标。

  4. 选择 CHECKOUT。

  5. 在页面底部的 HAVE A DISCOUNT CODE? 文本框中,输入代码 FAIL 2 DISC-10。

    此代码导致优惠券服务在验证 DISC-10 折扣代码时引发两次异常。

  6. 选择 APPLY 按钮。

    你将收到以下确认消息,其中包含为代码配置的故障数:CONFIG: 2 failure(s) configured for code "DISC-10"!!。

    配置优惠券故障

此配置导致 DISC-10 代码接下来的两个请求引发异常。

应用失败的折扣优惠券

  1. 将现有折扣代码替换为 DISC-10。
  2. 选择 APPLY 按钮。 你将收到消息 ERROR: 500 - Internal Server Error!。
  3. 再次选择 APPLY 按钮。 你将再次收到相同的消息。
  4. 第三次选择 APPLY 按钮。 这一次,代码验证成功,10 美元 (USD) 的折扣应用于订单。
  5. 选择命令行界面中的 Centralized logging 链接,查看 Seq 日志。

在应用 DISC-10 代码的两次失败尝试中,请注意你立即收到了错误消息。 检查日志跟踪。 你将看到以下输出的变体:

不可复原的故障

在上图中,可以看到:

  • 前两个请求(标记为 1 和 2)在获取值时失败。
  • 第三个请求(标记为 3)成功并返回预期值(标记为 4)。

在本单元中,你已了解 eShopOnContainers 应用的当前结帐流程。 接下来,你将使用 Polly 将基于代码的复原添加到优惠券服务中。