二维码生成设计方案
前端动态生成 利用qrcode.js就可以在前端动态生成二维码。 好处:所有二维码动态生成,不用存储静态文件。 不足: 在不对链接做处理的情况下,如果链接很长,二维码信息多,会造成生成的二维码图片“密密麻麻”,在远距离/弱光环境下无法扫 因为不是二维码图片,所以只能截图分享,操作成本高 前端动态生成 + 短链接服务 利用短链接服务,可以将长链接转换为短链接,再生成二维...
前端动态生成 利用qrcode.js就可以在前端动态生成二维码。 好处:所有二维码动态生成,不用存储静态文件。 不足: 在不对链接做处理的情况下,如果链接很长,二维码信息多,会造成生成的二维码图片“密密麻麻”,在远距离/弱光环境下无法扫 因为不是二维码图片,所以只能截图分享,操作成本高 前端动态生成 + 短链接服务 利用短链接服务,可以将长链接转换为短链接,再生成二维...
什么是 tmpfs? tmpfs 是 Linux 提供的虚拟内存文件系统,可以用于高性能 I/O。 注意:它不是永久的,只是暂时存放。重启 os,tmpfs 中的文件会消失(和内存类似)。 在 linux 下,它默认最大为内存的一半大小,使用df -h命令可以看到,且大小不是固定的,。它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是 0 字节;如...
背景 Linux 有一套 CPU 调度策略。多个进程同时处于内存,当一个进程 wait,os 会拿走 cpu 使用权先给其它进程使用。 对于多核系统,不做特殊设置,程序进程是不会和某个 cpu 关联,而是服从 os 调配。这就造成了一个问题,来回切换 cpu,会产生大量上下文切换,影响性能。 taskset 命令 通过 taskset 可以将进程绑定到特定的 cpu 上运行,从而避免...
ECONNRESET 问题 出现原因 一段长连接,静默一段时间后,服务端没收到数据想主动关闭了 socket。 此时,客户端不知道服务端要关闭 socket,就发送了一个新的 http 请求。 当客户端发完 http 请求,到抵达服务端之间的这段时间,服务端刚好关闭了 socket(客户端才能收到 socket 连接关闭的事件,并触发相关回调逻辑)。 所以当请求抵达服务端,因为服务...
国庆前后腾讯云·云开发开发了分布式全链路日志。相较于单体服务日志,分布式全链路日志的设计更有意思,包括日志生成逻辑、上报逻辑以及前端的显示逻辑。 全链路日志的作用 用户从发起请求,到收到请求之间,请求会经过很多服务。 例如对于云开发来说,用户通过 js-sdk 调用云数据库,写入数据。链路是:js-sdk => LB(负载均衡)=> gateway(云开发中间层) =>...
定时任务作用 简单来说,就是能在指定时间启动的脚本逻辑。 一般用于: CI:例如静态构建 异步任务:例如订单超时、邮件检查 清理/检查数据:例如分布式事务失败,定时检查发现异常,回滚数据 Node 启动定时任务 1、安装依赖 npm install node-cron execa npm install -g pm2 node-cron.js 支持 cron ...
场景1:数据库连接池(IO密集型) 如果每次数据库请求都请求都开启一个连接,然后用完销毁,性能会有问题。 分析程序的日志之后,你发现系统慢的原因出现在和数据库的交互上。因为你们数据库的调用方式是先获取数据库的连接,然后依靠这条连接从数据库中查询数据,最后关闭连接释放数据库资源。 我们统计了一段时间的 SQL 执行时间,发现 SQL 的平均执行时间大概是 1ms,也就是说相比于 SQL ...
漏桶算法 算法介绍 漏桶算法能够实现平滑流量,防止过大流量打到后端服务,导致崩溃。 对于不确定的流入速度,经过漏桶的处理,流出的速度是稳定。 变量描述 C:桶的总容量 r:水漏走的速度 a:上个请求 at:上个请求进来的时间 w:处理完上个请求后,桶里的总量 b:新请求 bt:新请求进来的时间 算法实现 let R = 10; // 每ms允许10个流量,QPS是1...
用途 假设QPS是2。那么时间窗口大小设置为1s,并且其中的大小设置为2。 从而保证 [0, 1], [1, 2], … , [n - 1, n] 每个时间窗口内,请求量都是1。 实现 限制时间窗口内的请求总数(size) 时间窗口内的已有请求量(num)定时刷新 /** * 1、限制时间窗口内的请求总数(size) * 2、时间窗口内的已有请求量(num)定时刷新...
本地缓存 方法1: 堆上缓存 在进程中,使用堆内/堆外缓存。 优点: 实现简单 读取速度高 缺点: 进程挂掉,缓存丢失 进程重启,大流量可能冲垮应用 堆上缓存可能造成语言 GC 效率降低 无法持久化,无法分布式共享 方法2: local redis cache 使用本地 redis 代替堆上缓存。本地代表着没有网络 IO 消耗,读取速度高。并且...