概念
如何理解分布式?
- 是什么?
分布式系统由多个独立运行的计算机节点构成,多节点利用计算机网络进行信息传递,实现共同的任务。
- 为什么需要?
当代码庞大 系统复杂时,将其拆分从不同的服务,减少每个服务之间的耦合,便于每个模块单独的维护和测试。
- 提升系统可用性:改善单点故障造成整个服务不可用
- 提升系统并发能力:将请求通过负载均衡分发到不同机器上,根据情况进行水平拓展
- 提升系统容错性:同一服务部署至不同地方,如果某一地方出现意外,会分流值其他服务
- 低延迟:请求根据IP会被分配至距离较近的服务器
-
有什么问题?
- 依赖网络 产生数据丢失和不一致问题
- 系统复杂化
- CAP理论
如何理解微服务架构?
微服务是分布式的一种实现方案。
将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合实现任务。服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的Restful API)。
理论
CAP
一致性 可用性 分区容错性
理解:在保证分区容错性(分布式系统出现网络分区,某些节点间不连通时,依然能够对外提供服务)的情况下,一致性和可用性不能同时满足。
BASE
基本可用 软状态 最终一致性
基本可用:允许损失部分可用
软状态:允许数据存在中间态
最终一致性:所有数据副本在一段时间后达到一致状态。
读时修复
写时修复
异步修复
应用
zookeeper
- 保证CP
- 分布式协调事务
eureka
- 保证AP
- 注册中心 节点独立 不需要考虑数据一致性问题