分布式起源单机性能瓶颈所以需要多台服务器来支撑请求,所以存在分布式。系统发展到分布式自然面临CAP问题。所有称自己是分布式架构的都必须面对CAP问题。
CAP:一致性;可用性;分区容错性
分布式
从客户端发起请求来说首先是http调用进入负载均衡,然后进入某个服务,在这个服务中执行任务,存取数据,事后对用户数据进行分析计算,在整个过程中需要协调硬件资源等。从上述流程中抽取出下面的分布式内容:
- 分布式调用
- 分布式协同
- 分布式存储
- 分布式计算
- 分布式资源管理和调度
二、分布式调用
当单体服务支撑不了业务面临的下一个就是服务拆分。拆分后的服务之间如何调用就是需要好好讨论的问题。按照从客户端到服务需要经过多个调用过程,按照顺序:负载均衡-->网关-->服务A-->服务B
2.1 负载均衡
目前业界提到负载均衡立马想到nginx。请求的流程都进入nginx,然后nginx进行转发
2.2 网关
spring cloud gateway
2.3 服务注册和发现
2.3.1 Eureka
2.3.2 Nacos
2.4 服务间调用
2.4.1 feign
2.4.2 dubbo
三、分布式协同
多个服务读取/写入同一个资源那么就面临着资源竞争,所以需要分布式锁来保证服务间的互斥。多个服务做同一件事情还面临着分布式事务的问题。应用服务在集群部署时还有主从问题
3.1 分布式锁
3.1.1 分布式锁原理
3.1.2 redis实现
3.1.3 数据库实现
3.2 分布式事务
3.2.1 ACID理论
3.2.2 CAP理论
3.2.3 BASE理论
3.2.4 DTP模型
3.2.5 分布式事务2PC解决方案
3.2.6 分布式事务TTC解决方案
3.3 分布式选举
ZK