“Node 开发者容易面临的前三大困惑分别是异步编程、事件驱动以及 Debug。同时,文档是大家最期待的资源,新人对视频教程和免费在线课程的呼声最高。”这份《2020 年 Node.js 开发者调查报告》给出的信息,也正是当下很多开发者心中的疑惑。如何学习和进阶Node.js?如何让自己写的代码顺滑无bug?如何才能找到易用和高可用的平台呢?今天我来提点自己的拙见,看完觉得有用的老铁希望直接三连(球球你们不要”下次一定“)。

JavaScript相信大家都不陌生,尤其是对于前端工程师而言,更是必备技能。传统意义上的 JavaScript 是运行在浏览器上的脚本语言。而Node.js 是一个运行在服务端的框架,它的底层使用了 V8 引擎。我们知道 Apache + PHP 以及 Java 的 Servlet 都可以用来开发动态网页,Node.js 的作用与他们类似,只不过是使用 JavaScript 来开发。他提供了底层服务器功能环境,包括二进制数据操作、文件系统 I/O、数据库访问、网络访问等。它独一无二的特性使其在现存的多种成熟服务器语言中脱颖而出。

同样声名鹊起的还有华为云。近年来,华为云已经成为市场上的一股不容小觑的力量。尤其是前段时间,华为云鲲鹏生态带着铺天盖地的宣传横空出现,对其的评论的风向也是花样繁多,那么华为云鲲鹏弹性云服务器的表现究竟如何呢?本文将会带大家亲自感受一下在华为云鲲鹏弹性云服务器的 CentOS 系统上安装、部署、测试 Node.js 项目,以及其高可用性的探索。

话不多说,我们走起。

Node.js部署环境配置全流程

首先,输入以下命令”LANG=en_us.UTF-8 ssh root@EIP“登陆华为云,需要使用华为云服务器 ECS 的公网 IP 替换命令中的 EIP

一般本地服务器时可以直接获取公网IP,那么在华为云鲲鹏弹性云服务器,如何获取公网 IP 呢?而在云服务器中,弹性公网 IP 地址则可以通过点击“控制台”->“服务列表”->“计算”->“弹性云服务器 ECS”进入服务器列表,进行查看并复制。

在登陆时需要注意的是,输入密码的时候终端是不会有展示的,所以一定要确保密码是正确的。

登陆成功后显示的界面如下。

然后就可以下载 node.js 安装包了,执行下载命令

解压文件

为 node 和 npm 建立软连接,建立完软连接后可以直接查看 node 和 npm 的版本,出现下图即表示安装成功。

使用代码如下:ln -s /root/node-v10.16.0-linux-arm64/bin/node /usr/local/bin/node

ln -s /root/node-v10.16.0-linux-arm64/bin/npm /usr/local/bin/npm

其实到这里Node.js服务器环境就已经部署完毕了,可以直接运行项目代码 。但如果服务器上运行多个项目时,如果只安装一个全局的node.js版本,则在升级时可能会遇到很多问题。所以我们需要使用 nvm 版本管理器安装 node.js 多版本,这并不是一个必须的步骤,但是依然值得尝试。

首先,下载 NVM 版本管理器,并在终端中输入以下命令

git clone https://codehub.devcloud.cn-north-4.huaweicloud.com/Demo01087/nvm.git ~/.nvm && cd ~/.nvm

然后激活 NVM 版本管理器,并将其追加到 profile 文件下

echo ". ~/.nvm/nvm.sh" >> /etc/profile

NVM修改完毕后,就可以安装不同版本的node了,例如下图安装12.3.0的node包

node安装完毕后,就可以在服务器上运行脚本了。为了简化流程,我选择运行一个简单的脚本,利用node起一个服务器,部署在3000端口上。

服务器启动后,要想外网能够访问还需要再控制台配置下安全组规则。

到这里node.js的部署环境配置实测就已经结束了。来展示一下我的成品。

从前端语言到运维实践

在此次实践中,我们可以简单点评一下大鲲鹏带给我的直观的感知。首先,它对于新用户的友好度是很高的,以Node.js的部署环境配置来看,鲲鹏实验室中配置了相关的实验和ABC级别的指导教程,用户可以根据指导一步步实现环境配置,即便是小白程序员也能轻松上手;代码一键复制的功能对于并不熟悉linux命令的开发者而言也算是细致入微了。

随着竞争的加速,对于前后端的程序员都需要了解一些运维部署的知识,鲲鹏学院则提供了这样一个方便大家学习的平台。在这上面你能方便的获得小白开发者、鲲鹏开发者和IoT开发者的相关课程,并且在完成了各类课程的学习之后,可以通过各类微认证和职业认证,来检验自身的学习成果,并且还能通过官方认证还能获取就业推荐机会,实用性这里必须加粗标红。

对于企业来说,把网站部署在云端能够减少大量的运维负担,充分利用华为云的基础生态和平台能力,可以减少建站部署的复杂程度,解放程序员双手,让大家不用秃头改代码收获幸福人生;降低程序员和产品经理的掐架频率。

随着网站用户访问量增大,系统服务很容易挂掉。例如微博突发热搜,淘宝的双十一等关键节点正是考验我们服务器能力的时候。很多大公司都会自研弹性负载均衡系统,但是管理两台机器的复杂程度不是管理一台机器的两倍,甚至是8倍、10倍。这其中需要考虑防火墙、抗DDoS攻击、监控报警、日志打点、数据同步等一系列问题,其实是一个很复杂的事情。因此,对于更多的企业站点使用云服务厂商提供的弹性负载均衡系统会更加的简单便捷,节省成本。

基于ELB和AS服务的高可用性解析

随着网站用户访问量增大,系统服务很容易挂掉。例如微博热门事件,淘宝的双十一等关键节点正是考验我们服务器能力的时候。很多大公司都会自研弹性负载均衡系统,但是管理两台机器的复杂程度不是管理一台机器的两倍,甚至是8倍、10倍。这其中需要考虑防火墙、抗DDoS攻击、监控报警、日志打点、数据同步等一系列问题,其实是一个很复杂的事情。所以,对于更多的企业站点使用云服务厂商提供的弹性负载均衡系统会更加的简单便捷,节省成本。

首先了解什么是高可用性,高可用性是系统一种特征或者指标,通常是指提供一定性能上的服务运行时间,高于平均正常时间段。反之,则消除系统服务不可用的时间。衡量系统是否满足高可用,就是当一台或者多台服务器宕机的时候,系统整体和服务依然正常可用。

举个例子,一些知名的网站保证 4 个 9 以上的可用性,也就是可用性超过 99.99%。那 0.01% 就是所谓故障时间的百分比。比如一些金融和电商网站都会对这些指标有严格的要求。

弹性伸缩服务能够在秒杀、抢购等流量激增的情况下能够确保服务器能够动态扩容,满足客户的良好体验。比如下单服务,当流量如潮水般涌过来的时候,ELB会根据算法动态的分配服务器资源,同时结合AS服务动态扩容服务器资源。

负载均衡是分布式系统架构设计中必须考虑的因素之一。一般通过负载均衡,解决分布式系统的大流量、高并发和高可用的问题。

那么在华为云鲲鹏弹性云服务器中,是如何保持高可用性的呢?其大体流程如下图所示:

  1. 流量调度。ELB通过监听器检查连接请求,跟进调度算法定义的转发策略将请求流量分发至后端服务器,起到了交通指挥官的作用,但是他更加的智能。
  2. 健康检查。判断后端服务器的业务可用性,确保将请求发送到健康的的ECS上。如果发现服务有问题也会进行及时摘除。
  3. 会话保持。将一段时间内来自同一用户的请求转发到相同的后端服务器,保障用户访问的连续性。
  4. 弹性伸缩。可以根据访问量自动扩展,保障业务灵活可用。例如上图中提到的利用定时/周期策略触发伸缩,当cpu/内存/入网流量等监控指标达到警告阀门也会触发伸缩。

搭产业顺风车,走开发快速道

开发产业的一个典型特征就是活到老、学到老,五年前的JavaScript和现在相比堪称天壤之别。研读Node.js 使用报告,发现 Node.js 的使用有许多的成长,而且,五年前的浏览器环境和现在的Node环境全然不同。在云时代,越来越多的语言创造了更多可能,也让开发变得更加便捷。就像此次测试中,基于JavaScript、Python、Java等解释型语言开发的应用程序,其与CPU架构并无相关,因此将这类应用程序移植到华为云鲲鹏弹性云服务器上之后,无需修改和重新编译,都可以按照与x86一致的方式部署和运行应用程序即可,对开发者的帮助是显而易见的。

语言的升级带来了便捷,也带来了一些新的趋势,越来越多企业将主体业务放到云端,越来越多的前端工程师关心并参与到后端和全栈的工作中去。开发需求升级,各类开发者社区也便跟着升级,而华为云鲲鹏社区便是一个这样的平台,其能够提供的技术能力不仅能够解决企业业务需求,还能快速赋能开发者,实现快速成长。开发者能方便的找到适合自己能力的相关开发课程来进行学习,学会使用这些更加高效的产品,让自己的价值不断上升,避免出现网传“35岁被扼颈”的窘迫局面。

更为可观的是,前端工程师远非云计算浪潮中最大的受益者。合理使用云服务器带来的ELB、AS等能力,能够让运维工程师从繁杂的工作中解脱出来,专注于系统的优化。目前,包括华为云在内的很多云服务能够提供大量的基础功能和运维工具,这些能力能够让自己脱离机械式编程工作,而是在不断的探索中发现更多高效、实用的工具,基于新的技术环境上实现适配性升级,避免频繁的重复造轮子,而是搭乘软件行业的顺风车,走上真正的开发快速道。

【华为云技术分享】如何快速实现鲲鹏弹性云服务器Node.js部署和高可用性?相关推荐

  1. 【华为云技术分享】快速理解spark-on-k8s中的external-shuffle-service

    [摘要] external-shuffle-service是Spark里面一个重要的特性,有了它后,executor可以在不同的stage阶段动态改变数量,大大提升集群资源利用率.但是这个特性当前在k ...

  2. 【华为云技术分享】云图说|第三方云厂商数据如何迁移至华为云OBS?真相在这里......

    很多客户有诉求将自己的业务从第三方云厂商迁移到华为云,发现自己的海量数据已经存放在了第三方云厂商的对象存储中,这部分数据怎么安全高效的迁移到华为云对象存储服务OBS呢? 别担心,一张云图说教会你将数据 ...

  3. 【华为云技术分享】【开发记录】Linux服务器维护常用命令(二)

    在Linux系统维护的过程中,随时可能有需要查看 CPU和内存的使用率.对于服务器的性能维护和分析,我们需要使用到一些基本的命令.会根据实际的应用需要,不断的更新内容. 一.查看系统整体的负载(top ...

  4. 【华为云技术分享】选择困难症必看!云服务器操作系统选择技巧+经验

    在购买云服务器时,会有一个必选的配置,就是操作系统的选择,如何选择操作系统?操作系统选择错了怎么办?这是不少用户会遇到的问题,今天我们就来教大家如何选择操作系统,以及操作系统选择错了,该怎么切换. W ...

  5. 【华为云技术分享】鲲鹏弹性云服务器GCC交叉编译环境搭建指南

    南七技校林书豪 1.简介 交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码.本指南主要内容为在非ARM架构服务器环境下搭建ARM的GCC编译环境,编译基于ARM架构的应用软件.交叉编译 ...

  6. 【华为云技术分享】三大前端技术(React,Vue,Angular)探密(下)

    [华为云技术分享]三大前端技术(React,Vue,Angular)探密(上) [Angular] Angular(通常被称为 "Angular 2+"或 "Angula ...

  7. 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 1

    前言 以互联网为代表的信息技术的迅猛发展对整个经济体系产生了巨大的影响.信息技术的发展一方面使知识的积累和传播更加迅速,知识爆炸性的增长:另一方面,使信息的获取变得越来越容易,信息交流的强度逐渐增加, ...

  8. 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 3

    4. 微观层面 4.1 个体动机 在开源软件发展之初, 商业组织的投入很少甚至没有, 完全是靠Richard Stallman 或者 linus Torvalds 这样的个人在努力推动开源软件艰难前行 ...

  9. 【华为云技术分享】为什么越来越多企业正在往ARM平台迁移?

    架构变迁 说到CPU架构,我们可能必然会提到CISC(复杂指令集,比如桌面端采用的X86系列)和RISC(精简指令集,比如移动端广泛采用的ARM系列).理论上,RISC 相比于 CISC(Intel ...

最新文章

  1. python装饰器-Python 装饰器
  2. 使用GPS实时记录运动路线
  3. smartforms句柄与以簇的方式存储数据。
  4. anasys hpc集群_这可能是最简单的并行方案,如何基于 AWS ParallelCluster 运行 ANSYS Fluent...
  5. mysql校对规则_MYSQL校对规则
  6. 在雅加达EE TCK中使用Arquillian的可能方法
  7. ORA-00119,ORA-00132 错误处理
  8. 十分钟掌握Google Guice(上)
  9. 产生指数分布的随机数 C语言实现
  10. Java大数据应用领域及就业方向
  11. rss对称网卡linux,dpdk-18.11网卡多队列RSS设置
  12. android 讯飞语音 提示组件未安装,迅雷看看提示“未安装组件”原因及其解决方法...
  13. CEPH HEALTH错误(二):HEALTH_WARN mds cluster is degraded
  14. 计算机图像相关应用研究,计算机图像处理技术的应用探讨.pdf
  15. Linux Base VIII 压缩和解压缩命令
  16. easyui treegrid php,Easyui 之 Treegrid 笔记
  17. 浅谈Md5+Salt加密
  18. DB2处理数据由原来六小时优化到二十分钟(一)
  19. 【UML】关系之依赖关系
  20. 优秀的flash站点收集(30+)

热门文章

  1. openChannelsActivity:fail getChannelsLiveInfo:fail
  2. keep sb updated_keep you update 和keep you updated哪个正确
  3. 0基础单片机入门知识:怎么使用数字万用表以及注意事项
  4. 全球及中国医疗听力计行业市场消费量调研及未来投资研究报告2022-2028年
  5. 二台电脑之间数据库文件进行备份
  6. 微信公众账号分类入门知识
  7. arduino步进电机程序库_Arduino入门教程15(步进电机驱动库的使用):Arduino Uno R3+ULN2003+步进电机 使用Stepper驱动库,控制步进电机转动角度...
  8. 【机器学习】LifeLong Learning(终身学习)介绍
  9. c语言程序的引言,C语言程序设计-第1章-引言
  10. 沃尔什函数 与 沃尔什-哈达玛变换