
178
|
第
6
章
6.8.9 从基础的指标开始
你应该确保始终为系统中的每个组件收集流量(对组件有多少需求)
、
延迟(响应请求所
花费的时间)以及错误(请求失败的比率)信息。
6.9 服务通信
服务通信是云原生应用的重要组成部分。无论是客户端与后端进行通信,服务与数据库
进行通信,还是在分布式架构中相互间进行通信的单个服务,这些交互都是云原生应用
程序的重要组成部分。根据需求不同,可以使用许多不同形式的通信。以下小节提供了
一些服务通信相关的最佳实践。
6.9.1 设计时考虑前后兼容性
通过向后兼容,你可以确保添加到服务或组件的新功能不会破坏任何现有服务。例如,
在图 6-3 中,服务 A v1.0 与服务 B v1.0 一起使用。向后兼容意味着服务 B v1.1 的发行
不会破坏服务 A 的功能。
服务 B
服务 B
服务 A
图 6-3:向后兼容
为了确保向后兼容,添加到 API 的任何新字段都应该是可选的或具有合理的默认值。任
何现有字段都绝不能重命名,因为这将破坏向后兼容性。
并行更改(parallel change)也称为扩展和收缩模式(expand and contract
pattern),可用于安全地引入向后不兼容的更改。例如,假设服务所有者想更
改接口上的属性或资源。服务所有者将使用新的属性或资源来扩展该接口,然
后在所有用户都切换到新的服务接口后,再删除旧的属性。