当前位置: 首页 > news >正文

汕头市营商环境建设监督局网站网络平台宣传方式有哪些

汕头市营商环境建设监督局网站,网络平台宣传方式有哪些,toom舆情监测软件,wordpress是开源工具吗什么是分布式锁 分布式锁是指分布式环境下,系统部署在多个机器中,实现多进程分布式互斥的一种锁。为了保证多个进程能看到锁,锁被存在公共存储(比如 Redis、Memcache、数据库等三方存储中),以实现多个进程并…

什么是分布式锁

分布式锁是指分布式环境下,系统部署在多个机器中,实现多进程分布式互斥的一种锁。为了保证多个进程能看到锁,锁被存在公共存储(比如 Redis、Memcache、数据库等三方存储中),以实现多个进程并发访问同一个临界资源,同一时刻只有一个进程可访问共享资源,确保数据的一致性。

在单机时代,虽然不存在分布式锁,但也会面临资源互斥的情况,只不过在单机的情况下,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加锁的机制,即当某个线程获取到这个资源后,就需要对这个资源进行加锁,当使用完资源之后,再解锁,其它线程就可以接着使用了。例如,在JAVA中,甚至专门提供了一些处理锁机制的一些API(synchronize/Lock等)。

但是到了分布式系统的时代,这种线程之间的锁机制,就没作用了,系统可能会有多份并且部署在不同的机器上,这些资源已经不是在线程之间共享了,而是属于进程之间共享的资源。因此,为了解决这个问题,「分布式锁」就强势登场了。

分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。

在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,这个时候,便需要使用到分布式锁。

1. 分布式锁要求

  • 排他性:在同一时间只会有一个客户端能获取到锁,其它客户端无法同时获取
  • 避免死锁:这把锁在一段有限的时间之后,一定会被释放(正常释放或异常释放)
  • 高可用:获取或释放锁的机制必须高可用且性能佳

2. 分布式锁实现

目前相对主流的有三种,从实现的复杂度上来看,从上往下难度依次增加:数据库(MySQL),Redis,ZooKeeper

Redisson

Redisson开源框架是一个Redis的分布式锁的现成实现方案,是Redis的 java 实现的客户端。通过 Netty 支持非阻塞 I/O。

Redisson实现了分布式锁的自动续期机制、锁的互斥自等待机制、锁的可重入加锁与释放锁的机制。

1.依赖坐标

<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId>
</dependency>

2.代码示例

public String testOneLock() {
// 1.获取锁,只要锁的名字一样,获取到的锁就是同一把锁。
RLock lock = redisson.getLock("onelock");
System.out.println("-----获得锁lock对象:"+lock);
// 2.加锁
lock.lock();
try {System.out.println("加锁成功,执行逻辑代码。线程 ID:" + Thread.currentThread().getId());//while (true){Thread.sleep(10000);System.out.println("逻辑代码执行完成!。。。");//}
} catch (Exception e) {e.printStackTrace();
} finally {// 3.解锁lock.unlock();System.out.println("Finally处,释放锁成功。线程 ID:" + Thread.currentThread().getId());
}
return "onelock锁测试完成。";
}
public FlyingFlowerV1Vo insert(FlyingFlowerReq flyingFlowerReq, String userId) throws Exception {//对进来的用户加锁RLock userLock = redissonClient.getLock(RedissonKey.USER_ID + userId);try{//尝试加锁, 最多等待1秒, 1000秒后自动解锁if (userLock.tryLock(1, 1000, TimeUnit.MILLISECONDS)) {//业务逻辑的代码,通常在插入修改的操作方法上进行加锁}catch (Exception e){//提示System.out.println("接令频繁"+ userId);throw new ResultInfo(ResultUtils.error("接令频繁,请稍后再试"));}finally {//解锁if (userLock.isHeldByCurrentThread()) {userLock.unlock();}}return null;
}
http://www.hrbkazy.com/news/32689.html

相关文章:

  • 厦门做网站公司排名识图找图
  • 哪个网站可以做担保交易日本预测比分
  • 做app网站的软件软文媒体
  • 网站建设费用标准免费建立个人网站官网
  • 网站建设意义模板中国北京出啥大事了
  • 公司怎么建网站做推广搜索引擎数据库
  • 优秀的政府网站建设提供商windows优化大师破解版
  • 有专门做礼品的网站吗女装标题优化关键词
  • jsp动态网站开发实训心得清远今日头条最新消息
  • 长沙市做网站的seo优化推广教程
  • 深圳有哪些外贸公司武汉seo计费管理
  • 太原网站建设培训学校百度推广后台登录入口
  • 自己提供域名做网站关键词优化按天计费
  • 上传视频网站源码seo问答
  • 中标信息查询湖南seo推广
  • 我会编程怎么做网站网页设计与制作知识点
  • 阿里巴巴网站导航怎么做你就知道首页
  • 做外贸网站租什么服务器广告投放数据分析
  • 保定网站建设方案厦门seo怎么做
  • 市北区网站建设外贸网站推广的方法
  • 做室内设计的网站有哪些新网站推广方法
  • 做ppt图片网站 知乎推广平台怎么找客源
  • 哪里有做阿里网站的网店推广的渠道有哪些
  • 遂宁做网站的公司百度推广和百度竞价有什么区别
  • 扁平化网站设计欣赏搜索引擎营销概念
  • 做视频网站服务器怎么选择疫情防控最新数据
  • 银川哪家网络公司做网站做得好磁力神器
  • 建材类网站模板百度热搜高考大数据
  • 企业网站2000元长沙本地推广联系电话
  • 佛山哪里有做网站的如何联系百度人工客服