学习笔记:分布式锁

一,什么事分布式?

分布式,可以理解为新时代体系架构下为了缓解单一服务器的压力过大,而把原来的一个服务分别部署到多台服务器上,通过网络进行数据传输和数据通过的架构。

二,为什么要有分布式锁?

举个例子,某网站原来交易功能是部署在一台服务器上的,但是今年疫情期间,这个网站突然火了,无数的人在网站上购物,这就导致原来的一台评论服务器压力剧增,怎么解决这个问题?首先的想法就是把一台服务器的性能提高,变成一台更强的服务器。但是一台服务器终归性能有限,当访问量到了一个级别的时候,单台服务器很明显已经不能满足需求了,那么这个时候就要考虑把一台服务器更换成两台甚至更多的服务器,每台服务器上都部署交易的后台程序,服务器之间做负载均衡,这样就可以大大增加系统容量。
      那么这时候产生了一个问题,因为服务是独立的,假设原来的一台服务器增加到三台,服务和数据库都是独立的,原来在一台服务器上,商品存在一个数据库(集群)中,为了保证抢购的人多,商品数量出现yi'chan异常我们只需要加一把同步锁,当某个线程访问某个商品A的时候,别的线程不能访问就好了。但是现在三台服务器都有这个商品,就算加了同步锁,也不能控制三台并发造成的问题。加同步锁只能保证对应的服务器上同一时间只有一个有效线程,不能保证这个商品在同一时间只能被一个客户访问,因为三台服务器就表示,至少有三个有效链接可以访问数据库。
       首当其冲的解决办法就是,把三个服务器虚拟成一个,三个服务对应的数据访问出口只有一个,也就是说在服务器之外,我们加一层,数据交换放在这一层,考虑到性能问题,这一层一般都是缓存(Nosql),综合成一层之后,我们表面上面临的其实就是类似原来一台服务器面临的问题了,怎么保证缓存中多线程安全,单机中我们用的是同步锁,那么在缓存中我们用到的就是分布式锁。

三,分布式锁实现的方式有哪些?
      未完待续

暂无评论