升级指南
1.6.x 升级到 1.7.x
dtm在1.7中引入新的存储引擎,因此重写了配置相关的代码。您只需要按照新的配置格式进行dtm服务器的配置即可
1.9.x 升级到 1.10.x
dtm在1.10中,引入了新的表示错误协议,该协议与旧协议不同,但做了兼容。做法如下:
1.9.x 及更低版本行为 旧协议参考
- SUCCESS http:状态码 200 && 结果内容含 SUCCESS; grpc: err == nil
- FAILURE http: 状态码 200 && 结果内容含 FAILURE; grpc: Code == Aborted && Message == FAILURE
- ONGOING http: 状态码 200 && 结果内容含 ONGOING; grpc: Code == Aborted && Message == ONGOING
变更为(同时会兼容旧的 新协议参考)
- SUCCESS http: 状态码 200; grpc: err == nil
- FAILURE http: 状态码 409 (http.StatusConflict);grpc Code == Aborted
- ONGOING http: 状态码 425 (http.StatusTooEarly);grpc Code == FailedPrecondition
新版本的DTM服务器和客户端SDK是这么做兼容的:
- 服务端返回 SUCCESS http:状态码 200 && 结果包含 SUCCESS;grpc: err == nil
- 服务端返回 FAILURE http:状态码 409 && 结果包含 FAILURE;grpc: Code == Aborted && Message == FAILURE
- SDK与服务端判断 SUCCESS http:状态码 200 && 结果不包含 FAILURE|ONGOING; grpc:err == nil
- SDK与服务端判断 FAILURE http:状态码 409 || 结果包含 FAILURE;grpc: Code == Aborted && Message != ONGOING
- SDK与服务端判断 ONGOING http:状态码 425 || 结果包含 ONGOING;grpc: Code == FailedPrecondition || Message == ONGOING
新版本的SDK可以和新旧版本的协议兼容;新版本的服务器能够与新旧版本的协议兼容。因此理论上可以随意升级。
但是从稳定性和渐进式迁移的角度来看,建议先逐步升级SDK,再升级dtm服务器。逐步升级一部分应用的SDK版本,过程中,可以充分灰度,监控出现的问题。然后再逐步灰度dtm服务器