why:系统太大而出现的系统结构:一个系统变得庞大了之后,结构就不是线性的了;分布式系统并非是非要这样建立,起源是因为系统变大之后,可能很多接口要新增,很多功能要接入,很多子系统要接入;
(
web中系统不是最大的範围,应该说系统只是一个描述範围的方式,反而服务是更加面向顾客的描述方式;所以系统设计,和服务设计,哪个才是大家最需要的?小而美的话,应该从服务设计出发;大而全,才需要从系统设计出发;
)
how:这个时候,无法使用线性的关係,就会形成分布式系统了:星状系统;和网络的拓扑图一样;
核心概念:
Load Balancer:分配资源,是一个决策树;
服务失败的四种情况:传输失败,系统失败,二次存储失败,沟通中间层失败;
服务失败的解决方案:可预估的错误的处理方式:解决错误;不可预估的错误:恢复到之前没有错误的状态;
二阶段提交:为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种演算法;
深入探讨:
1 分布是指多个进程同时运行;分布运行中蕴含很多问题是我们无法想象的:比如数据什么时候收敛,死锁,确切的时间是什么?
2 分布式成为必须的原因:範围,複杂度不断扩大;
(
只要组织在发展,就会必然形成这样的趋势;
同样的,只要服务不断的在成长,势必成为这样的状态;
)
3 并发并非只是像操作系统中的多线程管理一样,并发控制也是一个安全问题;
比如使用权控制:会出现当前用户干扰其他用户的情况;
分布式系统的错误,发生的层次不同:从硬体层到商业环境层面,都会出现;
(
之前我都是认为这个就是操作系统的多线程的管理一样,不同的cpu让这个这个thread跑一下,然后让另一个thread跑一下;
一个pc的环境,相对比较简单;
一个分布式系统的环境,是一个商业环境,複杂多变;
)