近年来,随着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

最新文章

  1. 高效率去掉js数组中重复项
  2. map(callback)
  3. Intellij IDEA +MAVEN+Jetty实现SpringMVC简单查询功能
  4. Java线程之CompletionService
  5. CCSprite的使用方法大全
  6. Java中的BufferedReader 的readLine方法
  7. Android开发框架androidannotations的使用
  8. 4Sum 解答
  9. HDU 1584 蜘蛛牌
  10. shell基础学习系列(一)
  11. Java下使用Apache POI生成具有三级联动下拉列表的Excel文档
  12. HTML5+CSS3入门学习(一)——HTML5
  13. 【Teradata SQL】行转列函数TDStats.udfConcat
  14. 编写高质量的Python代码系列(二)之函数
  15. html-webpack-plugin插件使用时参数配置
  16. 吴裕雄 python 机器学习——岭回归
  17. Java面试知识点之线程篇(三)
  18. CSP里的xss
  19. 课程三(Structuring Machine Learning Projects),第一周(ML strategy(1)) —— 0.Learning Goals
  20. LCA树链剖分

热门文章

  1. C#学习-多态
  2. 设计模式学习之责任链模式(Chain of Responsibility,行为型模式)(22)
  3. Redis数据结构之quicklist
  4. Python与R的区别和联系
  5. Java_图片切片
  6. HTML5:离线存储
  7. CSS3_天猫商品墙
  8. (84)Wangdao.com第十八天_JavaScript Promise 对象
  9. [LeetCode] Card Flipping Game 翻卡片游戏
  10. word/pdf互转的链接