Bookinfo是一个模仿在线书店的应用,页面上会显示一本书籍的描述,书籍的细节(如页数),以及关于书籍的一些评论。
Bookinfo应用由四个单独的服务构成,几个服务是由不同的语言编写的。这些服务对应用服务网格ASM并无依赖,但是构成了一个有代表性的服务网格的例子,即由多个服务、多个语言构成,且reviews服务具有多个版本。这四个服务的说明如下:
- productpage:会调用details和reviews两个服务,用来生成页面。
- details:包含了书籍的信息。
- reviews:包含了书籍相关的评论,同时会调用ratings服务。
- ratings:包含了由书籍评价组成的评级信息。
其中,reviews服务有3个版本:
- v1(1.5.1)版本会调用ratings服务,并使用1到5个黑色星形图标来显示评分信息。
- v2(1.5.0)版本不会调用ratings服务。
- v3(1.5.2)版本会调用ratings服务,并使用1到5个红色星形图标来显示评分信息。
说明为了直观的展示灰度版本之间流量切换情况,本教程以reviews服务的v1版本(黑星形)、v3版本(红星形)为例进行说明。
图 Bookinfo应用的端到端架构
在ASM中运行Bookinfo应用,无需对应用自身做出任何改变,只需简单的在ASM环境中对服务进行配置和运行,即把Envoy Sidecar注入到每个服务之中。最终的部署结果如下图所示。
图 Envoy Sidecar注入之后的Bookinfo应用
所有的服务都和Envoy Sidecar集成在一起,被集成服务的所有出入流量都被Sidecar所劫持,这样就可以利用ASM为应用提供服务路由、遥测数据收集以及策略实施等功能。