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

网络网站建设广州网店运营基础知识

网络网站建设广州,网店运营基础知识,公司注册地址变更手续,网页界面设计和素材唠嗑部分 是这样#xff0c;前几日完善了定时任务的日志记录#xff0c;今日切换了服务器#xff0c;多部署了一个节点#xff0c;使用nginx负载均衡#xff0c;但是查看日志却发现了如下情况 那糟糕了#xff0c;传说中的多实例问题出现了#xff0c;今天我们就来聊聊…唠嗑部分 是这样前几日完善了定时任务的日志记录今日切换了服务器多部署了一个节点使用nginx负载均衡但是查看日志却发现了如下情况 那糟糕了传说中的多实例问题出现了今天我们就来聊聊项目实战中定时任务如何做首先我们看如下问题 1、什么是定时任务能帮我们解决什么实际问题 见名知意定时任务就是让程序指定时间去执行某段代码例如每日8点给女朋友发早安祝福 那么能给我们开发中解决什么问题呢 在实际开发中有许多需要定时任务的场景如每日定时去同步数据、缓存的预热、定时清理日志文件、定时统计榜单… 2、项目实战中哪些场景需要使用到定时任务 需求一产品经理要求实现系统的3天内热搜榜每日0点更新数据 需求二系统需要依赖第三方系统的数据而且请求并发较大第三方数据是每日更新的 需求三系统每天都会有大量操作日志产品经理要求只保留一个月的数据 需求四对于系统主页数据每日9-12点并发最大需要定时对缓存预热 … 以上需求都可以用定时任务实现 3、推荐使用的定时任务组件有哪些 Spring整合了Scheduled轻量级而且很好用无UI展示 xxl-Jobxxl是xxl-job的开发者大众点评的许雪里名称的拼音开头主要用于处理分布式的定时任务其主要由调度中心和执行器组成有良好的UI界面。 elastic-JobElastic-Job是当当网推出的分布式任务调度框架用于解决分布式任务的协调调度问题保证任务不重复不遗漏地执行无UI展示需要分布式协调工具Zookeeper的支持 … 4、如何实现分布式定时任务避免多实例问题 首先我们来说说什么是多实例问题在我们的项目开发中我们在部署定时任务时通常只部署一台机器如果部署多台机器时同一个任务会执行多次(每个机器都会执行互不影响)那如果有一些给用户计算收益定时任务每天定时给用户计算收益如果部署了多台同一个用户将重复计算多次收益那就芭比Q了那如果只部署一台则会有单点故障问题可用性无法保证 以上所说的xxl-jobelastic-Job均可以解决多实例问题保证任务不重复不遗漏地执行 那我们使用Spring自带的Scheduled如何避免多实例问题呢我们可以使用redis锁来保证具体逻辑如下 每个实例调用setnx命令插入一条数据插入成功后返回1的实例执行job返回0的不执行 言归正传 首先我们看下之前的代码逻辑我这里是整合的Scheduled自行封装的定时任务在执行时没有解决多实例问题 那我们的逻辑是在此段代码执行时加入redis锁保证执行一次 1、redis加锁方法封装 /** * 加锁 * param key * param timeStamp * return */ public Boolean lock(String key, String timeStamp){if (redisTemplate.opsForValue().setIfAbsent(getKey(key), timeStamp)) {return true;}String currentLock (String) redisTemplate.opsForValue().get(getKey(key));if (StringUtils.hasLength(currentLock) Long.parseLong(currentLock) System.currentTimeMillis()) {String preLock (String) redisTemplate.opsForValue().getAndSet(getKey(key), timeStamp);if (StringUtils.hasLength(preLock) preLock.equals(currentLock)) {return true;}}return false; }/** * 解锁 * param key * param timeStamp */ public void unLock(String key, String timeStamp){try {String currentValue (String) redisTemplate.opsForValue().get(getKey(key));if (StringUtils.hasLength(currentValue) currentValue.equals(timeStamp)) {redisTemplate.opsForValue().getOperations().delete(getKey(key));}} catch (Exception e) {log.error(解锁异常);} }2、多实例解决实现逻辑 public void run() {long startTime System.currentTimeMillis();MapString, Scheduled scheduledMap scheduledTaskService.getScheduledMap();ScheduledLog scheduledLog new ScheduledLog();Scheduled scheduled scheduledMap.get(beanName);Boolean flag Boolean.TRUE;String timeStamp String.valueOf(System.currentTimeMillis() 300L);try {Boolean lock redisUtil.lock(redisUtil.getCacheKey(CachePrefixContent.LOCK_PREFIX, beanName), timeStamp);if (lock) {BaseResult result BaseResult.ok();scheduledLog.setTaskId(scheduled.getTaskId());scheduledLog.setExecuteTime(LocalDateTime.now());// 执行定时任务处理逻辑execute(result);if (result.resOk()) {scheduledLog.setExecuteStatus(Boolean.TRUE);} else {scheduledLog.setExecuteStatus(Boolean.FALSE);}scheduledLog.setExecuteDesc(result.getMsg());redisUtil.unLock(redisUtil.getCacheKey(CachePrefixContent.LOCK_PREFIX, beanName), timeStamp);} else {flag Boolean.FALSE;}} catch (Exception e) {log.error(定时任务:{}执行失败,{}, scheduled.getTaskName(), e);scheduledLog.setExecuteStatus(Boolean.FALSE);scheduledLog.setExecuteDesc(e.getMessage());} finally {long endTime System.currentTimeMillis();log.info(【{}】【】【{}ms】, 定时任务, scheduled.getTaskName(), endTime - startTime);if (flag) {completableFutureService.runAsyncTask(() - {scheduledLogMapper.insert(scheduledLog);});}} }3、效果展示 每30秒两个示例只有单台节点执行成功 结语 1、以上问题就解决了快去给你的代码加上吧 2、制作不易一键三连再走吧您的支持永远是我最大的动力
http://www.sadfv.cn/news/185985/

相关文章:

  • 献县做网站价格怎样拥有自己的网站
  • 网站建设要多少钱app一级a做爰片免费网站 小说
  • wordpress文章自动标签郑州seo网站管理
  • 直播网站可以做毕设吗网站建设推广销售好做吗
  • 兰州 电子 网站建设如何做ptp刷流量的网站
  • 网站信息推广途径包括哪些高端网站建设济南兴田德润简介电话
  • 网络游戏网站开发巩义关键词优化公司电话
  • 江门网站优化排名鞋网站建设方案
  • 建设网站招标文件网络营销案例分析200字
  • 无锡中小企业网站制作做网站公司哪家好
  • 深圳建网站兴田德润专业WordPress金融网站
  • 公司网站需要备案如何写推广软文
  • 广州旅游网站建设设计公司哈尔滨 网站建设
  • 增城专业建站公司优秀个人博客网站
  • 国际网站建设标准淘宝竞价排名
  • 云南省住房和城乡建设局网站软件开发平台介绍
  • 做网站要钱嘛WordPress寻主题
  • 设计专业网站公司网页生成长图 iphone
  • 换空间对网站排名的影响吗安徽省高等级公路工程建设指挥部网站
  • 网站导航的展开与收缩怎么做的微信管理系统在哪里
  • 实用网站建设怎么做微信推送 网站
  • 建设银行网站总是崩溃php网站开发开发网站教程
  • 阜阳网站建设费用外网服务器地址ip免费
  • 企业网站开发费是固定资产吗深圳网站开发公司哪家好
  • 怎么架构网站网教网站源码
  • 图跃企业网站建设关于网站建设的报告
  • 郑州企业网站制作软件开发和网站开发区别
  • 开一个素材设计网站怎么做烟台免费网站建设
  • 网站建设准备工作深圳做微商网站
  • 网站建设公司盈利wordpress源码最新