- 高可用
在我们谈高可用的时候,我们无时无刻不在面对各种故障。显然,让系统拥有自愈的能力和机制是面对故障时依旧保持高可用的根本。无状态的服务的恢复相对简单,只需自愈机制将故障服务重启或迁移到正常节点。而对于有状态的服务,如果状态是可以恢复的,不论是从更底层的存储系统恢复状态还是利用副本机制从其他副本恢复,那么自愈机制同样可以维持有状态服务的高可用。最后我们还希望隔离各种故障所产生的变化,让业务端尽可能感知不到故障恢复前后系统所发生的各种微妙变化。
- 可扩展
在一个系统里无状态的部分通常是最容易扩展的,在服务发现和路由机制的帮助下无状态的服务可以非常容易地横向扩展到更多的节点上。尽量消除组件的状态可以帮助我们提升整个系统的可扩展性。但业务是多样的,系统也是复杂的,不可能理想化地只包含无状态的组件。在这种情况下我们应当收拢状态,减少需要维护的强状态组件。如果能进一步将有状态的服务调整为可从外部系统恢复的弱状态服务,对整个系统的可扩展性同样能起到非常正面的作用。
- 去并发
通常业务系统越往核心组件走状态越重扩展的代价也越大,层层拦截快速降低需要深入到核心组件的并发请求量在大型系统设计上是非常常见的。在已读服务中采用了两个常见的分层去并发的设计。首先是高效率的缓存,通过提高缓存的命中率我们将大量的业务请求拦截在系统最薄弱的数据库层以外。其次是数据压缩机制,通过使用高效率的压缩机制来平衡计算和存储的消耗降低最终落到物理存储设备上的 I/O 压力。
原文链接: