咨询电话:13938433315软件开发培训学校!北大青鸟嘉荟教育!
学校:嘉荟教育    发布时间:2021-03-08 13:55:03    浏览次数:11
导语概要:1 为什么大家纷纷都采用分布式架构呢? 在目前的互联网技术架构中,最受欢迎的是分布式架构。为什么每个人都采用分布式架构? 1.高效且低成本,将在多种小型计算机的高性能计算机中部署的程序分散; 2.强大的可扩展性
 

1

为什么大家纷纷都采用分布式架构呢?

 

 

在目前的互联网技术架构中,最受欢迎的是分布式架构。为什么每个人都采用分布式架构? 1.高效且低成本,将在多种小型计算机的高性能计算机中部署的程序分散; 2.强大的可扩展性,可以通过扩展业务水平扩展系统的性能; 3.强的可靠性,在系统中的一个或多个失败时,还有其他机器提供服务; 4.具有强大的并发性,所有机器同时运行提供服务。分布,真的很香!但是,使用分布式架构时存在一些问题。最严重的问题是数据一致性。由于业务部署在多台计算机上,因为时间和空间不一致,数据将是不同的。分布式帽理论告诉我们“分布式系统不能同时满足一致性,可用性和分区公差。最多会满足两个项目”。对于数据不一致的问题,互联网有几个想法。例如,基本上是可用的基本服务,牺牲临时数据不一致,只要数据最终一致;分布式事务用于解决问题;分布式锁用于解决问题。今天我们将介绍分布式锁的解决方案。首先查看特定情况以解释为什么需要分布式锁定。电子商务业务采用分布式架构后,该程序部署在3个Tomcat容器中(1个Tomcat容器代表服务器,3个Tomcats可以了解电子商务服务在北京,上海和深圳部署了电子商务服务,以及成员变量A代表货物的数量。在北京,鲍勃在上海,以及深圳汤姆所有启动了用户要求购买或取消iPhone12。在Nginx负载平衡之后,Alice的请求被发送到北京服务器,并将Bob的请求发送到上海服务器和汤姆。该请求被发送到深圳服务器。此时,每个服务器将更改iPhone12的数量。爱丽丝的要求是将货物数量增加到200,鲍勃的要求是减少100乘100,汤姆的要求是增加货物数量。

微信截图_20210308084931

1.如果对商品数量的修改没有限制,整体将搞砸。也许鲍勃第一次减少,而汤姆的增加,数据完全搞砸了,因此需要分布式锁定解决方案。分布式系统中锁的概念不存在。还有锁定传统互联网的发展。例如,当多个进程是处理请求时,内存资源将不足。此时,操作系统将使用信号量来解决资源抓取。如果信号量值大于0,则信号量值将减少1,并且将同时分配内存资源。如果信号量的值小于0,则该过程处于等待状态。在完成其他过程操作之后,信号量值增加1,唤醒等待过程。总而言之,实现锁定有三个元素:1。有空间用于存储锁。在多进程中,内存是存储锁的空间。通过控制锁来实现不同进程的访问控制。 2.可以唯一识别,不同的空间受到不同锁的保护,必须唯一识别。 3.有状态,即存在和不存在。在分布式系统环境中,分布式锁是一个变量,并且可以同时由机器的一个线程执行方法,并且还提出了更高的要求,以实现分布式锁,即高性能和高可用性采集是必需的。要释放锁,需要锁定超时机制来避免死锁。如何实现分布式锁?行业中有三种实施方法:1。基于数据库; 2.基于REDIS; 3.基于Zookeeper。对于第一个实施方案,它非常简单。我们知道传统数据库中存在酸交易原子,一致性,耐用性和可用性规则。如果基于数据库实现分布式锁,则只需在数据库中创建一个表。该表包含方法名称,并将唯一索引添加到方法名称中。如果要执行该方法,请使用此方法名称将数据插入表中。插入时,无法插入其他数据,这相当于获得锁定。在成功插入后,删除相应的数据以释放锁定。此方案的优势在于它很简单,但问题是它对数据库有很高的要求,因为数据库的可用性和性能将直接影响分布式锁的可用性,并且数据库可能需要主从站读写和写入的部署和分离。对于第二个实施方案,您只需使用redis命令setnx,到期,删除(请允许我叹了口气,Redis真的很容易使用,简单良好,性能简单),setnxkeyvalue将给一些变量分配一个值和返回1.当业务请求到来时,如果返回键值为1,则线程获取锁定。如果键值为0,则线程无法抓取锁定。对于第三个实施方案,我们知道Zookeeper是分布式协调服务。它的内部是一个分层文件系统目录树结构。同一目录中只能有一个唯一的文件名。因此,在实现分布式锁时,只需要创建目录。如果线程想要获取锁定,它会在目录中创建临时序列节点,然后遍历以获取是否存在小于自身的节点。如果存在,则获取锁定失败。如果不存在,则获取锁定成功。缺点是创建节点频繁。通过介绍本文,仔细阅读的小合作伙伴在使用分布式架构中获得了技能。在分布式环境中,资源的锁定非常重要。数据一致性问题通过分布式锁解决。朋友可以根据他们的实际业务条件选择合适的分布式锁定方案?

 QQ截图20210301102212

 

免费试听

免费体验课开班倒计时

114900

信息已加密,请放心提交,提交后会有专业老师给您回电,请保持电话畅通。

咨询电话:
13938433315

QQ:363777239(刘老师)