分布式系统:what、why、how

1. 什么是分布式系统?

分布式系统是基于网络进行通信、为完成同一个目标而互相协作的一组节点集群。

也看看其他人的观点:

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。

https://www.cnblogs.com/xybaby/p/7787034.html

Also known as distributed computing and distributed databases, a distributed system is a collection of independent components located on different machines that share messages with each other in order to achieve common goals.

https://www.confluent.io/learn/distributed-systems/

2. 为什么要引入分布式系统?

单机系统的计算性能、存储容量达到了瓶颈,具体分为四点:

  • 性能和容量:已经触达单机的计算瓶颈、存储容量瓶颈

  • 投入产出比:升级单机硬件的成本太高,已经大于它带来的性能或容量的提升效果

  • 研发效率:随着系统越来越复杂,参与维护的人越来越多,单体系统的维护效率触发瓶颈

  • 运维要求:单机系统一挂全挂的特点,不满足互联网服务24*7可用的要求

在上面这些问题的挑战下,分布式系统的思想应运而生,分布式系统的核心思想是使用大量普通规格的普通机器,互相协调,实现和单机系统同样的业务目标。主要的吸引力在于:

  • 扩展性:随着机器的线性增加,分布式系统的存储和计算性能也可以线性增加

  • 灵活性:基于普通机器的集群,可以根据业务流量,灵活扩容或缩容,提高资金的利用率

  • 可用性:单个模块挂掉,不会影响其他模块


3. 分布式系统又带来了哪些问题?

天下没有免费的午餐,要享受分布式系统的扩展性、弹性运维的好处,就得承受它带来的成本,从研发过程的视角来,最大的挑战是复杂度

  • 要妥善处理好多个节点之间的协同问题、数据分区、数据一致性等问题,难度很大

  • 将系统拆到不同的计算机节点上,运维难度变高

  • 测试和排查问题的难度提高


4. 如何建设优秀的分布式系统?

4.1 运行视角

引入分布式系统也是有成本的,需要妥善处理好多个节点之间的协调的问题,对于计算机系统来说,主要就是存储和计算两个主题,那么对应到分布式系统中也依然是这样:

  • 分布式计算

    • 两个节点之间的进程如何通信?

    • 如何发现自己要调用的服务?

    • 如何做避免系统雪崩?

    • 如何确定系统是正常运行的?

    • 如何做分布式锁?

  • 分布式存储

    • 如何做数据分片?

    • 如何保障数据一致性?

    • 如何做分布式事务?


4.2 抽象视角

对于运行视角面临的一些问题,进行抽象和归类,可以归为下面三个问题:

  • 路由问题

  • 共识问题

  • 运维问题

84ce682a31f1f0039ae2b399afc9c6cd.png

参考资料

  • https://www.cnblogs.com/xybaby/p/7787034.html

  • https://www.confluent.io/learn/distributed-systems/

  • A Thorough Introduction to Distributed Systems

  • https://time.geekbang.org/column/article/481016

  • https://time.geekbang.org/column/article/141

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值