Distributed System-分布式系统 KC 关键特征

Distributed System 分布式系统 KC 关键特征

需要考虑的问题

  1. 有哪些不同的架构模块可以使用?
  2. 这些模块怎么互相交互?
  3. 应该怎么最好地使用这些模块?怎样做取舍?

关键特征(Key Chracterristics)

扩容性(Scalability)

扩容性(Scalablity)是指一个系统、进程、网络的容量会随着需求的增加而变大

水平扩容 VS 垂直扩容(Horizontal vs Vertial Scaling)

水平扩容(Horizontal Scaling)

  • 添加更多的服务器, 例如 Cassandra 和 MongoDB 可以添加机器

垂直扩容(Vertical Scaling)

  • 给已有的服务器添加更多资源,例如 CPU、RAM、Storage 等
    • 例如 MySQL 从小服务器换成大服务器
  • 可能会有一个停机时间(DownTime),并且有上限

可靠性(Reliability)

可靠性(Reliability)是指一个给定周期内系统发生故障的概率

  • 分布式系统被认为是可靠的,是因为故障机器会被另一台机器替换
    • 为了清除单点故障,可靠的系统必须准备弹性(Resilience)备份,并且支付开销

可用性(Availablity)

可用性(Avaliablity)是指一个系统在特定周期内,能运行所需功能的时间

  • 可用性考虑可维护性(Maintainablity)、修理时间、备件(Spares )可用性、和其他后勤(Logistics)考虑。
    • 例如一台飞机能飞很多小时,只有很小的停机时间(DownTime),那么就是有高可用性

可靠性 VS 可用性

可靠性是考虑了所有可能现实世界的情况后,随着时间发展的可用性

  • 如果一个系统是可靠的,那么它肯定是可用的
  • 反过来,一个可用的系统未必可靠
    • 可能会通过最大限度地缩短维修时间来保证可用性,但是却降低产品的可靠性
    • 例如一个在线零售商店,可能 99.99 % 可用,但是它却没有任何信息安全测试,那么就很可能出事故

有效性(Efficiency)

主要提现在一些效率的度量值(Measure)

  • 例如响应时间(延迟)、吞吐量(Througput)或带宽(Bandwidth),这两个度量值对应于以下单位成本:
    • 系统节点全局发送的消息数量,不管消息大小如何
    • 代表数据交换量的消息大小

可维护性(Serviceability) / 可管理性(Manageability)

可维护性(Serviceability) / 可管理性(Manageability)是指系统修复/维护的简单性和速度

  • 如果一个故障系统的修理时间增加,可用性就会下降
    • 故障的早期检测可以减少或避免系统停机时间。
    • 例如,一些企业系统遇到系统故障时可以自动呼叫服务中心(无需人工干预)