SOFAStack 体验中心为用户提供一个模拟真实电商业务场景的体验环境,让您可以快速了解并直观感受到 SOFAStack 平台以应用为中心提供的一站式云原生服务。本文旨在引导您跟随不同的场景线路,分别体验版本回滚、服务治理、灰度切流等功能。
本期推出 微服务平台(MS Platform)及 容器应用服务(AKS)两大核心产品。
体验中心内的数据仅支持查看,无法进行其他操作。
暂不支持搜索功能。
前提条件
已注册阿里云账号。
已开通 SOFAStack 产品。
体验地址
体验中心环境区分金区和非金区,请使用正确的账号登录,避免出现跳转异常:
场景概述
本节介绍体验中心环境包含的三种典型的电商应用场景以及各场景中用户需使用到的 SOFAStack 核心能力。
各场景说明如下:
场景一:双 11 大促前做新 Portal 迭代,上线新版本 Portal 应用后,发布人员观测到业务异常,立即进行回滚恢复旧版本,回滚后查看实时监控数据,验证服务已恢复正常。
场景二:双 11 大促中,电商系统面临着短时间内业务量的迅速增长,为避免业务峰值给系统带来极大的压力,防止服务器宕机、服务超时、用户无法访问、服务雪崩等问题,可以对服务进行以下治理操作:
服务限流:为高访问的订单服务(Order)添加限流规则,以控制服务请求量。
服务鉴权:为关键性的支付服务(Pay)添加白名单鉴权,仅允许白名单内的服务调用。
服务熔断:为账单服务(Bills)添加熔断规则,以避免长时间的阻塞影响其他服务,防止雪崩。
透明劫持:对定价系统(Price)进行无侵入式的应用治理,限制该服务的最大请求数等。
场景三:双 11 大促来临之际,为保障商品列表信息无误且用户能够访问正常,研发人员对门户网站应用(Portal)下的商品列表服务(Product)进行新版本的分组发布,继而通过服务路由功能对该服务进行精细的流量控制,将流量逐渐从旧版本引导至新版本,通过灰度切流实现新版本的平滑上线。
实现链路
本节介绍各场景中涉及到的服务之间的调用链路,帮助您更好地理解服务治理背后的实现逻辑。如下图所示,箭头表示调用关系。
调用顺序说明如下:
电商平台用户在登录时调用 Login 服务进行身份鉴权,登录成功后,调用 User Info 服务展示个人信息。
电商平台用户在下单时调用 Order 服务进行订单创建,创建成功后,调用 Pay 服务进行订单支付,支付成功后,调用 Bills 服务生成用户账单。
电商平台用户在逛店铺时调用 Product 服务展示商品列表,单击进入商品详情页后调用 Price 应用返回价格信息。
具体的应用与服务信息说明如下:
Portal 应用:门户网站,Mesh 应用,基于 SOFA 框架,包含以下 2 个微服务:
Login:用户登录时的身份鉴权服务。
Product:获取商品列表。
Trade 应用:交易系统,Mesh 应用,基于 Spring Cloud 框架,包含以下 2 个微服务:
Order:订单服务。
Pay:支付服务,关键服务。开启服务鉴权后,只允许被订单服务调用。
Account 应用:用户系统,传统微应用,基于 SOFA 框架,包含以下 2 个微服务:
User Info:用户登录后返回用户个人信息。
Bills:账单服务。
PriceCenter 应用:价格管理系统,单体应用,基于 C++ 研发。
体验路径
本节介绍各个场景体验的操作路径,帮助您快速查看 SOFAStack 提供的核心能力模块。
场景一:版本回滚
对新版 Portal 应用进行分组发布时,在第一组服务实例发布完成后,发布人员在微服务平台的服务监控中观测到业务异常,用户登录错误率快速增长,经分析判断是新版服务出现问题,立即到 AKS 中进行回滚发布,恢复到应用的旧版本,继续查看实时监控数据,验证服务已恢复正常。
该场景涉及 Portal 应用及 Login 服务。
您可以通过以下查看路径体验 AKS 的分组发布及版本回滚的能力:
在 容器应用服务 > 应用发布 > 发布单 页面,单击查看新版发布单(名称为 portal-v1-deployment)详情,可以看到新版发布单中仅完成了 Portal 应用的一个应用服务实例的发布,如下图所示:
在 微服务平台 > 服务网格 > 实时监控 页面,单击查看 Portal 应用服务的监控详情,在应用服务版本下拉框中选择 V2 版本,发现新版本的应用服务的错误率出现增长。
说明因体验中心能力限制,目前无法展示动态数据,仅能保留终态页面,所以该步骤暂不支持查看监控数据。
在 容器应用服务 > 应用发布 > 发布单 页面,单击查看回滚发布单(名称为 portal-v2-deployment)详情,可以看到回滚发布单完成了对新版应用服务实例的回滚,如下图所示:
说明因体验中心能力限制,目前缺乏页面间的数据联动,发布单详情暂时公用一套数据。
在 微服务平台 > 服务网格 > 实时监控 页面,单击查看 Portal 应用服务的监控详情,可以看到回滚到旧版本的应用服务的错误率恢复正常为零,如下图所示:
说明回滚后,在监控页面的应用服务版本下拉框中,仅可选择 V1 版本。
场景二:服务治理
双 11 大促中,对于电商系统,面临的必然是短时间内业务量的迅速增长、上亿用户的疯狂涌入。这种亿级流量高并发场景业务,会给系统带来极大的压力。而系统服务器的处理资源是有限的,能够支撑的访问量也是有限的。因此,出现业务峰值的时候,很容易造成服务器宕机、服务超时、用户无法访问等问题。为解决这些问题,研发人员可以通过微服务平台(MS Platfrom)对服务进行以下治理操作,以提高服务的稳定性和可用性。
通过服务限流为高访问的订单服务(Order)添加限流规则,以控制服务请求量。
通过服务鉴权为关键性的支付服务(Pay)添加白名单鉴权,仅允许白名单内的服务调用。
通过服务熔断为账单服务(Bills)添加熔断规则,以避免长时间的阻塞影响其他服务,防止雪崩。
通过透明劫持对定价系统(Price)进行无侵入式的应用治理,限制该服务的最大请求数等。
该场景分别涉及了 Mesh 应用的 Order 服务、Pay 服务,经典微服务的 Bills 服务以及 C++ 单体应用 Price。
您可以通过以下查看路径体验 MS Platfrom 的服务限流、服务鉴权、服务熔断及透明劫持的能力:
服务限流
进入 微服务平台 > 服务网格 > 服务管控 页面,在服务列表中找到 Order 订单服务,单击其服务 ID,进入其详情页。
在详情页中,切换至 服务限流 页签,可以看到一条名为 双11订单限流 的限流规则。
单击该规则名称,即可在右侧窗口中查看该限流规则的具体配置。该规则表示对 Order 服务按照 QPS 计数法 进行服务限流。
服务鉴权
进入 微服务平台 > 服务网格 > 服务管控 页面,在服务列表中找到 Pay 支付服务,单击其服务 ID,进入其详情页。
在详情页中,切换至 服务鉴权 页签,可以看到启用的访问控制白名单中有一条名为 access_control_rule_1 的白名单规则。该规则表示仅支持 调用方应用名 为 Trade 的服务调用,如下图所示。
服务熔断
进入 微服务平台 > 微服务 > 服务治理 页面,切换至 服务熔断 页签。
在下方的熔断规则列表中,单击 Account 应用前的展开图标,可看到一条名为 双11大促熔断降级策略 的熔断规则。
单击该规则名称,即可在右侧窗口中查看该熔断规则的具体配置。该规则表示对 Bills 服务按照配置的熔断匹配条件进行服务熔断。
5s 内请求数达到 10000 且错误率达到 30% 或者服务端超时时间达到 500 ms,进行服务熔断 10000 ms。
该熔断规则是观察者模式,表示仅打印熔断记录日志,不会实际拦截熔断。
透明劫持
进入 微服务平台 > 服务网格 > 透明劫持 页面,在应用列表中,单击 Price 应用名,进入其应用详情页。
在详情页,可以看到该应用对两个 IP 开启了 透明劫持,如下图所示。
单击右上角的 参数配置,即可在弹出窗口中查看详细的透明劫持规则。黑名单网段范围和端口范围之外的TCP流量会被劫持。
单击右上角的 应用治理,即可在右侧窗口中查看该应用的流量治理规则。如下图所示,80 端口的流量会被劫持,并按照 最大请求数 为 100 的限制进行流量治理。
进入 服务网格 > Sidecar 管理 页面,可以看到 Price 对应的 Sidecar 信息及其状态,如下图所示。
进入 服务网格 > 服务拓扑 页面,在拓扑图中找到并单击 Price 应用,在右侧窗口中即可查看该应用的各项监控数据。其中,请求量(RPS)符合其应用治理规则,如下图所示。
进入 服务网格 > 实时监控 页面,在下方的应用服务列表中,可以看到 Price 对应的请求量(分钟)与其应用治理规则一致,如下图所示。
场景三:灰度切流
在双 11 大促这样的业务场景中,除了电商后端交易等服务系统备受压力,电商门户网站,聚集并展示了商品、库存、价格等各种信息源内容,也承载着巨大的流量,是订单交易的关键入口。因此,双 11 大促来临之际,为保障商品列表信息无误且用户能够访问正常,研发人员可通过 AKS 对门户网站应用(Portal)下的商品列表服务(Product)进行新版本的分组发布,此处会产生两个版本,即旧版本与新版本。继而通过服务路由功能对该服务进行精细的流量控制,慢慢将流量从旧版本引导至新版本,实现灰度切流。
该场景涉及 Portal 应用及 Product 服务。
您可以通过以下查看路径体验 AKS 的应用发布以及 MS Platfrom 的服务路由能力:
您可以通过以下查看路径体验 AKS 的分组发布及 MS Platfrom 的服务路由能力:
进入 容器应用服务 > 应用发布 > 应用服务 页面,单击进入 portal 应用详情页。在 版本 标签页下,您可以看到列表中存在两个版本,如下图所示:
进入 微服务平台 > 服务网格 > 服务管控 页面,在服务列表中找到 Product 订单服务,单击其服务 ID,进入其详情页。
在详情页中,切换至 服务路由 页签,可以看到一条名为 门户新版本上线路由规则 的规则。
单击该规则名称,即可在右侧窗口中查看该路由规则的具体配置。该规则表示对 Product 服务 按版本路由 进行流量调控。