微服务架构被企业级开发广泛采用,而随着业务迅速发展,服务数量也呈现爆炸式的增长。日常开发过程中一套测试环境可能包含成千上百个服务。在协作过程中等待环境、抢占环境、验证冲突已成为常态。而长期发展导致的技术债和基础架构复杂度又非常高,复制多套环境存在较高难度,工程师日常协作只能在等待中苦不堪言。
在 Zadig V1.11.0 版本中推出了环境自测模式,工程师可以基于一套含全量服务的基准环境低成本搭建独享的开发者子环境。利用 Istio 和 Tracing 组件的链路追踪和流量动态路由的能力,实现开发者子环境与基准环境联调的目的,从而解决大规模微服务下工程师被环境问题阻塞的情况。
下面以服务网格组件 Istio [1] + 企业采用率非常广泛的 SkyWalking [2] + 典型微服务架构 Spring Boot 项目 PiggyMetrics [3] 为例,演示如何使用 Zadig 自测模式实现工程师日常自测联调过程。
项目简介
本例 PiggyMetrics [4] 项目,架构如下:
服务配置文件参考 YAML [5],服务组成如下:
8 个 Spring Boot 应用程序:
-
account-service
-
auth-service
-
config-service (主要管理服务依赖的 configmap 和 secret 等配置)
-
gateway
-
monitoring-service
-
notification-service
-
registry-service
-
statistics-service
4 个 MongoDB 实例:
-
account-mongodb
-
auth-mongodb
-
notification-mongodb
-
statistics-mongodb
1 个 RabbitMq:
-
rabbitmq
对于 statistics-service 服务开发者需要自测联调,可以基于基准环境拉起一套含有 config-service' 和 statistics-service' 服务的子环境,通过访问基准环境的地址,并且在请求中加上子环境相应的 header 信息可实现访问子环境的能力。效果图如下:
前置准备工作
基础组件信息
-
Kubernetes 版本:v1.20.11(Node 2*8c16g)
-
Zadig 版本:1.11.0+
-
Skywalking 版本:v8.8.1
-
ElasticSearch 版本:7.5.1