V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zywoo
V2EX  ›  设计

考勤打卡后端业务是怎么实现的?

  •  
  •   zywoo · 2022-04-20 17:12:28 +08:00 · 3616 次点击
    这是一个创建于 972 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在整理项目准备面试,之前参加了一个国企的前后端分离项目,做移动 OA 系统,其中包括定位考勤功能。

    当时后端选择的电子围栏方案是百度地图鹰眼 API ,把前端传过来的经纬度在后台又转发给鹰眼后台做判断是否在鹰眼绑定好的电子围栏中。但是计算一个经纬度在不在以另一个经纬度为中心的一定半径范围内应该是可以直接计算的啊,为什么要调用 API 再计算一次?

    还有就是在打卡高峰期,后端会不会面对高并发的压力?有没有什么处理方法呢?

    求后端大佬们解惑

    9 条回复    2022-04-22 17:48:53 +08:00
    dilu
        1
    dilu  
       2022-04-20 17:23:32 +08:00   ❤️ 1
    参考前公司打卡机制,可以在打卡机本地做缓存。

    前公司是第二天才能看到前一天的打卡记录,大概有个 10 小时左右的延迟。

    如果网络同步失败,打卡机上还有记录。

    忘记打卡可以补签。

    而且我觉得打卡场景不太可能会有高并发的情况,啥公司打卡都能 100QPS ?
    hay313955795
        2
    hay313955795  
       2022-04-20 17:25:55 +08:00
    @dilu 再加上现在公司卷的不行.只有像我一样不努力上班的才会准时打卡...
    darkengine
        3
    darkengine  
       2022-04-20 17:34:19 +08:00
    电子围栏怎么会是计算某个点跟中心点的距离这么简单,至少也得是判断某个点是否落在多边形内部吧。
    zagfai
        4
    zagfai  
       2022-04-20 18:37:22 +08:00
    考勤肯定是时间相对集中的,但并发这个又谈不上,假设全球所有一个小时内同时打卡,10 台 nginx 机器应该就能抗下了
    cszchen
        5
    cszchen  
       2022-04-20 19:15:46 +08:00 via iPhone
    电子围栏不一定是圆的,多边形自己算很麻烦
    v2eb
        6
    v2eb  
       2022-04-20 21:02:42 +08:00 via Android
    1. 怎么实现:通常设置打卡点,判断打卡人经纬度是否在打卡范围之内。
    2. 为什么调用 API 判断:可能电子围栏是很复杂多边形?
    3. 是否会有高并发的压力:OA 系统是公司内部项目吧。看公司用户量,而且也不会都准点同时下班。
    4. 打卡高并发处理:等楼下同学答案。
    biubiuF
        7
    biubiuF  
       2022-04-20 23:48:51 +08:00
    打卡之后存一份状态到 redis ,发送一个打卡的消息到 kafka 再直接到返回前端打卡成功,然后通过一个兜底的服务消费 kafka 的消息持久化到数据库.不过打卡这个业务应该没啥高并发吧
    Elissa
        8
    Elissa  
       2022-04-21 23:15:02 +08:00
    要是想自己实现,可以试试 ArcGIS 的服务,不过 GIS 服务器也麻烦,搭好后调接口
    ychenenen
        9
    ychenenen  
       2022-04-22 17:48:53 +08:00
    考勤打卡直接判断公司的经纬度和打卡时刻用户的经纬度的距离就行吧, 感觉也可以不用围栏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5909 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 02:10 · PVG 10:10 · LAX 18:10 · JFK 21:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.