Contents
  1. 1. 可用性(availability)
    1. 1.1. Fail-over
    2. 1.2. Replication
  2. 2. 稳定性(stability)
    1. 2.1. Timeouts
    2. 2.2. Circuit Breaker
    3. 2.3. Let-it-crash
    4. 2.4. Fail-fast
    5. 2.5. Bulkheads
    6. 2.6. Steady State
    7. 2.7. Throttling
  3. 3. 可扩展性(scalability)
  4. 4. 权衡
    1. 4.1. 性能 vs 可扩展
    2. 4.2. 延迟 vs 吞吐
    3. 4.3. 可用性 vs 一致性
  5. 5. Status(状态管理)
  6. 6. behavior(行为管理)

原文地址 https://www.slideshare.net/jboner/scalability-availability-stability-patterns

这个ppt总结真的很全面,从可扩展性,可用性,稳定性,3个方面分别讲了达到每个目的,以及有什么手段,什么方法来解决这个问题。
没看文章前,我是有一些零碎的概念的,但看了文章后,我突然有一些理解分布式了,架构的目的是达到现实目标,要达到哪方面目的,就用哪些技术。(第一遍读还有很多,不懂的地方,先做一个粗略的总结)

可用性(availability)

达到可用性,有2种手段,故障转移(Fail-over)和冗余备份(Replication)

Fail-over

故障转移,表面上看是只要有失败就转移到其他正常的服务上去,然后再回写同步数据。但实际情况要复杂的多,可能出现各种失败的情况。

Replication

备份分为几种:master-slave,tree-replication,master-master,Buddy replication

同步方式:
active replication:push
passive replication: pull

稳定性(stability)

Timeouts

保证每个调用都有超时时间,不会无限期假死。

Circuit Breaker

将失败作为一种正常的状态,而不是维护正常的状态。出现异常,尽早发现,采取其他处理。

Let-it-crash

如果服务出现异常,不用尽力恢复,尽早发现,及时止损。

Fail-fast

跟上一个有点像

Bulkheads

有点像线程池,将一些资源放在一个池子里,与其他进行隔离,即使出问题,也不会导致全局卡死,也保护了资源。

Steady State

清理状态,时刻保持可用。

Throttling

限流,比如控制请求的数量

可扩展性(scalability)

可扩展性主要是为了管理过载,分两种内容:状态与行为。
状态:分布式缓存,数据网格,服务状态,HTTP缓存,CAP,同步,分区,备份
行为:计算网格,事件驱动架构,负载均衡,并行计算

对于可扩展的一般的建议
默认不可变
引用透明(函数式编程)
懒加载
考虑数据存储

权衡

性能 vs 可扩展

如何确定性能问题
单用户很慢,
如何确定可扩展问题
单用户很快,压力大就慢

延迟 vs 吞吐

最大的吞吐量,加上可接受的延迟

可用性 vs 一致性

CAP
consistency
availability
Partition
ACID
Atomic
Consistency
Isolated
Durable

什么时候需要强一致性,什么时候需要最终一致性

Status(状态管理)

Partitioning,
HTTP caching:reverse proxy,cdn,
,Data Grids,
Service of record:RDBMS sharing,NOSQL(key-value,Column,document,graph,datastructure)
Distrbuted caching:write-through,write-behind,eviction policites,replication,peer to peer
Concurrency:Shared-state, message-passing,dataflow,software transactional memory

behavior(行为管理)

Event-Driven Archietecture(
Domian events,Event sourcing, command and Query Responsiblity Segregation(CQRS)pattern,
Event Stream Processing,Messaging(Publish-Subscribe,Point-to-point,Store-forward,Request-Reply),Enterprice Service Bus ,Actors,Enterprice Integration Architecture(EIA)

Compute Grids
Load-balancing
Parallel computing

Contents
  1. 1. 可用性(availability)
    1. 1.1. Fail-over
    2. 1.2. Replication
  2. 2. 稳定性(stability)
    1. 2.1. Timeouts
    2. 2.2. Circuit Breaker
    3. 2.3. Let-it-crash
    4. 2.4. Fail-fast
    5. 2.5. Bulkheads
    6. 2.6. Steady State
    7. 2.7. Throttling
  3. 3. 可扩展性(scalability)
  4. 4. 权衡
    1. 4.1. 性能 vs 可扩展
    2. 4.2. 延迟 vs 吞吐
    3. 4.3. 可用性 vs 一致性
  5. 5. Status(状态管理)
  6. 6. behavior(行为管理)