java 分布式怎么理解_理解什么是分布式系统

前言

让时光积累真正的价值

最近投简历的时候发现招聘需要很多都写着需要掌握SpringCloud,这下子我的心都凉了半截。我连分布式系统、微服务是什么东西都没弄明白。不让我玩的节奏呀!是时候好好了解一下分布式、spring cloud 相关的内容了。

参考文章:

集群和分布式系统

集群

集群是啥?

下面是我在网上找到的定义

集群是一种计算机系统,集群是由多台分散的由硬件或者软件连接起来的计算机组成的。在某种意义上,集群对外可以看作一台计算机。集群中的计算机一般是通过局域网连接起来的,当然也有其他连接的方式。

集群的特点

多台计算机完成一项工作以达到更高的效率

多台服务器共同完成同一项工作、某台服务器挂了其他服务器能顶上。

在这里瞎编个例子吧:

月生是一个当地小有名气的鞋匠,他的做鞋水平一流,广受街坊的好评。月生是一个人制作鞋子。这不,电商渐渐兴起了,月生的儿子在某宝上给月生开了一家店。刚刚开始的时候还好,店里只接到一些零星的单子,这对月生基本上是没什么影响的。

月生做到鞋子质量过硬,好评如潮。时间一长了,从网店上接到的订单猛涨,这可累坏了月生了。发货迟了,投诉就来了。为了赶货月生可是熬了不上夜。有那么几次,月生的朋友想找月生出来喝茶,可他就是抽不出空。为了解决这个问题,月生收了几个徒弟,跟他一起做鞋。在月生的严格教导下,徒弟们做出来的鞋跟月生做出来鞋并没有很大的差别。这样月生就不用熬夜了,朋友想约月生出来叙叙旧,月生就可以放下手下的工作去赴约。

结合上面的例子,当月生一个人自己做鞋的时候就像我们在本地调试的时候一样,直接把web丢tomcat里面就可以了,所有的请求都到我们本地的tomcat上。当月生忙活不过来,叫上徒弟们一起来干就是集群。月生和徒弟一起做鞋的效率比月生自己一个人做的效率要高。当月生有事情的时候要离开的时候徒弟也可以接着干。

分布式

分布式系统是啥?

分布式系统是一组计算机,通过网络连接和信息通信,形成一个系统。节点计算机相互协调共同实现同一个目标。

分布式系统的特点

将系统的功能拆分到不同的节点,使用的时候再将这些系统组合起来。不同的机器运行不一样的代码。

分布式系统的好处:

部分的节点出现了问题系统,的其他功能还能使用。

要对一个业务进行修改的时候只要最业务所在的节点停机就可以了,不影响其他系统的运行。

可以单独对耗时的业务节点做单独的提升,跟集群相比资源的利用率更加的高。

为了了解分布式的特点,接着上面的例子,继续瞎编:

时间一长,月生发现不同的徒弟有不同擅长的事情和不擅长的事情。有些徒弟擅长裁剪布料,不善于缝纫、有些徒弟擅长缝纫不想系鞋带、有些徒弟系鞋带贼快。。。月生突发奇想,既然不同的徒弟擅长做不同的事情,那就让不同的徒弟去做自己最擅长的事情!想到就做,月生让徒弟们按照自己的特长来做对应的工作,徒弟们只做自己最擅长的事情。这个改变让徒弟也很开心,裁剪布料的徒弟本来就不喜欢缝纫。这样可以让徒弟不用做他不喜欢的事情他可就爽了,效率果然一下子就提升了不少。

实践了以后月生发现这样做有一些好处,这样分工可以更加灵活调配工作量,裁剪布料的速度是会比缝纫的速度要快的,如果是一个徒弟负责裁剪,一个徒弟负责缝纫,这样负责裁剪的徒弟就会很闲。只要多叫几个徒弟来做缝纫就好了。这样效率又提升了一大截。

结合上面的例子,月生让不同的徒弟做不同的工作相当于就是分布式,分布式的优点之一就是根据工作不同工作的耗时灵活分配机器,就像月生让多个徒弟来做缝纫这项工作一样。

微服务

微服务是啥?

简单来说,微服务就是一个很小的服务,功能非常的简单,就专注做一件事的那种。用户的请求的时候是通过服务之间的相互调用来完成的。在实际的开发中,微服务是由独立的小团队负责开发、部署和维护的。

但是微服务也是有缺点的:

微服务的粒度更小、数量多,后期维护起来很困难。

微服务和分布式

微服务和分布式的概念很类似,都是将功能拆分成更小的单元,使用的时候在将这些单元组合起来。微服务和分别式系统的不同点,在于微服务应用不一定要分布在不同的服务器上,也可以是同一个服务器,同时微服务的粒度比分布式系统细。

参考文章:

CAP理论

了解分布式系统,就免不了要了解CAP理论。CAP理论是用来描述分布式系统的特性。

在一个分布式的系统中最多满足数据一致性、数据的可用性、分区容错性这三项特性之中的两项。

值得注意的是在分布式系统分区的分区容错性(P)是一定存在的,否则分布式系统等同于退化成单机系统。

数据一致性(consistency)

一致性是指数据更新操作以后,所有节点的数据完全一致。对于一个需要保障一致性系统 ,客户端和服务端需要做的工作是不一样的。对于客户端应该侧重数据更新后的获取方式,对于服务端应当侧重如何将数据同步到其他节点,保障数据最终一致。

在理解一致性的时候需要着重注意并发读写对一致性的影响。可以这么说,如果没有并发读写,不需要一致性。

从客户的角度来看,一致性分为3个级别:强一致性、弱一致性、最终一致性。

强一致性

让客户端更新数据以后,需要等全部数据同步到其他的存储节点才能允许其他客户端访问。注意,CAP里面说的不能保证拥有AP的同时拥有C说的就是强一致性。级别稍微低一点的一致性还是可以保证的。

2af7aa8c1b70d68903315eedb92693d2.png

弱一致性

容忍数据在更新以后,只能部分节点访问到或全部访问不到更新以后的数据,这就是弱一致性。

7ff978ea07cad5e2407a9a6b84388108.png

最终一致性

在客户端更新完成一定时间以后,客户端才能访问到数据。

可用性(Availability)

可用性指的是服务一直可用,而且是在规定的响应时间内。

对于一个可用的分布式服务器,非故障的节点必须对每个请求做出响应,衡量可用性的指标是停机时间的占比。

可用性分类

可用性占比(%)

年容忍停机时间

容错可用性

99.9999

<1min

极高可用性

99.999

<5min

故障自动恢复的可用性

99.99

<53min

高可用性

99.9

<8.8h

影响系统可用性的原因有很多种,负责均衡、程序代码、数据库服务、网络都能影响到服务器的可用性。

分区容错性(Partition-tolerance)

简单来说就是容忍分区网络不可达的情况。在某个节点故障的时候所有分布式系统任然能能够对外提供可用性、和数据一致性的的能力。

CAP的参考文章:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值