服务端超时控制

服务端超时控制
服务端的资源是有限的, 处理已经超时的请求是没任何意义的. 超时控制是保障服务稳定的一道重要防线, 本质是快速失败节省资源.
Read more →

Node Grpc Health Check

Node Grpc Health Check
本文讲述如何实现 GRPC Health Checking Protocol.
Read more →

OpenTelemetry-JS Tracing 实现详解

OpenTelemetry-JS Tracing 实现详解
本文讲解 OpenTelemetry-JS tracing 相关使用和实现原理.
Read more →

在 Typescript 中使用 gRPC

在 Typescript 中使用 gRPC
gRPC 是一个高性能, 支持多种语言的 RPC 框架, 官方已经支持了 NodeJS 语言. 而 Typescript 作为 JavaScript 的超集, 可以提高 js 代码的可维护性, 并且代码提示很不错, 已在 js 市场占据了很大份额. 本文简单介绍下 gRPC 在 Typescript 中如何使用.
Read more →

NodeJS 新特性 AbortController

NodeJS 新特性 AbortController
NodeJS 15.0.0 版本增加了一个很有意思的新特性 AbortController, 主要是用来撤销某些正在运行的 Promise.
Read more →

一个可以根据 mongoose schema 生成 model 类型的工具

如何解放双手根据 mongoose schema 类型生成 Typescript 类型.
Read more →

NodeJS 如何实现 “ThreadLocal”

提起 ThreadLocal 这个词,线程局部存储,Java 的朋友们可能很熟悉。从名字看就可以看出来应该是多线程语言的 “特权”,大家都知道 NodeJS 是单线程的,那么它与 NodeJS 又有什么关系呢?

Read more →

Ts typings 包版本冲突问题

对于 Node 开发者来说, 早已习惯成千上万的项目依赖, 但是过多的依赖会导致依赖变成网状而且会带来 版本冲突, 虽然 npm 会帮助我们处理这些问题, 但是如果是 typings 包冲突的话, 编译基本就会报错了, 我们来看看为什么吧.

Read more →

访问控制利器 Casbin

往往我们会有需要访问控制的需要,比如后台系统需要根据部门来控制权限。k8s 使用 RBAC 作为访问控制策略,使用过的应该知道。那么怎么样才能写出这么优雅的访问控制器呢?有什么成熟的框架呢?答案是:有!那就是今天的主角 Casbin!

Read more →

Http Middleware

接触过 web 服务编程的人对中间件无人不知无人不晓,那么这么常见的东西本质是什么样子的呢?下面我们简单了解一下。

Read more →

koa + graphql + dataloader

如果不熟悉 dataloader 和 graphql,请看之前的两篇文章。

dataloader 配合 graphql 使用会使得 schema 定义变得非常简洁清晰。

Read more →

使用dataloader

dataloader简单的说就是实现了接口([input1, input2...]) => ([output1, output2...]),输入几个值就会输出几条数据,对于我们使用者知道这个就差不多了。当然,他的功能实现远不止这些,详情请查看项目

Read more →

koa graphql 处理图片上传

graphql 一般都是以application/jsonapplication/graphql的形式请求的,如果要上传文件,会用到form-data形式,所以,我们需要写一个中间件来处理。

Read more →

koa graphql server 支持 application/graphql

本文需要您对 graphql 有基本的了解

graphql 服务端有两个很方便的库,express-graphqlapollo-server

express-graphql默认支持application/graphql, 而apollo-server中的库都不支持,我们可以自行实现。

Read more →

yarn config

GFW 内开发的生存之道,不但要攻克代码难题还要和我们的保护伞作斗争,真是累。

cnpm

这里肯定得感激淘宝为我们带来的国内npm 镜像站,好多人为了方便直接使用cnpm,但是cnpmnpm 处理依赖的方式不一样,所以使用cnpm的项目中的node_modules文件夹下回有一个额外的.bin目录,所以会有很多额外的开销,也会使得有些IDE打开项目时非常卡。所以,我已经放弃使用cnpm了, 当然yarn的出现也是非常大的原因。

Read more →