目录
一、介绍
1. 什么是分布式
2. 分布式的作用
3. 分布式和单体结构的对比(帮助技术选型)
4. CAP定理(分布式理论基础)
5. 集群、分布式、微服务的区别
6. 总结
二、分布式基本概念介绍
2.1 什么是分布式
分布式:
利用物理架构形成多个自治的处理元素,不共享主内存(在多台独立的计算机上运行),但是通过发送信息合作。——Leslie Lamport
集群:
把单体服务部署到很多台机器上去。在前面加一个负载均衡。
实际项目的演进过程:
一个项目,大而全
多台机器,部署同样的应用
分布式:权限系统、员工系统、请假系统
2.2 分布式的作用
为什么需要分布式:
实际工作中的痛点:
工程臃肿
测试、上线繁琐
开发效率低(不敢改技术、改版本、改依赖)
单体应用的问题:
应用代码耦合严重,功能扩展难
新需求开发交互周期长,测试工作量大
新加入的开发同事需要很长时间才能熟悉系统
升级维护也很困难(改动任何一点地方都要升级整个系统)
系统性能提升艰难,可用性低,不稳定
分布式的好处:
增大系统容量(提高可以处理请求数)
加强系统可用
因为模块化,所以系统模块重用度更高
因为软件服务模块被拆分,开发和发布速度可以并行而变得更快
系统扩展性更高
团队协作流程也会得到改善
技术升级
2.3 单体和分布式的对比
分布式架构 系统管理成本还涉及:
各机器时间同步(要用一系列的协议把各个维度的时间进行统一,这是很深的领域)
数据同步
2.4 CAP定理
CAP的重要性:(分布式系统设计中最基础最关键的理论)
分布式系统不可能同时满足3个条件C A P。对于一个分布式系统来讲,网络传输不是特别的稳定,往往都是会出现问题的。从时间维度拉长考虑,你必须要考虑到 在网络出问题的时候,它的一个对策和解决方案。如何能在出现网络故障的时候,维持 系统按照原来的逻辑,去继续正常运转。这就是一个非常重要,且值得考虑的点。结合CAP理论去权衡。
C(Consistency 一致性):读操作是否总能读到前一个写操作的结果。也就是说,这个数据改变了,我要感知得到。
A (Availability 可用性):非故障节点应该在合理的时间内作出合理的响应(不是错误或超时的响应),但是可能不是最新的数据。
P (Partition tolerance 分区容错性):当出现网络分区现象后,系统能够继续运行。简单理解:网络错误。我这边有一个内容,你那边得不到我这个内容,因为我们之间通信断了。
CAP 怎么选:
P 不可避免,必须要保证它正常。
在什么场合,可用性高于一致性?CDN上更新网页,不是新版没关系,要能看到。
在什么场合,一致性高于可用性?支付或者交易,允许暂时不可用,不允许不一致。
三、总结
3.1 分布式基础总结
集群、分布式、微服务的区别:
集群和分布式的区别:分布式 一个业务拆分成多个子业务 部署在不同的服务器上;集群 同一个业务 部署在多个服务器上;
集群和微服务的区别:集群 分散压力;微服务 分散能力;
微服务和分布式的区别:微服务 一种架构设计方式 逻辑上的架构;分布式 强调系统部署方式,机器与机器之间会遇到哪些通讯上的问题,时间上的不一致,顺序上的协调,如何容错,要考虑实际的部署之后的机器之间的物理架构;
架构顺序:先做逻辑上的架构,再做物理上的架构。
现在生产环境下,微服务肯定是通过分布式部署的。