目录
什么是分布式
权威定义
- 利用物理架构形成多个自治的处理元素,不共享主内存,但是通过发送信息合作。——Leslie Lamport
实际项目的演进过程
- 单机:一个项目,大而全
- 集群:多台机器,部署同样的应用
- 分布式:全县系统、员工系统、请假系统
分布式的作用
单体应用的问题:
- 应用代码耦合严重,功能扩展难
- 新需求开发交付周期长,测试工作量大
- 新加入的开发同事需要很长时间才能熟悉系统
- 升级维护也很困难(改动任何一点地方都要升级整个系统)
- 系统性能提升艰难,可用性低,不稳定
分布式的好处
- 增大系统容量
- 加强系统可用
- 因为模块化,所以系统模块重用度高
- 因为软件服务模块被拆分,开发和发布速度可以并行而变得更快
-
系统扩展性更高
- 团队协作流程也会得到改善
- 技术升级
单体和分布式的对比
CAP定理
CAP是啥
- C(Consistency,一致性):读操作是否总能读到前一个写操作的结果
- A(Availability,可用性):非故障节点应该在合理的时间内做出合理的响应(不是错误或超时的响应),但是可能不是最新的数据
- P(Partition tolerance,分区容错性):当出现网络分区现象后,系统能够继续运行
CAP怎么选
P几乎是必选的,因为我们的网络做不到100%的可靠,一定会出现故障,而CAP不可兼得,所以只能选CP或AP。
CP或AP:支付、交易的场合对一致性的要求很高;门户网站大多会选择可用性,短时间拿不到最新的数据问题不大。
集群、分布式、微服务的区别
集群 VS 分布式
分布式:一个业务拆分成多个子业务,部署在不同的服务器上
集群:同一个业务,部署在多个服务器上
集群 VS 微服务
集群:分散压力
微服务:分散能力
微服务 VS 分布式
微服务:架构设计方式(逻辑)
分布式:系统部署方式(物理)
参考:慕课网-Java工程师