• 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

  • 相关阅读:
    [ZJOI2007]时态同步 题解
    Xposed 在android 6.0上报couldn't load class,找不到xposed_init中配置的入口类
    微信小程序http 400问题
    在Mac上 python中使用tesseract OCR (Pytesser) 识别图片中的文字
    微信小游戏跳一跳简单手动外挂(基于adb 和 python)
    第一个微信小程序踩的几个小坑
    android studio/Intellij IDEA(MAC OSX)中android模拟器无法启动的一种原因
    【转载】word2vec原理推导与代码分析
    HTTP Get Post究竟有哪些区别
    初试kotlin:用Kotlin开发桌面/CommandLine 工具
  • 原文地址:https://www.cnblogs.com/danielWise/p/9910354.html
Copyright © 2020-2023  润新知