资讯专栏INFORMATION COLUMN

分布式系统基础知识

since1986 / 576人阅读

摘要:如果能够在分布式系统中针对某一个数据项的变更成功执行后,所有用户都可以马上读取到最新的值,那么这样的系统就被认为具有强一致性。

1.分布式系统是什么

分布式系统:

一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统,这是分布式系统,在不同的硬件,不同的软件,不同的网络,不同的计算机上,仅仅通过消息来进行通讯与协调。

更细致的看这些特点又可以有:分布性、对等性、并发性、缺乏全局时钟、 故障随时会发生。

1.1分布性:
最显著的特点肯定就是分布性,从简单来看,如果我们做的是个电商项目,整个项目会分成不同的功能,专业点就不同的微服务,比如用户微服务,产品微服务,订单微服务,这些服务部署在不同的tomcat中,不同的服务器中,甚至不同的集群中,整个架构都是分布在不同的地方的,在空间上是随意的,而且随时会增加,删除服务器节点,这是第一个特性。

1.2对等性:
对等性是分布式设计的一个目标。分布式系统拆分了好多个服务,每个服务都可能出问题而导致整个系统出问题,因此每个服务一般都有备份,在服务异常时备份服务能顶替原来异常的服务.
关键:这就要求2个服务是完全对等的,功能完全一致.比如订单服务,客户服务等,其实就是服务副本的冗余.
还有一种是数据冗余,如数据库,缓存和分布式服务一样需要有备份存在,这就是对等性.

1.3并发性
在分布式系统里面的并发就不是我们基础学习的多线程(单JVM)了,而是更高层,从多进程多JVM角度,比如多个分布式服务可能并发操作一些共享资源,如何准确并高效的协调分布式并发操作.

1.4缺乏全局时钟
在分布式系统中,节点是可能反正任意位置的,而每个位置,每个节点都有自己的时间系统,因此在分布式系统中,很难定义两个事务纠结谁先谁后,原因就是因为缺乏一个全局的时钟序列进行控制,当然,现在这已经不是什么大问题了,已经有大把的时间服务器给系统调用。

1.5故障随时发生
任何一个节点都可能出现停电,死机等现象,服务器集群越多,出现故障的可能性就越大,随着集群数目的增加,出现故障甚至都会成为一种常态,怎么样保证在系统出现故障,而系统还是正常的访问者是作为系统架构师应该考虑的。

2.分布式系统协调“方法论”

2.1 分布式系统带来的问题

通信异常:通讯异常其实就是网络异常,网络系统本身是不可靠的,由于分布式系统需要通过网络进行数据传输,网络光纤,路由器等硬件难免出现问题。只要网络出现问题,也就会影响消息的发送与接受过程,因此数据消息的丢失或者延长就会变得非常普遍。

网络分区:网络分区,其实就是脑裂现象。比如有个管理者与一些服务通信并协调服务,出于一些异常情况通信断了,出现了一个临时管理者,实际上原来的管理者还在,这样2个管理者做同一个工作会出现问题

三态:三态其实就是成功,与失败以外的第三种状态,叫超时态。
在一个jvm中,应用程序调用一个方法函数后会得到一个明确的相应,要么成功,要么失败,而在分布式系统中,虽然绝大多数情况下能够接受到成功或者失败的相应,但一旦网络出现异常,就非常有可能出现超时,当出现这样的超时现象,网络通讯的发起方,是无法确定请求是否成功处理的。

节点故障: 节点故障在分布式系统下是比较常见的问题,指的是组成服务器集群的节点会出现的宕机或“僵死”的现象,这种现象经常会发生

.

2.2 CAP理论

CAP其实就是一致性,可用性,分区容错性这三个词的缩写。

C 一致性:数据在分布式环境下的多个副本之间能否保持一致性,这里的一致性更多是指强一致性;这里说的一致性和前面说的对等性其实差不多。如果能够在分布式系统中针对某一个数据项的变更成功执行后,所有用户都可以马上读取到最新的值,那么这样的系统就被认为具有【强一致性】。

A 可用性:分布式系统一直处于可用状态,对于请求总是能在有限的时间内返回结果致性;这里的重点是【有限的时间】和【返回结果】,为了做到有限时间用到了缓存,负载均衡,为了返回结果考虑服务器主备.

P 分区容错性:除非整个网络故障,分布式系统在任何网络或者单点故障时,仍能对外提供满足一致性和可用性的服务;

CAP具体描述:

2.3. BASE理论

即使无法做到强一致性,但分布式系统可以根据自己的业务特点,采用适当的方式来使系统达到最终的一致性;

BasicallyAvaliable基本可用:当分布式系统出现不可预见的故障时,允许损失部分可用性,保障系统的“基本可用”;体现在“时间上的损失”和“功能上的损失”;e.g:部分用户双十一高峰期淘宝页面卡顿或降级处理;

Soft state软状态:允许系统中的数据存在中间状态,既系统的不同节点的数据副本之间的数据同步过程存在延时,并认为这种延时不会影响系统可用性;e.g:12306网站卖火车票,请求会进入排队队列;

Eventually consistent最终一致性:所有的数据在经过一段时间的数据同步后,最终能够达到一个一致的状态;e.g:理财产品首页充值总金额短时不一致;

分布式一致性算法:
常见分布式一致性算法:2p,3p,paxos,zab算法;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77825.html

相关文章

  • 揭秘:技术人突破瓶颈期,离不开这几个关键点

    摘要:但是这些角色都是相互交叉影响的。相信对于已经工作和遇到技术瓶颈的,在这个群里会有你需要的内容。微服务强调将功能合理拆解,尽可能保证每个服务的功能单一,按照单一责任原则明确角色。 作为一个技术人,不知道你有没有遇到过下面的情况? 我学不到新东西 我感觉没啥成长 每天都在重复劳动 …… 其实,每个技术从业者,多多少少都会遇到工作或学习瓶颈期。产生瓶颈期,往往不是因为我们不够努力,而是以下原...

    taowen 评论0 收藏0
  • 一个从基础到实战的学习机会:Go & Rust、布式数据库系统 | PingCAP Tal

    摘要:每年设有三期线下课程,分别在月份,月份以及月份,所有线下课程将在北京总部进行。当大家完成了线下课程和全部课程考核,我们会举办一个充满仪式感的结业答辩,并为顺利结业的小伙伴授予专属的结业证书。 TiDB 每一次微小进步都离不开广大社区小伙伴们的支持,但也有很多同学反映 TiDB 是一个非常复杂的分布式数据库系统,如果没有相关知识和经验积累,在参与之初难免会遇到各种问题。因此我们决定全面升...

    fengxiuping 评论0 收藏0
  • 一个从基础到实战的学习机会:Go & Rust、布式数据库系统 | PingCAP Tal

    摘要:每年设有三期线下课程,分别在月份,月份以及月份,所有线下课程将在北京总部进行。当大家完成了线下课程和全部课程考核,我们会举办一个充满仪式感的结业答辩,并为顺利结业的小伙伴授予专属的结业证书。 TiDB 每一次微小进步都离不开广大社区小伙伴们的支持,但也有很多同学反映 TiDB 是一个非常复杂的分布式数据库系统,如果没有相关知识和经验积累,在参与之初难免会遇到各种问题。因此我们决定全面升...

    番茄西红柿 评论0 收藏0
  • 一个从基础到实战的学习机会:Go & Rust、布式数据库系统 | PingCAP Tal

    摘要:每年设有三期线下课程,分别在月份,月份以及月份,所有线下课程将在北京总部进行。当大家完成了线下课程和全部课程考核,我们会举办一个充满仪式感的结业答辩,并为顺利结业的小伙伴授予专属的结业证书。 TiDB 每一次微小进步都离不开广大社区小伙伴们的支持,但也有很多同学反映 TiDB 是一个非常复杂的分布式数据库系统,如果没有相关知识和经验积累,在参与之初难免会遇到各种问题。因此我们决定全面升...

    TNFE 评论0 收藏0
  • 应用案例:SequoiaDB+Spark搭建医院临床知识系统

    摘要:我们选择了做为大数据存储中心,为此我还特意的为完成了驱动,最初我们选择了版本之上使用开发完成了医院临床知识库系统,项目后期我们把计算框架也由升级到了已经于近期发布了版本,各种性能稳定性大幅提升。 1.背景介绍 从20世纪90年代数字化医院概念提出到至今的20多年时间,数字化医院(Digital Hospital)在国内各大医院飞速的普及推广发展,并取得骄人成绩。不但有数字化医院管理信息...

    guqiu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<