分布式架构设计
分布式理论与分布式架构设计理论
1. 分布式架构介绍
通俗的理解,所谓分布式系统,就是一个业务拆分成多个子业务,分布在不同的服务器节点,共同构成的系统称为分布式系统
分布式系统面临的问题:
- 通信异常
- 网络分区
- 节点故障
- 三态:成功、失败和超时
- 重发
- 一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同
2.分布式理论
2.1 数据一致性
分布式数据一致性,指的是数据在多份副本中存储时,各副本中的数据是一致的.
一致性分类:
- 强一致性
- 弱一致性
- 最终一致性: 最终一致性也是弱一致性的一种
2.2 CAP定理
CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点
一致性这里指的是强一致性
CAP三者不可能同时满足论证
一般选AP
3.分布式一致性协议
两阶段提交协议,简称2PC(2 Prepare Commit),是比较常用的解决分布式事务问题的方式,要么所有参与进程都提交事务,要么都取消事务,即实现ACID中的原子性(A)的常用手段。
三阶段提交协议
3PC,全称 “three phase commit”,是 2PC 的改进版,将 2PC 的 “提交事务请求” 过程一分为二,共形成了由CanCommit、PreCommit和doCommit三个阶段组成的事务处理协议。
4.分布式系统设计策略
4.1 心跳检测
4.2 高可用
4.3 容错性
4.4 负载均衡
5. 分布式架构服务调用
5.1 服务调用
5.2 实现方式
HTTP 应用协议的通信框架
RPC 框架
跨域常见的解决方案
- 使用jsonp解决网站跨域
缺点:不支持post请求,代码书写比较复杂 - 使用HttpClient内部转发
- 使用设置响应头允许跨域
response.setHeader(“Access-Control-Allow-Origin”, “*”); 设置响应头允许跨域. - 基于Nginx搭建企业级API接口网关
- 使用Zuul搭建微服务API接口网关
Zuul是spring cloud中的微服务网关。网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。可以使用zuul的过滤器的请求转发去解决跨域问题
6.分布式服务治理
6.1 服务协调
分布式协调技术主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果
分布式锁
6.2 服务削峰
- 消息队列解决削峰
- 流量削峰漏斗:层层削峰