
服务
|
51
会在任何时间被不同的条件(如,机器故障或者是计算资源重新平衡)触发。
如前所述,将无状态服务迁移到新机器上比迁移有状态服务要更简单,而
能够快速启动新的服务实例是提高可用性的关键。然而,无状态并不是云
原生应用的强制性要求。分区等技术使有状态服务实例也能高效地移动。
组件间隔离
由多组件组成的云原生应用程序中,组件应该可以在其他组件失效时继续
运行。虽然该组件可能无法提供所需的全部功能,但当所有依赖的服务重
新上线时,它仍然可以恢复到完整功能状态。换句话说,失效的组件或重
新启动的组件不应该引起其他组件的级联错误。
这种隔离通常是通过明确定义的
API
、具有自动重试功能的客户端类库以
及通过消息传递的松耦合设计的组合来实现的。
组件之间的隔离也意味着组件应该具有独立的可扩展性。基于消费的模式
要求运营商对云原生应用各个组件的资源消耗进行微调,以最小的资源消
耗来更好地满足需求。这就要求组件在相关组件进行扩展时能够适应工作
负载的变化。
云原生应用通常由微服务组成(事实上,这两个术语通常被认为是同义词)。
尽管如此命名,但微服务不一定要小,这个概念完全取决于操作。微服务应
用是隔离的、可持续部署的、易于扩展的,因此非常适合云环境。
1.2.4
基础设施是乏味的
为了使云平台实现可用性和弹性的承诺,必须将工作负载与底层基础设施分
离,以便根据需要调度基础设施进行常见的云操作,如故障转移和扩展。开
发人员不应该关注基础设施。诸如开放应用模型(
Open Application Model/
OAM
,本章后面将讨论)和 ...