分布式系统入门

一、什么是分布式系统?

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

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

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

三、分布式系统基础知识

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一名叫大蕉的程序员

分布式架构的套路No.74

今天小蕉跟大伙一起聊聊分布式系统的架构的套路。在开始说套路之前,大家先思考一个问题,为什么要进行分布式架构? 大多数的开发者大多数的系统可能从来没接触过分布式...

22870
来自专栏CSDN技术头条

吴英昊:电商搜索引擎的架构设计和性能优化

前当当网高级架构师吴英昊对电商搜索引擎的架构进行了深入分享。在演讲中,他首先就电商搜索引擎的特点进行了解析,随后更分享了电商搜索引擎的架构、数据更新、故障恢复等...

582100
来自专栏企鹅号快讯

分布式架构的套路No.74

今天小蕉跟大伙一起聊聊分布式系统的架构的套路。在开始说套路之前,大家先思考一个问题,为什么要进行分布式架构? 大多数的开发者大多数的系统可能从来没接触过分布式系...

39690
来自专栏张戈的专栏

企业互联网+转型实战:如何进行PB级别数据的架构变迁

随着 DT 时代的来临,数据对于企业经营决策的价值日益凸显,而企业在进行互联网+转型的过程中,如何让数据架构平滑迁移到大数据平台,对于传统业务的转型升级至关重要...

45870
来自专栏NetCore

对于大数据大流量情况下微软架构的水平扩展的遐想(瞎想)

最近回顾SAAS的书籍,书中的扩展架构都有点让我痴迷,但书中介绍的都是以Java,Apache,JBoss,Hadloop等技术实现负载均衡,大数据处理,对于微...

23680
来自专栏CSDN技术头条

微博热点事件背后数据库运维的“功守道”

【导语】 微博拥有超过3.76亿月活用户,是当前社会热点事件传播的主要平台。而热点事件往往具有不可预测性和突发性,较短时间内可能带来流量的翻倍增长,甚至更大。如...

306100
来自专栏性能与架构

Facebook 迁移 Messenger 底层存储的过程

Facebook Messenger 用户超10亿,可以即时分享文字、图片、视频,产品自身不断的发展,背后的系统也在不断改变,开始是一个单体服务,后来变为有专门...

13210
来自专栏北京马哥教育

Uread 自动化运维平台七大阶段实践

首先技术并没有好坏之分,只能说一种技术在特定场景会优于另一种技术。 首先uread优读( http://aiuread.com/ )作为一个还处于起步阶段的团队...

37740
来自专栏EAWorld

微服务模式系列之九:独享数据库

译者自序: 熟悉我的朋友都知道,我很不喜欢翻译东西,因为在两种语言的思维方式之间做频繁切换对我来说是件很痛苦的事情。但是这次不一样,公司和同事的大力支持降低了我...

35460
来自专栏技术翻译

理解分布式系统的8个谬误

你在分布式系统上工作吗?微服务,Web API,SOA,Web服务器,应用服务器,数据库服务器,缓存服务器,负载均衡器 - 如果这些描述了系统设计中的组件,那么...

17520

扫码关注云+社区

领取腾讯云代金券