购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

6.1 微服务应用架构

在介绍服务部署前,先介绍整个微服务应用的架构,如图6-1所示。

图6-1 应用的微服务架构

其中,service-js服务是指由Vue/React实现的前端页面,当用户访问前端Web页面时,会看到一个静态页面,当用户点击相应的按钮时,前端页面会通过浏览器异步请求后端service-python服务提供的API接口,service-python调用后端其他服务完成用户的请求,并把结果合并处理之后发送给前端浏览器,当前端页面收到请求的响应数据时会渲染出新的页面呈现给用户。

service-go是基础层服务,不调用其他服务,直接返回结果数据。响应结果数据如下:


{
    "message": "go v2"
}

service-lua是中间层服务,不调用任何其他服务,直接返回结果数据。响应结果数据如下:


{
    "message": "lua v1"
}

service-node是中间层服务,调用底层服务service-go,整合数据响应。正常响应结果数据如下:


{
    "message": "node v1",
    "upstream": [{
        "message": "go v2",
        "response_time": "0.01"
    }]
}

service-node调用底层服务异常时响应数据如下:


{
    "message": "node v1",
    "upstream": []
}

service-python服务提供API接口给前端调用,调用中间层的service-node服务和service-lua服务,整合所有服务的数据,发送给前端API请求,正常响应数据如下:


{
    "message": "python v2",
    "upstream": [{
        "message": "lua v1",
        "response_time": 0.1
    }, {
        "message": "node v2",
        "upstream": [{
            "message": "go v1",
            "response_time": "0.01"
        }],
        "response_time": 0.1
    }]
}

service-python调用后端服务异常时响应数据如下:


{
    "message": "python v1",
    "upstream": []
}

service-js服务在浏览器中异步调用后端service-python接口服务,在获取到响应数据后,会通过图表工具ECharts库在浏览器中绘制出本次服务调用链上的调用情况,包括调用成功了哪些服务,以及调用成功服务的响应时间。在绘制的服务调用情况图中(见图6-2),只会显示调用成功的服务,没有调用成功的服务不会展示在图中。后端的每个服务都分别有v1、v2两个版本,没有经过路由规则配置的时候,用户请求会以轮询的方式落到每一个版本上。在绘制的服务调用图中,会显示出本次调用的服务的版本,以便在后续的实验中更方便地观察路由配置有没有真正生效。

React版本所有服务调用成功如图6-2所示。

图6-2 React版本所有服务调用成功

React版本部分服务调用失败如图6-3所示。

图6-3 React版本部分服务调用失败

Vue版本所有服务调用成功如图6-4所示。

图6-4 Vue版本所有服务调用成功

Vue版本部分服务调用失败如图6-5所示。

图6-5 Vue版本部分服务调用失败

【实验前的准备】

进行本章实验前,需要先执行如下的前置步骤。

下载实验时用到的源码仓库: j33GPP3mTrJmgd3bhR16RKzRGYGK+xsNaM6RZ3G0dLFhnjbOhYCV+9Ax7DwKf1gf


$ sudo yum install -y git
$ git clone https://github.com/mgxian/istio-lab
Cloning into 'istio-lab'...
remote: Enumerating objects: 247, done.
remote: Counting objects: 100% (247/247), done.
remote: Compressing objects: 100% (173/173), done.
remote: Total 774 (delta 153), reused 164 (delta 73), pack-reused 527
Receiving objects: 100% (774/774), 283.00 KiB | 229.00 KiB/s, done.
Resolving deltas: 100% (447/447), done.
$ cd istio-lab

点击中间区域
呼出菜单
上一章
目录
下一章
×