做打卡功能的思路

文章目录

  • 做打卡功能的思路
    • 打卡大概流程
      • 首先生产消息
      • 消息到mq后的处理
      • 消息的消费
    • 总结

打卡大概流程

首先生产消息

首先进行一些人员信息校验之后往mq存入消息同时把这个打卡信息添加到缓存进行用户的及时反馈
然后呢在往mq存消息的时候可能会出现消息丢失这个几种原因吧 首先mq本身出现问题比如说宕机了。这个宕机的问题我们利用集群主从的方式来去避免宕机的情况 宕机的情况的时候我们也可以用熔断的机制来进行及时的解决。
需要查看自己的打卡情况这时我们的数据可能没有完全的落入数据库这时需要从缓存去查这个用户的打卡信息),缓存的打卡信息我们是利用的hash的一种数据结构
因为这个打卡信息需要一项目的维度去查看所以我们在创建缓存的时候大的key我们设置为日期的八位数+项目id 然后里面的元素的key设置为
用户id+(0或者1,0代表上午打卡1代表下午打卡)然后去异步的往mq进行丢数据 然后回调失败的时候进行一个处理就是把打卡失败的直接往一个重试打卡数据表里面
这样我们在某个时间段进行定时任务去往这个打卡表里面塞入数据,这个失败次数到了一定数量之后我们会选择熔断的一个机制,失败数量多了起来代表我们的mq那边出了一些问题所以暂时不能打卡操作

消息到mq后的处理

首先消息存到mq之后我们要保证不丢失,mq默认是异步刷盘的一个机制,我们需要修改成同步刷盘来保证消息的不丢失。就是每次进来消息进行一次持久化存入磁盘,这样可能会引起吞吐量的降低但是可以保障消息的不丢失因为这些打卡消息很重要涉及到薪资的发放。
我们部署的时候肯定不会单体部署,需要横向扩展进行多主多从的架构来部署这一样可以保证我们的mq高可用高性能的一个状态。

消息的消费

接下来就是到了消费消息的时候了我们采用的是先消费后确认的一种方式来完成,这样的有点在于我们消费者消费的时候可保证消息的不丢失,
但是这样还有一个问题就是重复消费,这个问题呢rocketmq本身是没有办法解决的所以我们需要从业务上进行解决我用了两种方案
第一个就是利用缓存进行判断是否重复消费我们可以利用不布隆过滤器来解决这个问题,我们在生成消息的时候用雪花算法生成一个唯一的key
这样我们往bitmap存数据的是否可以减少哈希冲突的问题,然后在sql上也进行一次优化或者是在打卡数据表里面进行添加一个唯一索引来保证消息的唯一性
整个打卡过程大概就是这个样子的

总结

这个是我在我实习公司做的一个功能实现方式大概就是这样的

【打卡功能实现思路】相关推荐

  1. 基于高德地图JsAPI进行浏览器精确定位,实现手机端考勤打卡功能

    前言: 由于项目需求需要在项目中实现手机端(基于网页)考勤打卡功能,最初考虑使用H5自身定位功能,但尝试过后,效果很不稳定.然后尝试使用百度地图JsAPI,百度家的稳定倒是很稳定,没想到的是定位位置和 ...

  2. Unity使用Vuforia实现AR脱卡功能

    AR脱卡功能 话不多说,思路如下 实现脱卡功能主要是改变官方原脚本里的OnTrackingLost()这个方法 在识别图丢失的时候不进行销毁,而是将他放置在合适的位置,用ARCamera来渲染丢失的模 ...

  3. 腾讯地图定位打卡功能实现

    如何使用腾讯位置服务API 1.注册成为开发者 2.申请密钥,在如图位置创建新密钥 3.进行配置 官方Api使用示例(JavaScript) 通过搜索接口找到个人公司位置: https://apis. ...

  4. 来,你们想要的打卡功能

    前言 ​ 你的世界多数情况下充满了混沌和单调,你的身体虽然不胖但并不会让你感觉到那么有力量:你的过往乏善可陈,充斥着很多伤心与 自我否定,你过往的未来也没有惊喜在场.你想要一场新生,想要一次脱胎换骨, ...

  5. EasyAR实现脱卡功能

    个人觉得所有ARSDK实现脱卡功能的方法都差不多,大致思路就是,托卡后将模型的父类设为ARCamera下的一个游戏物体,并调整好位置. 之前参考过这个EasyAR脱卡方法,(这个方法里的脚本一定得加到 ...

  6. 用Canvas实现刮刮卡功能的研究与实践

        前几天,单位老刘让我研究一下网上最近很流行的"刮刮卡"是怎么实现的,我第一时间就想起了我媳妇曾经跟我说过的:"在HTML5中Canvas的绘图能力很强大" ...

  7. 【Unity3D小功能】Unity3D中实现UI擦除效果、刮刮卡功能

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦. 一.前言 ...

  8. Vuforia AR 脱卡功能的实现

    在AR的开发过程中有时候会需要用到脱卡功能,脱卡功能是指即使识别图丢失的情况下被识别出来的模型也不会消失: 实现脱卡功能有以下几种解决思路: 在Vuforia插件的默认条件下,当识别图离开摄像头时间, ...

  9. id门禁卡复制到手机_怎么将手机当做门禁卡使用?给大家详解手机设置门禁卡功能...

    随着科技的发展,手机的功能是越来越强大了 . 门禁卡,相信大家都不陌生.进出小区都需要刷卡,自从手机可以使用微信跟支付宝支付功能以来,很少人携带钱包出门,一部手机便可以打车.吃饭付钱 等.银行卡跟身份 ...

最新文章

  1. Missing space before value for key 'path'vue.js解决空格报错
  2. 在EditText前面添加一个搜索的小图片
  3. 给zuul网关添加过滤器
  4. 命令行解析的规则以及Command Line Parser Library
  5. 领域应用 | 图数据库及其在恒昌的应用简介
  6. 大华热成像netsdkdemo_千年博物,智慧展馆丨大华股份全力守护“华夏珍宝库”...
  7. SQLi LABS Less 26a 联合注入+布尔盲注
  8. 卷积神经网络在tenserflow的实现
  9. CSS高级技巧【学习笔记】
  10. [渝粤教育] 中国地质大学 思想道德修养与法律基础 复习题
  11. cento7忘记root密码怎么办
  12. FORCESPRO的使用教程
  13. vmware虚拟机安装windows server 2012 绕过秘钥安装——P2
  14. iOS Memory 内存详解
  15. 如何将自己的代码上传到github
  16. 布尔教育 mysql高级_布尔教育 Mysql高级 燕十八
  17. 安徽审计职业学院计算机成绩,历年安徽审计职业学院计算机软件工程专业毕业论文选题.doc...
  18. 一篇了解算力相关问题
  19. 强大的语法生成器:Antlr 使用
  20. jQuery入门基础——选择器

热门文章

  1. 快解析结合象过河erp
  2. ​ ​c盘满了怎么扩展分区?​c盘太小如何扩展分区 ​
  3. 关于前嗅Forespider爬虫的常见问题答疑
  4. 2023软著申请,办理进度分享
  5. 【渝粤教育】电大中专市场营销管理 (3)作业 题库
  6. 未来的你,一定感谢现在拼命努力的自己
  7. 进化算法--遗传算法
  8. 大数据之路—— 事实表设计
  9. Kali 2.0安装w3af
  10. Linux命令之关机命令