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

个人网站备案名称哪里有seo排名优化

个人网站备案名称,哪里有seo排名优化,博彩网站如何做的充值,怎样做网站的排名目录 分布式锁分布式锁实现的关键 Redisson实现分布式锁看门狗机制 分布式锁 为什么要使用分布式锁,或者分布式锁的使用场景? 定时任务。在分布式场景下,只控制一台服务器执行定时任务,这就需要分布式锁 要控制定时任务在同一时间…

目录

  • 分布式锁
    • 分布式锁实现的关键
  • Redisson实现分布式锁
    • 看门狗机制

分布式锁

为什么要使用分布式锁,或者分布式锁的使用场景?

定时任务。在分布式场景下,只控制一台服务器执行定时任务,这就需要分布式锁

要控制定时任务在同一时间只有 1 个服务器能执行,方案有哪些?

  1. 分离定时任务程序和主程序,只在 1 个服务器运行定时任务。成本太大
  2. 写死配置。每个服务器都执行定时任务,但是只有 ip 符合配置的服务器才真实执行业务逻辑,其他的直接返回。成本最低;但是我们的 IP 可能是不固定的,会把 IP 写的太死了
  3. 动态配置,配置是可以轻松的、很方便地更新的(代码无需重启),但是只有 ip 符合配置的服务器才真实执行业务逻辑。问题:服务器多了、IP 不可控还是很麻烦,还是要人工修改
    • 配置写在数据库 、Redis、配置中心(Nacos、Apollo、Spring Cloud Config)
  4. 分布式锁,只有抢到锁的服务器才能执行业务逻辑。坏处:增加成本;好处:不用手动配置,多少个服务器都一样。

Java 实现锁:synchronized 关键字、并发包的类
问题:只对单个 JVM 有效

分布式锁实现的关键

抢锁机制

怎么保证同一时间只有 1 个服务器能抢到锁?

核心思想 就是:先来的人先把数据改成自己的标识(服务器 ip),后来的人发现标识已存在,就抢锁失败,继续等待。等先来的人执行方法结束,把标识清空,其他的人继续抢锁。

实现方式有:

  • MySQL 数据库:select for update 行级锁(最简单)
  • Redis 实现:内存数据库,读写速度快 。支持 setnxlua 脚本,比较方便我们实现分布式锁。

实现细节:

  1. 锁一定要加过期时间
  2. 用完锁要释放,释放的时候检查是否是自己的锁
  3. 如果方法执行时间过长,锁要能进行续约
  4. Redis 如果是集群(而不是只有一个 Redis),如果分布式锁的数据不同步怎么办? 使用红锁

Redisson实现分布式锁

Redisson 是一个 java 操作 Redis 的客户端,提供了大量的分布式数据集来简化对 Redis 的操作和使用,可以让开发者像使用本地集合一样使用 Redis,完全感知不到 Redis 的存在。

使用方式

  1. spring boot starter 引入(不推荐,版本迭代太快,容易冲突)链接
  2. 使用Redisson依赖 链接

RedissonConfig

/*** Redisson 配置*/
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
@Data
public class RedissonConfig {private String host;private String port;@Beanpublic RedissonClient redissonClient() {// 1. 创建配置Config config = new Config();String redisAddress = String.format("redis://%s:%s", host, port);//  使用单个Redis,没有开集群 useClusterServers()  设置地址和使用库config.useSingleServer().setAddress(redisAddress).setDatabase(3);// 2. 创建实例RedissonClient redisson = Redisson.create(config);return redisson;}
}

Redisson测试


@SpringBootTest
public class RedissonTest {@Resourceprivate RedissonClient redissonClient;@Testvoid test() {// list,数据存在本地 JVM 内存中List<String> list = new ArrayList<>();list.add("yupi");System.out.println("list:" + list.get(0));list.remove(0);// 数据存在 redis 的内存中RList<String> rList = redissonClient.getList("test-list");rList.add("yupi");System.out.println("rlist:" + rList.get(0));rList.remove(0);// mapMap<String, Integer> map = new HashMap<>();map.put("yupi", 10);map.get("yupi");RMap<Object, Object> map1 = redissonClient.getMap("test-map");// set// stack}
}

看门狗机制

Redisson会开一个监听线程,如果锁的方法还没执行完,就帮你重置 redis 锁的过期时间。

原理:

  • 监听当前线程,默认过期时间是 30 秒,每 10 秒续期一次(补到 30 秒)
  • 如果线程挂掉(注意 debug 模式也会被它当成服务器宕机),则不会续期
http://www.hrbkazy.com/news/36027.html

相关文章:

  • 公司网站域名如何续费b站推广软件
  • 玩具 网站模板免费域名注册官网
  • 有看投+app下载安装手机版seo北京公司
  • 麻章网站开发公司深圳网络推广怎么做
  • 德阳网站建设熊掌号百度app下载安装 官方
  • 毕业设计做b2c网站的意义上海网站推广系统
  • wordpress主题样式优化设计数学
  • 销售网站建设实验报告友情链接获取的途径有哪些
  • 在线教育网站开发经验简历填写安卓优化大师app
  • 英雄联盟网页怎么制作seo快速优化方法
  • 国内美妆博主从哪个网站开始做软件开发公司简介
  • 点击颜色更换网站主题今日百度搜索风云榜
  • 怎们自己做网站谷歌seo推广公司
  • php 网站建设方案提高工作效率的方法
  • 嘉兴企业自助建站项目网
  • 取名字网站如何做搜索关键词查询
  • 登封网站制作搜索引擎排名营销
  • 昭阳区建设局网站北京计算机培训机构哪个最好
  • 网站建设题库含答案seo黑帽是什么
  • 做篮球视频网站seo外包公司兴田德润官方地址
  • 网站制作作业网站推广网站
  • 江阴早晨网站建设拼多多跨境电商平台
  • 电子商务网站开发过程论文万网阿里云域名查询
  • 鹤壁市城乡一体化示范区政府网沈阳seo关键词排名优化软件
  • 标准化信息网站建设与应用大型网站建设平台
  • 威海住房和城乡建设局网站首页交换友链
  • 网站只收录无权重网络营销主要做些什么
  • %2enet网站开发如何做推广推广技巧
  • 怎样把网站提交到百度seo系统教程
  • 科技龙头股一览表郑州seo技术博客