近年来,随着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出现啦,话不多说,先上图。

从图中可以看到,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

NodeMan介绍的更多相关文章

  1. NodeMan架构

    在上一篇文章中我们介绍了NodeMan的基本概念,介绍了这是一套利用NodeJs框架来管理Ubuntu服务器的解决方案,接下来我们会继续介绍关于这样一套解决方案更多细节的内容. 后台: 使用node作 ...

  2. CSS3 background-image背景图片相关介绍

    这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...

  3. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  4. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  5. Linux下服务器端开发流程及相关工具介绍(C++)

    去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...

  6. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  7. HTML DOM 介绍

    本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...

  8. HTML 事件(一) 事件的介绍

    本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ...

  9. HTML5 介绍

    本篇主要介绍HTML5规范的内容和页面上的架构变动. 目录 1. HTML5介绍 1.1 介绍 1.2 内容 1.3 浏览器支持情况 2. 创建HTML5页面 2.1 <!DOCTYPE> ...

随机推荐

  1. MATLAB读视频报错 Unable to initialize the video obtain properties (videoreader in Matlab)

    这个bug卡了半天,这里记录一下 Error using VideoReader/init (line ) Could not read file due to an unexpected error ...

  2. linux添加新磁盘

    先fdisk -l 看一下有哪些没有挂载的盘符. 然后将创建的文件夹与待挂载的盘符绑定,即:mount /dev/vdc /data

  3. Rank of Tetris 拓扑排序+并查集

    Problem Description 自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子: ...

  4. pycharm中replace的应用

    name = "sucanji" v = name.replace("s","L") print(v) #输出结果就是把sucanji中的s ...

  5. Imcash解读:哪些行业的“饭碗”最容易受区块链的影响?

    或许,你已经听到很多人说,区块链是本世纪一项伟大的革命性技术,在未来“前途无量”. 但是,很少有人能真正接地气地举例说清楚:区块链到底怎么革命,革谁的命,怎么产生价值,将会颠覆哪些行业. 今天,我们就 ...

  6. Linux 安装 JDK 8

    1. step1: 下载最新的 Java Archive  # wget --no-cookies --no-check-certificate --header "Cookie: gpw_ ...

  7. Linux-父子进程的简单同步

    int fork() 功能:创建一个子进程 返回值:0-创建成功,-1-创建进程失败,>0-创建进程成功,返回返回子进程id int wait(int * status) 功能:将调用的进程挂起 ...

  8. 使用控制台对Redis执行增删改查命令

    使用控制台对Redis执行增删改查命令 在上一篇里,我们已经安装了redis.这一篇我们将一起来学习如何使用"控制台"管理Redis 首先肯定是打开一个控制台,在windows系统 ...

  9. Beta(6/7)

    鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...

  10. Struts2深入

    Struts2架构剖析 1.客户端向Servlet容器(如Tomcat)提交一个请求 2.请求经过一系列过滤器(如ActionContextCleanUp过滤器等) 3.核心控制器被调用,询问Acti ...