分布式计算系统设计

设计分布式计算系统

不是所有分布式系统都一样,只有原理性的东西是相同的,本质上是解决分布式常见的问题

  1. 需要仔细的做第一件事,是在大脑中首先构思一下整体系统的结构,在大脑中将服务大概地走一遍,觉得不合理的东西,推倒重新想,在不断想的时候,想的越多就越完美,追求完全完美费时费力,追求尽可能完美,程序高效开发时间短
  2. 分布式系统 肯定是 由单机系统升级来的,单机程序就是分布式系统的子系统,理论上能完成所有任务,以下是常见的几种分布式系统大致结构
  • 主从结构

  • 多服务直接请求

  1. 几乎所有分布式系统都避免不了所有的子系统将一些数据汇聚到一起,同步相互之间的状态,如将一个大任务,分到不同的子系统上处理,相互之间需要协调子系统分到的任务不和其他重合,所有子系统的任务加起来不遗漏,类似于这样的功能

  2. 分布式系统的基础是 快速而稳定的网络,通过网络不同的系统之间相互交流的速度,近似于在单机上不同程序之间交流的速度,通过网络将不同的系统联系起来,分布式系统首要容错就是网络异常引起的错误,包括但不限于(超时,断开,数据缺失,异常关闭)

  3. 分布式系统一定要充分设计、构思、推演,因为分布式系统的调试与测试是极其困难的

    • 高并发时出现问题,低并发时正常运行
    • bug 出现,规律难寻(难以复现)
    • 分布式需要的负载来源难以获取
    • 分布式系统部署与更新困难
    • 简而言之,用前期设计较少的时间换后期调试较多的时间

站在巨人的肩膀上

  1. 设计分布式系统,类似于设计一栋房子,以前老家看到一个泥土房子,是他们家亲手和泥,砌墙,割茅草,绑在一起,盖成屋顶,现在水泥是水泥车送来的,砖块是砖厂做好的,钢筋是钢铁厂做好的,我们要做的仅仅是思考我们要盖什么样的房子,需要什么样的水泥,什么样的钢筋和砖块适合我们要设计的房子,然后将他们像搭积木一样组合起来,实现我们的需求
  2. 常见的分布式系统模块
    1. redis 分布式锁
    2. zookeeper 分布式锁
    3. 数据库 实现锁
    4. nginx - keepalive 集群 实现负载均衡
    5. F5 硬件 集群实现负载均衡

猜你喜欢

转载自blog.csdn.net/weixin_42290927/article/details/106090787