分布式专题

分布式、微服务、集群的区别

这里的这篇文章已经讲的比较清晰,我就不转载过来了。


分布式的优缺点

优点:

  1. 把模块拆分,使用接口通信,降低模块之间的耦合度.
  2. 开发和发布速度。(把项目拆分成若干个子项目,不同的团队负责不同的子项目,提高同时开发速度快,也便于甩锅?)。
  3. 系统扩展性更高。(增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。)
  4. 可以灵活的进行分布式部署. 
  5. 提高代码的复用性

......

缺点

  1. 系统之间的交互要使用远程通信,接口开发增大工作量。(开发人员少时,一个人可能负责多个服务,加大工作量,开发时间也会相对延长)
  2. 需要投入更多的精力去维护管理(可能需要经常发布,部署复杂)
  3. 学习曲线更大(由业务逻辑到架构逻辑)
  4. 测试调试排错更加复杂

分布式的关注重点

1. 数据一致性

一致性级别

描述

最终一致性

先保证局部一致,然后再未来的某个时刻达到一致性

顺序一致性

保证所有的进程以相同的顺序看到所有的共享访问。与时间无关

线性化

在顺序一致性的基础上,还要保证在一个全局的相对时间下顺序一致

绝对一致性

所有的共享访问按绝对时间排序,仅存在理论中

2. 高可用

高可用」指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。
—— 百度百科

3. 伸缩性

可伸缩性(可扩展性)是一种对软件系统计算处理能力的设计指标,高可伸缩性代表一种弹性,在系统扩展成长过程中,软件能够保证旺盛的生命力,通过很少的改动甚至只是硬件设备的添置,就能实现整个系统处理能力的线性增长,实现高吞吐量和低延迟高性能。

4. 高性能

5. 易测试

6. 易运维