istio升级项目
# 升级项目
之前的项目中只有 prod 服务,具有版本的区分。 现在对项目进行一些升级, 模拟一个多服务的项目。
- 两个服务,
review / prod
- 服务之前还有调用关系。
prod -> review
# review
这次新加入了 review
评论服务。
{
"1": {
"id": "1",
"name": "zhangsan",
"commment": "istio 功能很强大, 就是配置太麻烦"
},
"2": {
"id": "1",
"name": "wangwu",
"commment": "《istio in action》 真是一本了不起的书"
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# prod
升级 prod 服务, 除了之前返回本身的数据信息之外,还需要返回关联的评论信息。
type Product struct {
Name string
Price int
Reviews interface{} // 评论信息
}
1
2
3
4
5
2
3
4
5
这部分评论信息的来源就是上面新添加的评论服务。
func getReivews() (map[string]model.Review, error) {
reviews := make(map[string]model.Review)
resp, err := http.Get("http://svc-review/review/all")
if err != nil {
return nil, fmt.Errorf("reqeust svc-review failed: %v", err)
}
defer resp.Body.Close()
data, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("read body failed: %v", err)
}
err = json.Unmarshal(data, &reviews)
if err != nil {
return nil, fmt.Errorf("json unmarshal data failed: %v", err)
}
return reviews, nil
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
完整结果如下
{
"data": {
"Name": "istio in action",
"Price": 300,
"Reviews": {
"1": {
"id": "1",
"name": "zhangsan",
"commment": "istio 功能很强大, 就是配置太麻烦"
},
"2": {
"id": "1",
"name": "wangwu",
"commment": "《istio in action》 真是一本了不起的书"
}
}
},
"version": "v1.1.0"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
上次更新: 2023/04/05, 05:23:58