全部文章all(329)
    简洁模式
31

Node.js keepalive常见问题

## ECONNRESET 问题### 出现原因一段长连接,静默一段时间后,服务端没收到数据想主动关闭了 socket。此时,客户端不知道服务端要关闭 socket,就发送了一个新的 http 请求。当客户端发完 http 请求,到抵达服务端之间的这段时间,服务端刚好关闭了 socket(客户端才能收到 so.....

2020-10-15
32

分布式链路日志设计和开发

国庆前后腾讯云·云开发开发了分布式全链路日志。相较于单体服务日志,分布式全链路日志的设计更有意思,包括日志生成逻辑、上报逻辑以及前端的显示逻辑。## 全链路日志的作用用户从发起请求,到收到请求之间,请求会经过很多服务。例如对于云开发来说,用户通过 js-sdk 调用云数据库,写入数据。链路是:js-sdk =.....

2020-10-14
33

Node.js 定时任务:node-cron

## 定时任务作用简单来说,就是能在指定时间启动的脚本逻辑。一般用于:- CI:例如静态构建- 异步任务:例如订单超时、邮件检查- 清理/检查数据:例如分布式事务失败,定时检查发现异常,回滚数据## Node 启动定时任务### 1、安装依赖```shnpm install node-cron execanp.....

2020-10-13
34

云开发

[Serverless 的 4 种错误打开方式](https://www.infoq.cn/article/1blL0USXADL3Q5iKOHPV).....

2020-10-12
35

限流算法-漏桶算法

## 算法介绍漏桶算法能够实现**平滑流量**,防止过大流量打到后端服务,导致崩溃。对于不确定的流入速度,经过漏桶的处理,流出的速度是稳定。## 变量描述C:桶的总容量r:水漏走的速度a:上个请求at:上个请求进来的时间w:处理完上个请求后,桶里的总量b:新请求bt:新请求进来的时间## 算法实现```jav.....

2020-10-11
36

实战案例-大流量与消息队列

## 消息队列的场景消息队列是用来**解耦不需要同步调用的服务**或者**订阅系统关心的变化**。使用消息队列可以实现服务解耦(一对多消费)、异步处理、流量削峰/缓冲等,## 消息队列注意点- 消息丢失:持久化数据日志- 重复消息:业务防重处理## 场景介绍设计的核心点是:牺牲强一致性,但保证最终一致性。下面.....

2020-10-09
37

缓存设计-堆上缓存和local redis

## 本机缓存:堆上缓存在进程中,使用堆内/堆外缓存。优点:- 实现简单- 读取速度高缺点:- 进程挂掉,缓存丢失- 进程重启,大流量可能冲垮应用- 堆上缓存可能造成语言 GC 效率降低- 无法持久化,无法分布式共享## 本机缓存:local redis cache使用本地 redis 代替堆上缓存。本地代表.....

2020-10-08
38

缓存设计-多级缓存设计(分布式)

## 为什么需要多级缓存?在云开发网关中,缓存层的设计至关重要。最初,缓存是放在堆上的本机缓存。基本策略是 LRU,过期支持异步续期。假设集群中有 60 个 pod,采取普通轮询的方式分配流量,缓存有效期是 60s。用户每分钟请求少于 60 个,就会落到不同的 pod 上,不会命中缓存。对于用户,每次请求都很.....

2020-10-08
39

Nginx配置健康检查

## 为什么要心跳检查?目的是为了 Server 的健康检查。因为 nginx 支持 4 层和 7 层代理,所以支持 tcp 心跳检查和 http 心跳检查。## nginx 配置**http 心跳检查**:```confupstream myservers { server 127.0.0.1:444.....

2020-10-07
40

Nginx配置长连接

## 为什么要用长连接?- 不需要每次 tcp 请求都经历握手和挥手的过程- 提高响应请求响应时间,减少 time-wait 状态的 Socket## Nginx 配置思路先来看请求链路过程是:C 端请求 => Nginx 代理 => 上游的 Server。所以,Nginx 要做到两头都是长连接:- C 端请.....

2020-10-06