最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 前端监控平台系列:服务端功能设计与实现

    正文概述 掘金(智云健康大前端团队)   2020-12-01   440

    本文作者:cjinhuo,未经授权禁止转载。

    背景

    接着上一个系列的前端监控平台系列:JS SDK(已开源),这篇的主要目的讲下服务端的功能设计与实现

    技术栈

    nestjs

    nestjs对TS支持较好,有丰富的装饰器以及开箱即用的依赖注入容器

    redis

    redis.hash

    由于错误上报是一个经常性的操作,如果每次都查询数据库比较浪费资源,所以用来存放apikey与项目间的联系等一些需要常用的数据,全部都存在一个hash中是为了跟别的项目区分开,相当于一个命名空间的作用(hash中的key不能设置过期时间)

    redis.string

    用来存放用户id信息、项目id信息以及一些高频使用数据,但是切记要设置过期时间,不然一些长期没有用的数据就会残留在redis

    redis.list

    用来实现类似RabbitMQ的功能,用于批量计算入库,下文有介绍

    redis.bitmap

    bitmap用来统计某个标签的数量不仅速度快、支持高并发、占的内存特别少,因为是用二进制来存储每个对应标签的值,首先来了解下bit(位)、byte(字节)、word(字)

    Bit&Byte&Word

    Bit = Binary digIT = 0 or 1

    Byte = a sequence of 8 bits = 00000000, 00000001, ..., or 11111111

    Word = a sequence of N bits where N = 16, 32, 64 depending on the computer

    场景一:比如我现在需要统计全公司所有人(有10万个员工)的一年内365天的签到记录:

    1. 用数据库来存储,建一张包含时间、员工id,每次有人签到就直接在对应表中insert缺点:如果人数很多并且同时签到,会造成数据库连接池爆炸,不能实时更新。优点:存有明细数据,可以查询某一天的某个时刻签到的
    2. 用每天的日期当做bitmapkeyvalueuserId,一个userId在内存中占了二进制位(bit),比如连续自增userId10万个人签到在内存中占了(12500B ≈ 12K,如果换成hash表,相当与用word来存储,内存至少大了16倍),判断一个人是否签到只需要判断当前userId所处的二进制位是否被占。缺点:需要自己在内存中额外建一个map来对应明细数据,比如用户在某天签到的具体时间。优点:运行内存速度快、支持高并发,实时查询、插入、更改

    前端监控平台系列:服务端功能设计与实现

    员工签到-bitmap

    起源地下载网 » 前端监控平台系列:服务端功能设计与实现

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元