一、相关理论及背景

本文主要讨论这几个问题:

  1. 从集中式到分布式
  2. 从SQL到NOSQL
  3. 分布式的问题
  4. CAP和BASE理论

1.从集中式到分布式

传统的集中式系统通常将数据和业务集中在一台或多台主机构成的一个中心节点上。随着互联网的迅速发展,用户访问量和数据量都在迅速膨胀,集中式系统已无法提供足够的存储能力和计算能力。同时用户对互联网服务的需求和依赖也日益加深,而集中式系统存在明显的单点问题,一旦故障发生,显然无法提供稳定可靠的服务。
而分布式系统将软硬件部署在多个不同的网络计算机上,通过这种横向的扩展,相对于集中式系统不仅增加了计算能力和存储能力,也提高了网络负载能力,同时通过服务和数据的冗余以及故障自动转移技术,也避免了单点问题,因此,分布式系统能够提供更加高效,稳定和可靠的服务。

2.从SQL到NOSQL

NoSQL的意思可以总结为两点:Non-relational(非关系型), Not only SQL(是对SQL的扩充,不是替代)。
传统的关系型数据库建立在严格的关系模型基础之上,通常支持复杂的事务操作,提供严格的数据一致性完整性约束,并且支持关联查询等。然而,正是因为复杂的事务支持,严格的数据一致性,以及数据的关联查询,限制了关系型数据库的分布式扩展能力。
而NoSQL通过简化甚至放弃对事务和关联查询的支持,弱化数据一致性要求,来达到提供高并发读写,海量数据支撑,高可扩展性和高可用性的能力。
另外,与SQL不同,NoSQL并没有统一的SQL标准,NoSQL的种类繁多(key-value, 列式,文档,图等),然而并没有适合所有业务场景的数据库,需要结合业务性质以及NoSQL的特性,选择合适的。

3.分布式的问题

分布式系统面临的问题:

  1. 节点故障
    “机器多了,故障总会发生”,分布式系统中节点故障应被视作常态。
    面对节点故障,如何检测故障的发生,如何防止丢失数据,如何实现故障转移?
  2. 通信异常
    分布式系统中不同机器之间通过网络进行通信,网络故障、延时都将影响通信的成功与稳定。所以通信过程中消息的丢失和延迟的情况也应关注。
    面对通信异常,如何防止消息的丢失、重复发送,如何解决消息时序问题?
  3. 一致性问题
    分布式一致性问题包括数据一致性问题和事务一致性问题。由于网络故障,延时的存在,服务器间数据同步面临着一致性和性能之间的取舍。在分布式系统中,为了保证事务的ACID特性,需要特殊的算法和机制对事务的一致性进行协调处理。
    面对数据一致性问题和性能需求,应该采取什么样的数据同步方案?有哪些算法来帮助实现分布式事务?
  4. 三态
    在单机系统中,函数执行只有成功、失败两种状态。而在分布式系统中,请求和响应是在网络之间进行传递的,伴随着网络异常,请求和响应将存在成功、失败、超时三种状态。当超时发生时,客户端将很难判断请求的处理状态,同时系统可用性也面临挑战。
    如果发生超时,如何进行容错处理?有哪些策略?什么是幂等操作?
  5. 网络分区
    由于节点之间的网络问题,在某些情形下,分布式系统可能会被隔断为几个孤立的部分,相互之间无法正常通信,而此时如果客户端分别与这些部分交互,就有可能产生“脑裂”问题,数据和状态将产生不一致的情况。
    “脑裂”有什么危害?分布式系统如何防范或降低”脑裂”的发生?”脑裂”发生后如何恢复数据和业务?
    后续文章,会结合这些问题,讨论MongoDB是如何应对的?

4.CAP和BASE理论

  • CAP理论
    CAP理论是分布式系统领域的一条定理。这条定理告诉我们:
    一个分布式系统最多只能满足一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)这三个基本属性的两个,三项都很好满足的系统是不存在的。

    • 可用性:简单的说,可用性就是要求系统总是可读可写的,而且这里的可读可写还要求在业务能容忍的时间内完成,也就是说要保证合理的性能。
    • 一致性:简单的说,严格的一致性要求写入的数据马上就能读取到。而这在分布式系统中就要求写入的数据要在所有提供读取的机器上同步以后才能算写入成功,而不同机器间数据复制的延时可能严重影响写入性能。所以分布式系统中,数据一致性和系统可用性(性能)之间总是矛盾的存在。
    • 分区容忍性:简单的说就是假设系统所处的任意一个网络分区出现故障,或者发生分区间的机器无法进行网络通信的情况,但仍然要求系统保证提供完整的功能。作为分布式系统,分区容错性应该算是一个基本要求。
      需要注意的是,CAP理论并不是说我们在设计分布式系统时,一定要舍弃其中一条属性,而是说应该在满足其中两条特性的情况下,尽可能的去改善另外的第三条属性。

    那么,MongoDB实现时,着重关注的是CAP理论中的哪两个属性(AP还是CP)?下篇文章会进行介绍。

  • BASE
    BASE理论是对CAP中可用性和一致性平衡以后对分布式系统建设的一条指导理论:
    BASE理论是对分布式系统CAP属性的这样一种要求,基本可用(Basically Available),弱状态(Soft state)以及最终一致性(Eventually consistent)。
    • 基本可用
      注意基本可用并不是指不可用,而是说允许系统在某些故障或极端情况下性能和功能降级。
    • 弱状态
      所谓弱状态即指状态允许一段时间存在不同步,例如多个副本间数据同步就存在这种情况。
    • 最终一致性
      最终一致性是弱一致性的一个特例,所谓最终一致性就是允许在经过一段时间后,系统中的所有副本才达到一致。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值