前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式系统入门

分布式系统入门

作者头像
栋先生
发布2018-09-29 16:52:44
1.4K0
发布2018-09-29 16:52:44
举报

一、什么是分布式系统?

分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅是通过消息传递进行通信和协调的系统。 首先分布式系统一定是由多个节点组成的系统,一般来说一个节点就是我们的一台计算机;然后这些节点不是孤立的,而是相互连通的;最后,这些连通的节点上部署了我们的组件,并且互相之间的操作会有协同。

二、为什么需要分布式系统?

  1. 升级单机处理能力的性价比越来越低。
    • 大型主机的人才培养成本非常之高,大型主机操作非常复杂,对运维人员的要求非常高。
    • 大型主机非常昂贵。通常一台配置比较好的IBM大型主机,其售价在上百万美元甚至更高。
    • 根据摩尔定律,在一个确定的时间点,通过更换硬件做垂直拓展的方式来提升性能会越来越不划算。
  2. 单机处理能力存在瓶颈。
    • 在某个固定的时间点,单颗处理器有自己的性能瓶颈,也就是说即使你愿意话更多的钱去买计算能力也买不到了。
  3. 出于稳定性和可用性的考虑。
    • 集中式的系统具有明显的单点问题。大型主机虽然在性能和稳定性方面表现卓越,但是一旦出现了故障,那么整个系统都将处于不可用状态,其后果相当严重。

三、分布式系统基础知识

mark
mark

四、分布式系统中有哪些难点?

  1. 缺乏全局时钟:分布式系统是由多个节点组成,通过多个进程之间的交换消息来进行通信。由于每个节点都拥有自己单独的时钟,没有一个全局的时钟,所以很难定义两个事件的先后顺序。对于这种情况,我们可以把这个工作交给一个单独的集群来完成,通过这个集群来区分多个动作的顺序。
  2. 面对故障独立性:在分布式系统中,整个系统的一部分有问题而其他部分正常是经常发生的情况,我们称之为故障独立性。一个被大量工程实践所检验过的黄金定理是:任何在设计阶段考虑到的异常情况,一定会在系统实际运行中发生。并且,在系统实际运行过程中还会遇到很多在设计时未能考虑到的异常故障。所以,除非需求指标允许,在系统设计时不能放过任何异常情况。
  3. 处理单点故障 在分布式系统中,如果某个角色或者功能只有某台单机在支撑,那么这个节点称为单点,其发生的故障称为单点故障,也就是常说的SPoF(Single Point of Failure)。要尽量把每个单点都变为集群实现,如果不能变为集群实现,一般还有两种选择:
    • 给这个单点做好备份,能够在出现问题时进行恢复,并且尽量做到自动恢复,降低恢复需要用的时间。
    • 降低单点故障的影响范围。如在一个交易网站中,所有的交易数据放在一个数据库中,这就形成了单点。我们可以考虑拆分数据,将原来的一个数据库拆分为两个(根据一定规则做Sharding),那么,在一个数据库出现问题时,影响的就不会是全部范围了。
  4. 事务和数据一致性的挑战 在数据库理论中我们都了解过ACID,但是在分布式数据库中,数据分散在各台不同的机器上,如何对这些数据进行分布式的事务处理具有非常大的挑战。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年06月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是分布式系统?
  • 二、为什么需要分布式系统?
  • 三、分布式系统基础知识
  • 四、分布式系统中有哪些难点?
相关产品与服务
分布式数据库 TDSQL
分布式数据库(Tencent Distributed SQL,以下简称 TDSQL)是腾讯打造的一款企业级数据库产品,具备强一致高可用、全球部署架构、高 SQL 兼容度、分布式水平扩展、高性能、完整的分布式事务支持、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档