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,一经查实,立即删除!

相关文章

python 定义method_python进阶14:实例方法和类方法、types.MethodType()

1 实例方法一个实例的私有属性就是以__开头的属性,无法被外部访问,那这些属性定义有什么用?虽然私有属性无法从外部访问,但是,从类的内部是可以访问的。除了可以定义实例的属性外,还可以定义实例的方法。实…

#ifndef, #define, #endif的作用

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

CQRS架构

参考:https://www.cnblogs.com/shijingxiang/articles/5465495.html http://www.cnblogs.com/netfocus/p/4055346.html转载于:https://www.cnblogs.com/lshan/p/9910514.html

高性能的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 参考:静态变量与动态变量的定义与区别 作者&…

JS数字转中文

function number2Chinese(n) {if (!/^(0|[1-9]\d*)(\.\d)?$/.test(n)) return 数据非法;let unit 京亿万仟佰拾兆万仟佰拾亿仟佰拾万仟佰拾元角分,str ;n 00;let p n.indexOf(.);if (p > 0) n n.substring(0, p) n.substr(p 1, 2);unit unit.substr(unit.length - …

“捆绑”住用户,需要优秀的产品(经验分享)

捆绑,是一种野蛮的方式。若是主动的去被捆绑,意义反差就大了。用户容易被新奇的东西所吸引,会主动的去了解。若是符合自身需求性,会甘愿的成为其中的一员。这样的现象,是被捆绑体现。正如周鸿祎所言,做出好…

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…

【洛谷P2680】运输计划

题目链接 题目大意: 一棵\(n\)个点的带边权的数,给定\(m\)条树上两点间的路径,现在你可以让树上任意一条边的权值变为零, 问如何选边使得\(m\)条路径中边权和最大的路径的边权和最小 \(\mathcal{solution}\) 这是\(NOIP2015\)的\(…

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

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

webservice系统学习笔记9-使用契约优先的方式的一个服务端demo(隐式传Header信息)...

服务器端&#xff1a; 1、编写wsdl文件 <?xml version"1.0" encoding"UTF-8" standalone"no"?> <wsdl:definitions xmlns:soap"http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns"http://www.example.org/mywsdl/&qu…

java gzip 多个文件_Java Zip多文件压缩和 GZIP压缩

/*** 多文件压缩** author Administrator**/public class ZipCompress {public static void main(String args[]) {String[] filepaths { "D:\\zip1.txt", "D:\\zip2.txt" };try {FileOutputStream f new FileOutputStream("D://test.zip");//…

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

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

java 内存和实际内存_请问更改eclipse内存和更改jvm内存是一会事儿吗?

RSS列 表示&#xff0c; 程序占用了多少物理内存。 虚拟内存可以不用考虑&#xff0c;它并不占用实际物理内存。 (2). top 命令也可以 其中VIRT(或VSS)列 表示&#xff0c;程序占用了多少虚拟内存。 同 ps aux 中的 VSZ列 RES列 表示&#xff0c; 程序占用了多少物理内存。同 p…

thinkphp 编辑器kindeditor

首先&#xff0c;去官网下载最新版的kindeditor&#xff0c;然后把里面asp&#xff0c;jsp&#xff0c;net&#xff0c;example的全删除&#xff0c;然后改名为editor放进public&#xff08;最外层目录的public&#xff09;文件夹里面 在目录lib目录建立ORG文件夹&#xff08;个…

equation

equation 题目描述 有一棵n 个点的以 1 为根的树, 以及 n 个整数变量xi。树上 i 的父亲是 fi&#xff0c; 每条边(i,fi)有一个权值wi&#xff0c;表示一个方程 xi xfi wi&#xff0c;这 n-1个方程构成了一个方程组。 现在给出q 个操作&#xff0c;有两种类型: 1 u v s&#x…

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

目录Ubuntu开启FTP服务步骤&#xff1a;Ubuntu开启FTP服务步骤&#xff1a; 工作中Ubuntu和Windows之间互传文件&#xff0c;需要服务器端&#xff08;Ubuntu&#xff09;开启FTP服务&#xff0c;客户端&#xff08;Windows&#xff09;安装FileZilla。平时自己学习电脑安装虚拟…

舞伴配对问题java_舞伴配对问题

循环队列的应用——舞伴配对问题&#xff1a;在舞会上&#xff0c;男、女各自排成一队。舞会开始时&#xff0c;依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等&#xff0c;则较长的那一队中未配对者等待下一轮舞曲。假设初始男、女人数及性别已经固定&#xf…