NodeMan介绍

    近年来,随着nodejs的突飞猛进,node项目数量增长迅猛,node项目完美的阐释了“开箱即用”的理念。小到创业公司,大到阿里这样的巨头,背后均有node的身影。

    node项目基于Chrome的V8引擎,使用JavaScript(或者TypeScript)作为开发语言,本身就区别于传统的Java、PHP网站(当然,还有C#等等)。由于JavaScript的单线程、非阻塞等特性(如果不理解JavaScript的线程、进程特性,建议该充充电啦),非常适用于网站的建设(I/O密集型应用),不适用于CPU密集型应用。

    那么,问题来啦!使用node启动的服务只能利用单核CPU(网上有大神做了多线程的模块,不在考虑范围),而我们现在大多数的服务器CPU核心数均不止一核,因此,需要我们手动的去做负载均衡。常见的有两种方式,1 手动根据CPU数量来启动子进程,并分配http请求, 2 启动多个node服务并监听同一端口,以竞争的方式来处理http请求。

提示:这两种负载均衡模式各有利弊,本文的主要目的不是为了讲解负载均衡,因此,不做过多赘述,有兴趣可以深入理解一下,传送门:https://blog.csdn.net/hongchh/article/details/79898816

    以上是nodeman项目产生的背景,下面来介绍一下nodeman项目解决的痛点。既然node服务只用一核CPU,那么何不购买只有一核CPU的云服务器?每个服务器上部署一个node服务,集群的稳定性、健壮性以及之后的扩展均表现的非常优秀。此时,痛点来啦,如果我要更新服务器运行的代码版本,那么我就要手动的登录每个服务器,之后停止服务,pull代码,手动重启。更糟糕的是,如果我的服务器很多,在执行了一半的部署之后,发现这个版本有bug,Oh my god,回滚吧。

    因此,nodeman出现啦,话不多说,先上图。

server_module.png

    从图中可以看到,nodeman提供了以下十大功能

  1. 自动嗅探服务器上的node服务,并添加管理

  2. 实时监测node服务和代理服务的状态(基于socket.io)

  3. 服务器的启停控制(支持批量操作)

  4. Git部署

  5. Git定时部署(通常我们升级版本应该在用户量低的时候升级,因此我们提供计划任务部署功能,可自行选择部署时间)

  6. 查看部署记录,并支持回滚操作

  7. 证书生成(使用letsencrypt生成免费的ssl证书)

  8. 证书部署(将生成的证书部署到node服务中,并重启服务)

  9. 证书每月自动更新并部署(letsencrypt免费证书的有效期限为三个月,因此,我们提供每月自动更新证书功能)

  10. 邮件发送(国内可选择短信发送,主要用于计划任务执行后的通知,例如证书每月生成结果,Git定时部署结果)

以上十大功能为nodeman主要解决的需求,接下来会逐一介绍各个功能,以及如何实现和实现中踩到的坑。

提示:nodeman项目除了以上十大主要功能外还拥有一些定制功能,例如编辑node服务的配置文件等等,这些辅助功能在之后的介绍中不会列出。


测试地址:http://nodeman.iricbing.cn:8080

账号:admin@restmesh.com

密码:123qwe

转载于:https://www.cnblogs.com/danielWise/p/9910354.html

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

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

相关文章

#ifndef, #define, #endif的作用

目录作用示例作用 #ifndef 它是if not define 的简写,是宏定义的一种,实际上确切的说,这应该是预处理功能三种(宏定义、文件包含、条件编译)中的一种——条件编译。 在c语言中,对同一个变量或者函数进行…

高性能的MySQL(2)慢查询

一、剖析MySQL查询1、首先从慢查询开始,慢查询是开销最低,精度最高的测量查询时间的工具。a、开始mysql的慢查询,修改my.conf[mysqld] #开启慢查询 log_slow_queries ON #指定日志文件存放位置,可以为空,系统会给一个…

python爬虫获取小说根据正文调用函数传入章节地址列表_python爬虫之小说章节获取,聊斋志异小说完整版...

“写鬼写妖高人一等,刺贪刺虐入骨三分。”没找到聊斋志异完整版的txt文档,那就把在线阅读的文章抓下来吧。开发环境python3.7requests模块lxml模块获取分析找到聊斋志异的小说网站。通过查看源码与分析小说每一章的URL链接发现,构成每一章的U…

程序运行时对应的内存分布(BSS段、数据段、代码段、堆、栈)关系

参考:程序运行时对应的内存分布关系 作者:嵌入式基地(公众号) 发布时间: 2021-04-28 网址:https://mp.weixin.qq.com/s/AVDPZawSjg9HtxEm8vsFBA 参考:静态变量与动态变量的定义与区别 作者&…

java线程池 锁_java多线程——锁

这是多线程系列第四篇,其他请关注以下:如果你看过前面几篇关于线程的文字,会对线程的实现原理了然于胸,有了理论的支持会对实践有更好的指导,那么本篇会偏重于线程的实践,对线程的几种应用做个简要的介绍。…

Ubuntu时间显示不准确的解决方案

参考:解决ubuntu里面时间不正确的办法 作者:三速何时sub20 发布时间:2020-12-08 16:24:27 网址:https://blog.csdn.net/weixin_44234294/article/details/110875899?spm1001.2014.3001.5501 目录1、进入终端2、输入命令3、选择 A…

Ubuntu下软件的安装、卸载方法

参考:Ubuntu 如何使用命令卸载安装过的软件(超级简单) 作者:一只青木呀 发布时间:2020-08-04 09:19:01 网址:https://blog.csdn.net/weixin_45309916/article/details/107778981 参考:Ubuntu下软…

Ubuntu文件压缩、解压缩、打包解包(带软链接)、拷贝文件(带软链接)、拷贝文件夹

参考:Ubuntu 命令解压文件大全 作者:一只青木呀 发布时间: 2020-08-04 17:18:55 网址:https://blog.csdn.net/weixin_45309916/article/details/107791294 参考:打包和压缩的概念和区别 作者:不浪漫的罪名L…

Ubuntu开启FTP服务方法(Ubuntu和Windows之间互传文件需要开启——服务器端)

目录Ubuntu开启FTP服务步骤:Ubuntu开启FTP服务步骤: 工作中Ubuntu和Windows之间互传文件,需要服务器端(Ubuntu)开启FTP服务,客户端(Windows)安装FileZilla。平时自己学习电脑安装虚拟…

win7共享wifi

为什么80%的码农都做不了架构师?>>> 1.从开始菜单找到“命令提示符”,或直接键入cmd快速搜索,右键单击它,选择“以管理员身份运行” 2.运行以下命令启用虚拟无线网卡: netsh wlan set hostednetwork mod…

Ubuntu开启NFS、SSH服务(驱动开发用到、电脑端登录ARM板用到)

参考:Ubuntu下NFS服务的开启 作者:一只青木呀 发布时间:2020-08-04 14:06:58 网址:https://blog.csdn.net/weixin_45309916/article/details/107784877 目录NFS服务的开启1.安装NFS服务2.创建 linux 工作目录3.配置NFSUbuntu下SSH…

【整理】MySQL 之 autocommit

2019独角兽企业重金招聘Python工程师标准>>> mysql 默认是开启 auto commit 的。可以通过如下命令查看 session 级别和 global 级别的设置: mysql> select session.autocommit; ---------------------- | session.autocommit | ---------------------…

交叉编译链的安装

参考:嵌入式 交叉编译链的安装 作者:一只青木呀 发布时间:2020-08-04 18:13:13 网址:https://blog.csdn.net/weixin_45309916/article/details/107789879 目录什么是交叉编译器交叉编译器的下载交叉编译器的安装1.把下载的文件放到…

Ubuntu下安装VS Code以及C/C++插件(PS工作目录的创建)

参考:Visual Studio Code Ubuntu下安装 以及C/C插件大全 作者:一只青木呀 发布时间:2020-08-05 11:55:53 网址:https://blog.csdn.net/weixin_45309916/article/details/107811506 目录为何选择安装VS CodeVisual Studio Code 安装…

Common Lisp中调用R

2019独角兽企业重金招聘Python工程师标准>>> R是功能强大的统计软件,和Lisp一样也有一个交互式的命令行环境,还有众多的扩展库,可以用来进行专业的统计分析。要在Common Lisp中方便的调用R的功能,可以试用rcl这个库。安…

java生成pdf加密_java使用iText 生成PDF全攻略(表格,加密)

java使用iText 生成PDF全攻略,包括创建文档,设置字体,添加表格(PdfPTable),创建新页(newPage),设置布局,加密主要使用的jar包: itextpdf-5.4.2.jar,itext-pdfa-5.4.2.jar,itext-xtra-5.4.2.jar,如果用到中文,需要CJK字体的扩展包:itext-asian.jar如果用到…

恩智浦NXP I.MX6ULL芯片介绍下载官网资料

参考:NXP I.MX6ULL芯片介绍以及资料的获取 作者:一只青木呀 发布时间:2020-09-26 10:54:26 网址:https://blog.csdn.net/weixin_45309916/article/details/108808573 目录I.MX6ULL芯片介绍以及官网资料的获取I.MX6ULL芯片介绍以及…

判定点是否在不规则多边形内部的问题

2019独角兽企业重金招聘Python工程师标准>>> 问题如下: 话说在平面内有一个任意的不规则的封闭多边形,另外在这个平面内还有一个点,问题:如何高效的判定这个点是在这个多边形内部还是外部?补充&#xff1a…

Cortex-A7 MPCore 架构详细介绍(九种运行模式、内核寄存器组R0~R15,有特定的名字和功能)

目录0.ARM架构的历史简介1.Cortex-A7 MPCore(即多核) 简介2.Cortex-A 处理器九种运行模式3.Cortex-A 寄存器组(内核寄存器)3.1通用寄存器3.1.1未备份寄存器(R0~R7)3.1.2备份寄存器(R8~R12、SP指针R13、备份R14也叫LR)3.1.3程序计数器R15(PC)3.2程序状态寄…

Java开发中遇到具有挑战的事_Java并发编程的挑战:遇到的问题及如何解决

并发编程的目的是为了让程序运行得更快,但是,并不是启动更多的线程就能让程序最大限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行得更快,会面临非常多的挑战,比如上下文切换的问题、死锁的问…