分布式专题
分布式、微服务、集群的区别
这里的这篇文章已经讲的比较清晰,我就不转载过来了。
分布式的优缺点
优点:
- 把模块拆分,使用接口通信,降低模块之间的耦合度.
- 开发和发布速度。(把项目拆分成若干个子项目,不同的团队负责不同的子项目,提高同时开发速度快,也便于甩锅?)。
- 系统扩展性更高。(增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。)
- 可以灵活的进行分布式部署.
- 提高代码的复用性
......
缺点
- 系统之间的交互要使用远程通信,接口开发增大工作量。(开发人员少时,一个人可能负责多个服务,加大工作量,开发时间也会相对延长)
- 需要投入更多的精力去维护管理(可能需要经常发布,部署复杂)
- 学习曲线更大(由业务逻辑到架构逻辑)
- 测试调试排错更加复杂
分布式的关注重点
1. 数据一致性
一致性级别 | 描述 |
最终一致性 | 先保证局部一致,然后再未来的某个时刻达到一致性 |
顺序一致性 | 保证所有的进程以相同的顺序看到所有的共享访问。与时间无关 |
线性化 | 在顺序一致性的基础上,还要保证在一个全局的相对时间下顺序一致 |
绝对一致性 | 所有的共享访问按绝对时间排序,仅存在理论中 |
2. 高可用
高可用」指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。
—— 百度百科
3. 伸缩性
可伸缩性(可扩展性)是一种对软件系统计算处理能力的设计指标,高可伸缩性代表一种弹性,在系统扩展成长过程中,软件能够保证旺盛的生命力,通过很少的改动甚至只是硬件设备的添置,就能实现整个系统处理能力的线性增长,实现高吞吐量和低延迟高性能。