nodejs的express负载均衡

我们知道nodejs是单线程的,在特定场合是不能利用CPU多核的优势的。一般有两种方式来解决,一种是利用nodejs的cluster模块创建多个子进程来处理请求以充分利用cpu的多核,还有一种是nodejs运行多个服务分别监听在不同的port,利用nginx创建一个upstream池,来分发请求到nodejs的不同服务端口来处理。
由于我们是要负载均衡express,涉及到用户的会话保持就很重要,不然原先建立请求的是进程A,下次请求转到进程B处理,进程B没有之前用户在进程A的上下文信息,那么处理就会出现问题。
cluster方式下,推荐使用redis来存储会话

var jargs = require('./argsfile.json');
const { createClient } = require('redis');
const client = createClient({ url: jargs.redisurl });
client.on('error', err => { logger.error("Redis连接出错"); });
client.connect();
const { RedisStore } = require('connect-redis-session');
...
app.use(session({name: jargs.sessionname,secret: jargs.ssosecret,store: new RedisStore({ client }), saveUninitialized: true,resave: true,cookie: { httpOnly: true, maxAge: jargs.sessionage }}));

这样会话保存在redis中,不同进程可以共享session信息。
用户nginx upstream池怎么操作呢?其实也可以用redis来共享session的,还可以利用nginx自己的ip_hash策略来确保用户请求源IP固定的情况下,只会连接到upstream池中特定后端目标,这样也不会导致会话丢失。

	upstream svc_pool {ip_hash;server 172.17.36.50:8031;server 172.17.36.50:8032;server 172.17.36.50:8033;server 172.17.36.50:8034;server 172.17.36.50:8035;server 172.17.36.50:8036;server 172.17.36.50:8037;server 172.17.36.50:8038;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/787178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码+视频,手动绘制logistic回归预测模型校准曲线(Calibration curve)(1)

校准曲线图表示的是预测值和实际值的差距,作为预测模型的重要部分,目前很多函数能绘制校准曲线。 一般分为两种,一种是通过Hosmer-Lemeshow检验,把P值分为10等分,求出每等分的预测值和实际值的差距. 另外一种是calibra…

JAVA8 新特性StreamAPI使用(二)

一、使用StreamAPI,(基于数据模型——客户、订单和商品,实体关系图如下,客户可以有多个订单,是一对多的关系,而产品和订单的关系是多对多的)需求如下: 二、Stream API思维导图 三、需…

3款必知的AI写作软件,智能写文效率高

在当今信息爆炸的时代,写作已经成为人们生活和工作中不可或缺的一部分。然而,随着人们对高效率和高质量写作需求的不断增加,人工智能写作软件应运而生。这些AI写作软件凭借其强大的语言处理能力和智能算法,为写作者们提供了全新的…

基于java的智能停车场管理系统

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclip…

STC8H8K64U 学习笔记 - PWM

STC8H8K64U 学习笔记 - PWM 环境说明引脚说明 PWM呼吸灯震动马达 乐谱 环境说明 该内容仅针对我自己学习的开发板做的笔记,在实际开发中需要针对目标电路板的原理图进行针对性研究。 芯片:STC8H8K64U烧录软件:stc-isp-v6.92G编码工具&#xf…

wireshark抓包之DNS协议

DNS协议 DNS协议的主要作用是将域名解析为对应的IP地址。当我们在浏览器中输入一个网址时,计算机需要通过DNS协议来查找该网址对应的IP地址,以便能够建立连接并访问目标资源。 DNS协议的工作流程大致如下: 用户的计算机或设备(充…

又到清明,祝你健康珍重!Wish you health and treasure!

随着清明节的到来,全国各地的人们都在怀念和哀悼逝去的亲友。People around China commemorated deceased relatives and friends as theQingming Festival begins. 清明节不仅是中国的二十四节气之一,也是中国人缅怀逝去亲人的日子。Qingming is not on…

【力扣】45.跳跃游戏Ⅱ

45.跳跃游戏Ⅱ 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i j < n 返回到达 n…

wencoo个人的博客目录索引-更新

Author: wencoo Blog&#xff1a;https://wencoo.blog.csdn.net/ Date: 01/04/2024 Email: jianwen056aliyun.com Wechat&#xff1a;wencoo824 QQ&#xff1a;1419440391 Details:文章目录 目录技术交流音视频领域其他技术文章的链接opengl相关文章ffmpeg相关文章ffmpeg原理相…

数学矩阵(详解)

矩阵乘法 知阵乘法是《线性代数》中的基础内容&#xff0c;但在考察数学的算法题中也会出现。 本节我们学习基础的矩阵乘法规则。 每个矩阵会有一个行数和一个列数&#xff0c;只有当相乘的两个矩阵的左矩阵的列数等于右矩阵的行数 时&#xff0c;才能相乘&#xff0c;否则不允…

XML的基础知识及XMl文件的创建/读取/更新demo详解

1.什么是xml&#xff1f; Xml&#xff08;Extensible Markup Language&#xff09;,可扩展标记语言&#xff0c;一种用于存储数据或传输数据的标记语言&#xff0c;由万维网&#xff08;W3C开发&#xff09;。它允许开发人员创建自己的标记&#xff0c;且简单易读&#xff0c;…

游戏APP如何提高广告变现收益的同时,保证用户留存率?

APP广告变现对接第三方聚合广告平台主要通过SDK文档对接&#xff0c;一些媒体APP不具备专业运营广告变现的对接能力和资源沉淀&#xff0c;导致APP被封控&#xff0c;设置列入黑名单&#xff0c;借助第三方聚合广告平台进行商业化变现是最佳选择。#APP广告变现# 接入第三方平台…

【前端基础】使用 typeof 进行类型判断注意点

在使用typeof进行类型判断时&#xff0c;需要注意以下几点&#xff1a; 基本数据类型判断&#xff1a;typeof可以用于判断基本数据类型&#xff0c;包括"undefined", "boolean", "number", "string", "bigint", "symb…

EasyDarwin 、ffmpeg 音视频推流拉流;OBS视频推理软件、obs-rtspserver服务器;python读取rtsp流

参考&#xff1a;https://blog.csdn.net/N71FS1/article/details/130019563 一、EasyDarwin ffmpeg ffmpeg 推送音视频流到rtsp流服务器 EasyDarwin 作为rtsp流服务器 &#xff08;下载&#xff1a;https://www.easydarwin.org/p/easydarwin.html&#xff09;OBS 直播音视频录…

分享:搭建企微知识库简单易学步骤

说起企微知识库&#xff0c;可能有些人还不太清楚&#xff0c;为什么现在很懂企业选择搭建企微知识库&#xff1f;其实&#xff0c;企微知识库就是一个装满了企业的各种知识、经验和资料的载体。目的是为了方便员工随时查找和学习、有助于知识的传承和共享、加强团队协作和沟通…

专题三_二分查找(2)

目录 35. 搜索插入位置 解析 题解 852. 山脉数组的峰顶索引 解析 题解 162. 寻找峰值 解析 题解 35. 搜索插入位置 35. 搜索插入位置 - 力扣&#xff08;LeetCode&#xff09; 解析 题解 class Solution { public:int searchInsert(vector<int>& nums, int…

MS SQL Server STUFF 函数实战 统计记录行转为列显示

目录 范例运行环境 视图样本设计 数据统计要求 STUFF函数实现 小结 范例运行环境 操作系统&#xff1a; Windows Server 2019 DataCenter 数据库&#xff1a;Microsoft SQL Server 2016 视图样本设计 假设某一视图 [v_pj_rep1_lname_score] 可查询对某一被评价人的绩效…

重生奇迹mu召唤技能

1、召唤师与法师的共通技能&#xff1a;火球术、真空波、陨石、冰封。 2、摄魂咒&#xff1a;夺取敌人的体力来补充自己的体力。 3、链雷咒&#xff1a;雷系列的技能&#xff0c;给予敌人连锁3次的雷电攻击&#xff0c;如果目标附近没有其他目标&#xff0c;就会攻击第一个对…

密码学基础古典密码

古典密码学有两种基本方法&#xff0c;置换密码和替代密码&#xff0c;置换密码指的是&#xff0c;密文和明文的字母是一样的&#xff0c;只是顺序不一样而已&#xff0c;而替代密码指的是&#xff0c;有一张对应的表&#xff0c;将明文中的字符替换成另一个字符。达到生成密文…

手撕算法-有效的括号

描述 分析 使用栈&#xff0c;如果是左括号&#xff0c;入栈&#xff0c;如果是右括号&#xff0c;判断栈是否为空&#xff0c;不是空出栈并校验是否匹配&#xff0c;不匹配返回false。最后如果栈为空&#xff0c;返回true。 代码 class Solution {public boolean isValid(…