1、使用过的koa2中间件
-
1、koa-router
koa.js为了保持自身的精简,并没有像 Express.js自带了路由功能,因此koa-router做了很好的补充,提供了全面的路由功能,比如类似 Express的app.get/post/put的写法,URL命名参数、路由命名、支持加载多个中间件、嵌套路由等 -
2、koa-bodyparser
koa.js并没有内置 Request Body的解析器,当我们需要解析请求体时,需要加载额外的中间件,官方提供的koa-bodyparser
是个很不错的选择,支持x-w-form-urlencode、application/json等格式的请求体,但不支持form-data的请求体,需要借助koa-body
; -
3、koa-views
视图模板渲染中间件 -
4、koa-static
用作类似 Nginx的静态文件服务,在本地开发时特别方便,可用于加载前端文件。 -
5、koa-jwt
koa-jwt这个中间件使用JWT认证HTP请求 -
6、koa-logger
koa-logger提供了输出请求日志的功能,包括请求的url、状态码、响应时间、响应体大小等信息,对于调试和跟踪应用程序特别有帮助。
2、koa-boy原理
koa-body可以实现文件上传,同时也可以让koa能获取post请求的参数。
3、koa中自定义中间件
下边,我是写了一个异常捕获中间件,在 app s中使用app.use()注册即可
//errMiddLeWare.js
const errMiddleWare = async (ctx,next)=>{
try{
//加上了 await,相当于等所有的中间件都执行完毕后,这个next才会执行
await next();
}catch(err){
ctx. body = "服务器异常,请稍后!";
}
module exports = {
errMiddleWare
}
在app.js中使用
//app. js
const App= require(koa') //koa框架
const { errMiddleWare } = require("./errMiddleWare/errMiddleware.js");
const app = new App()
app.use(errMiddleWare)//注册自定义异常捕获中间件
app.listen(3000)
4、有没有涉及到cluster
cluster模块可以创建共享服务器端口的子进程
单个Node.js实例运行在单个线程中。为了充分利用多核系统,有时需要启用一组Node.js进程,去处理负载任务
const cluster = require ('cluster');
const http = require('http')
const numCPUs = require('os').cpus().length;
if (cluster.isMaste){
console.log(`主进程${ process.pid}正在运行`);
//衍生工作进程
for(let i =0;i<numCPUs;i++){
cluster.fork();
}
cluster.on('exit',(worker, code, signal)=>{
console.1og(`工作进程${worker process.pid}已退出`
})
}else{
//工作进程可以共享任何TCP连接
//在本例子中,共享的是HTTP服务器
httpcreateserver((req,res)=>{
res,end("你好世界\n");
}).1isten(8888);
console.log(`工作进程${ process.pid }已启动`);
5、介绍pm2
pm2是node进程管理工具,可以利用它来进行性能监控、自动重启、负载均衡
6、主线程master挂了的话,pm2怎么处理
-
Node.js执行环境
首先,你应该知道,Node.js是一个运行在名叫V8的javaScript引擎上的平台系统
。V8本身是单线程的,并没有充分利用多核系统能力。(注:Node执行JS代码运行在V8上,是单线程,但并非真正的单线程架构) -
Node.js的集群模式
Node.js提供了集群模块,简单讲,就是复制一些可以共享TCP连接的工作线程
-
Node.js的集群模式的工作原理
集群模块会创建一个 master主线程,然后复制任意多份程序并启动,这叫做工作线程。工作线程通过IPC频道进行通信,并且使用了Round-robin algorithm箅法
进行工作调度以此实现负载均衡。Round-robin algorithm箅法
调度策略主要是 master主线程负责接收所有的连接并派发给下面的各个工作线程。 -
PM2的方式实现集群模式
PM2内置了内置了集群模式。只需启动时执行如下:
pm2 start app.js -i 4
如果i为0表示,会根据当前CPU核心数创建
4表示实例程序的个数,就是工作线程;
pm2保持你的程序不中断运行,如果任何一个程序中断,就会立即重启;或者使用如下命令重启
pm2 restart all
实时调整集群数量
你可以使用命令pm2 scale调整你的线程数量,如pm2 scale app+3会在当前基础上加3个工作线程。
7、node连接mysql数据库
参考链接:https://blog.youkuaiyun.com/yiyueqinghui/article/details/113499944