六、 业务场景示例
跟随以上讲解的Dubbo流量治理体系,我们可以实现诸如以下流量管控能力:
• 动态调整服务调用的超时时间
• 动态调整服务失败后的重试次数
• 动态的开启或关闭访问日志
• 保证同区域内部署的服务被优先
• 线上灰度发布隔离环境
• 隔离多套测试环境
• 基于参数值的请求路由
• 基于权重的按比例路由
• 金丝雀发布
• A/B 测试
• 服务降级
• 将流量导流到某台固定的机器,方便问题排查等
1. 官网流量管控任务简介
Dubbo官网提供了一个功能完善的流量管控任务,示例任务基于一个简单的线上商城微服务系统演示了以上提到的几乎所有Dubbo的流量管控能力。建议读者前往Dubbo官网文档查看细节,以下是任务的大概介绍。
线上商城的架构图如下:
系统由5个微服务应用组成:
• Frontend商城主页,作为与用户交互的web界面,通过调用User、Detail、Order等提供用户登录、商品展示和订单管理等服务。
• User用户服务,负责用户数据管理、身份校验等。
• Order订单服务,提供订订单创建、订单查询等服务,依赖Detail服务校验商品库存等信息。
• Detail商品详情服务,展示商品详情信息,调用Comment服务展示用户对商品的评论记录。
• Comment评论服务,管理用户对商品的评论数据。
2. 部署商场系统
为方便起见,Dubbo选择将整个系统部署在Kubernetes集群,执行以下命令即可完成商城项目部署,项目源码示例在dubbo-samples/task。
完整的部署架构图如下:
Order订单服务有两个版本v1和v2、v2是订单服务优化后发布的新版本。
• 版本v1只是简单的创建订单,不展示订单详情。
• 版本v2在订单创建成功后会展示订单的收货地址详情。
Detail和Comment服务也分别有两个版本v1和v2,我们通过多个版本来演示流量导流后的效果。
• 版本v1默认为所有请求提供服务。
• 版本v2模拟被部署在特定的区域的服务,因此v2实例会带有特定的标签。