新聞中心
如何快速實(shí)現(xiàn)鯤鵬彈性云服務(wù)器的Node.js部署和高可用性?
作者:王老師 2020-04-20 17:46:59
云計(jì)算 研讀Node.js 使用報(bào)告,發(fā)現(xiàn) Node.js 的使用有許多的成長,而且,五年前的瀏覽器環(huán)境和現(xiàn)在的Node環(huán)境全然不同。在云時(shí)代,越來越多的語言創(chuàng)造了更多可能,也讓開發(fā)變得更加便捷。

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的大洼網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
作者簡介:知乎大V“王老師(化名)”,中國科學(xué)院計(jì)算技術(shù)研究所計(jì)算機(jī)博士,主要進(jìn)行遷移學(xué)習(xí)、機(jī)器學(xué)習(xí)方面的算法與應(yīng)用研究。畢業(yè)后加入微軟亞洲研究院,擔(dān)任研究員職務(wù)。
“Node 開發(fā)者容易面臨的前三大困惑分別是異步編程、事件驅(qū)動以及 Debug。同時(shí),文檔是大家最期待的資源,新人對視頻教程和免費(fèi)在線課程的呼聲最高?!边@份《2020 年 Node.js 開發(fā)者調(diào)查報(bào)告》給出的信息,也正是當(dāng)下很多開發(fā)者心中的疑惑。如何學(xué)習(xí)和進(jìn)階Node.js?如何讓自己寫的代碼順滑無bug?如何才能找到易用和高可用的平臺呢?今天我來提點(diǎn)自己的拙見,看完覺得有用的老鐵希望直接三連(球球你們不要”下次一定“)。
JavaScript相信大家都不陌生,尤其是對于前端工程師而言,更是必備技能。傳統(tǒng)意義上的 JavaScript 是運(yùn)行在瀏覽器上的腳本語言。而Node.js 是一個運(yùn)行在服務(wù)端的框架,它的底層使用了 V8 引擎。我們知道 Apache + PHP 以及 Java 的 Servlet 都可以用來開發(fā)動態(tài)網(wǎng)頁,Node.js 的作用與他們類似,只不過是使用 JavaScript 來開發(fā)。他提供了底層服務(wù)器功能環(huán)境,包括二進(jìn)制數(shù)據(jù)操作、文件系統(tǒng) I/O、數(shù)據(jù)庫訪問、網(wǎng)絡(luò)訪問等。它的特性使其在現(xiàn)存的多種成熟服務(wù)器語言中脫穎而出。
同樣聲名鵲起的還有華為云。近年來,華為云已經(jīng)成為市場上的一股不容小覷的力量。尤其是前段時(shí)間,華為云鯤鵬生態(tài)帶著鋪天蓋地的宣傳橫空出現(xiàn),對其的評論的風(fēng)向也是花樣繁多,那么華為云鯤鵬彈性云服務(wù)器的表現(xiàn)究竟如何呢?本文將會帶大家親自感受一下在華為云鯤鵬彈性云服務(wù)器的 CentOS 系統(tǒng)上安裝、部署、測試 Node.js 項(xiàng)目,以及其高可用性的探索。
話不多說,我們走起。
Node.js部署環(huán)境配置全流程
首先,輸入以下命令”LANG=en_us.UTF-8 ssh root@EIP“登陸華為云,需要使用華為云服務(wù)器 ECS 的公網(wǎng) IP 替換命令中的 EIP
一般本地服務(wù)器時(shí)可以直接獲取公網(wǎng)IP,那么在華為云鯤鵬彈性云服務(wù)器,如何獲取公網(wǎng) IP 呢?而在云服務(wù)器中,彈性公網(wǎng) IP 地址則可以通過點(diǎn)擊“控制臺”->“服務(wù)列表”->“計(jì)算”->“彈性云服務(wù)器 ECS”進(jìn)入服務(wù)器列表,進(jìn)行查看并復(fù)制。
在登陸時(shí)需要注意的是,輸入密碼的時(shí)候終端是不會有展示的,所以一定要確保密碼是正確的。
登陸成功后顯示的界面如下。
然后就可以下載 node.js 安裝包了,執(zhí)行下載命令
解壓文件
為 node 和 npm 建立軟連接,建立完軟連接后可以直接查看 node 和 npm 的版本,出現(xiàn)下圖即表示安裝成功。
使用代碼如下: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
其實(shí)到這里Node.js服務(wù)器環(huán)境就已經(jīng)部署完畢了,可以直接運(yùn)行項(xiàng)目代碼 。但如果服務(wù)器上運(yùn)行多個項(xiàng)目時(shí),如果只安裝一個全局的node.js版本,則在升級時(shí)可能會遇到很多問題。所以我們需要使用 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安裝完畢后,就可以在服務(wù)器上運(yùn)行腳本了。為了簡化流程,我選擇運(yùn)行一個簡單的腳本,利用node起一個服務(wù)器,部署在3000端口上。
服務(wù)器啟動后,要想外網(wǎng)能夠訪問還需要再控制臺配置下安全組規(guī)則。
到這里node.js的部署環(huán)境配置實(shí)測就已經(jīng)結(jié)束了。來展示一下我的成品。
這次比較不按套路出牌,沒有“hello world”
從前端語言到運(yùn)維實(shí)踐
在此次實(shí)踐中,我們可以簡單點(diǎn)評一下大鯤鵬帶給我的直觀的感知。首先,它對于新用戶的友好度是很高的,以Node.js的部署環(huán)境配置來看,云端實(shí)驗(yàn)室中的鯤鵬實(shí)驗(yàn)中配置了相關(guān)的實(shí)驗(yàn)和ABC級別的指導(dǎo)教程,用戶可以根據(jù)指導(dǎo)一步步實(shí)現(xiàn)環(huán)境配置,即便是小白程序員也能輕松上手;代碼一鍵復(fù)制的功能對于并不熟悉linux命令的開發(fā)者而言也算是細(xì)致入微了。
隨著競爭的加速,對于前后端的程序員都需要了解一些運(yùn)維部署的知識,鯤鵬學(xué)院則提供了這樣一個方便大家學(xué)習(xí)的平臺。在這上面你能方便的獲得小白開發(fā)者、鯤鵬開發(fā)者的相關(guān)課程,并且在完成了各類課程的學(xué)習(xí)之后,可以通過各類微認(rèn)證和職業(yè)認(rèn)證,來檢驗(yàn)自身的學(xué)習(xí)成果,并且還能通過官方認(rèn)證還能獲取就業(yè)優(yōu)先推薦機(jī)會,實(shí)用性這里必須加粗標(biāo)紅。
對于企業(yè)來說,把網(wǎng)站部署在云端能夠減少大量的運(yùn)維負(fù)擔(dān),充分利用華為云的基礎(chǔ)生態(tài)和平臺能力,可以減少建站部署的復(fù)雜程度,解放程序員雙手,讓大家不用禿頭改代碼收獲幸福人生;降低程序員和產(chǎn)品經(jīng)理的掐架頻率。
隨著網(wǎng)站用戶訪問量增大,系統(tǒng)服務(wù)很容易掛掉。例如微博突發(fā)熱搜,淘寶的雙十一等關(guān)鍵節(jié)點(diǎn)正是考驗(yàn)我們服務(wù)器能力的時(shí)候。很多大公司都會自研彈性負(fù)載均衡系統(tǒng),但是管理兩臺機(jī)器的復(fù)雜程度不是管理一臺機(jī)器的兩倍,甚至是8倍、10倍。這其中需要考慮防火墻、抗DDoS攻擊、監(jiān)控報(bào)警、日志打點(diǎn)、數(shù)據(jù)同步等一系列問題,其實(shí)是一個很復(fù)雜的事情。因此,對于更多的企業(yè)站點(diǎn)使用云服務(wù)廠商提供的彈性負(fù)載均衡系統(tǒng)會更加的簡單便捷,節(jié)省成本。
基于ELB和AS服務(wù)的高可用性解析
隨著網(wǎng)站用戶訪問量增大,系統(tǒng)服務(wù)很容易掛掉。例如微博熱門事件,淘寶的雙十一等關(guān)鍵節(jié)點(diǎn)正是考驗(yàn)我們服務(wù)器能力的時(shí)候。很多大公司都會自研彈性負(fù)載均衡系統(tǒng),但是管理兩臺機(jī)器的復(fù)雜程度不是管理一臺機(jī)器的兩倍,甚至是8倍、10倍。這其中需要考慮防火墻、抗DDoS攻擊、監(jiān)控報(bào)警、日志打點(diǎn)、數(shù)據(jù)同步等一系列問題,其實(shí)是一個很復(fù)雜的事情。所以,對于更多的企業(yè)站點(diǎn)使用云服務(wù)廠商提供的彈性負(fù)載均衡系統(tǒng)會更加的簡單便捷,節(jié)省成本。
首先了解什么是高可用性,高可用性是系統(tǒng)一種特征或者指標(biāo),通常是指提供一定性能上的服務(wù)運(yùn)行時(shí)間,高于平均正常時(shí)間段。反之,則消除系統(tǒng)服務(wù)不可用的時(shí)間。衡量系統(tǒng)是否滿足高可用,就是當(dāng)一臺或者多臺服務(wù)器宕機(jī)的時(shí)候,系統(tǒng)整體和服務(wù)依然正常可用。
舉個例子,一些知名的網(wǎng)站保證 4 個 9 以上的可用性,也就是可用性超過 99.99%。那 0.01% 就是所謂故障時(shí)間的百分比。比如一些金融和電商網(wǎng)站都會對這些指標(biāo)有嚴(yán)格的要求。
彈性伸縮服務(wù)能夠在秒殺、搶購等流量激增的情況下能夠確保服務(wù)器能夠動態(tài)擴(kuò)容,滿足客戶的良好體驗(yàn)。比如下單服務(wù),當(dāng)流量如潮水般涌過來的時(shí)候,ELB會根據(jù)算法動態(tài)的分配服務(wù)器資源,同時(shí)結(jié)合AS服務(wù)動態(tài)擴(kuò)容服務(wù)器資源。
負(fù)載均衡是分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一。一般通過負(fù)載均衡,解決分布式系統(tǒng)的大流量、高并發(fā)和高可用的問題。
那么在華為云鯤鵬彈性云服務(wù)器中,是如何保持高可用性的呢?其大體流程如下圖所示:
1. 流量調(diào)度。ELB通過監(jiān)聽器檢查連接請求,跟進(jìn)調(diào)度算法定義的轉(zhuǎn)發(fā)策略將請求流量分發(fā)至后端服務(wù)器,起到了交通指揮官的作用,但是他更加的智能。
2. 健康檢查。判斷后端服務(wù)器的業(yè)務(wù)可用性,確保將請求發(fā)送到健康的的ECS上。如果發(fā)現(xiàn)服務(wù)有問題也會進(jìn)行及時(shí)摘除。
3. 會話保持。將一段時(shí)間內(nèi)來自同一用戶的請求轉(zhuǎn)發(fā)到相同的后端服務(wù)器,保障用戶訪問的連續(xù)性。
4. 彈性伸縮??梢愿鶕?jù)訪問量自動擴(kuò)展,保障業(yè)務(wù)靈活可用。例如上圖中提到的利用定時(shí)/周期策略觸發(fā)伸縮,當(dāng)cpu/內(nèi)存/入網(wǎng)流量等監(jiān)控指標(biāo)達(dá)到警告閥門也會觸發(fā)伸縮。
搭產(chǎn)業(yè)順風(fēng)車,走開發(fā)快速道
開發(fā)產(chǎn)業(yè)的一個典型特征就是活到老、學(xué)到老,五年前的JavaScript和現(xiàn)在相比堪稱天壤之別。研讀Node.js 使用報(bào)告,發(fā)現(xiàn) Node.js 的使用有許多的成長,而且,五年前的瀏覽器環(huán)境和現(xiàn)在的Node環(huán)境全然不同。在云時(shí)代,越來越多的語言創(chuàng)造了更多可能,也讓開發(fā)變得更加便捷。就像此次測試中,基于JavaScript、Python、Java等解釋型語言開發(fā)的應(yīng)用程序,其與CPU架構(gòu)并無相關(guān),因此將這類應(yīng)用程序移植到華為云鯤鵬彈性云服務(wù)器上之后,無需修改和重新編譯,都可以按照與x86一致的方式部署和運(yùn)行應(yīng)用程序即可,對開發(fā)者的幫助是顯而易見的。
語言的升級帶來了便捷,也帶來了一些新的趨勢,越來越多企業(yè)將主體業(yè)務(wù)放到云端,越來越多的前端工程師關(guān)心并參與到后端和全棧的工作中去。開發(fā)需求升級,各類開發(fā)者社區(qū)也便跟著升級,而華為云鯤鵬社區(qū)便是一個這樣的平臺,其能夠提供的技術(shù)能力不僅能夠解決企業(yè)業(yè)務(wù)需求,還能快速賦能開發(fā)者,實(shí)現(xiàn)快速成長。開發(fā)者能方便的找到適合自己能力的相關(guān)開發(fā)課程來進(jìn)行學(xué)習(xí),學(xué)會使用這些更加高效的產(chǎn)品,讓自己的價(jià)值不斷上升,避免出現(xiàn)網(wǎng)傳“35歲被扼頸”的窘迫局面。
更為可觀的是,前端工程師遠(yuǎn)非云計(jì)算浪潮中最大的受益者。合理使用云服務(wù)器帶來的ELB、AS等能力,能夠讓運(yùn)維工程師從繁雜的工作中解脫出來,專注于系統(tǒng)的優(yōu)化。目前,包括華為云在內(nèi)的很多云服務(wù)能夠提供大量的基礎(chǔ)功能和運(yùn)維工具,這些能力能夠讓自己脫離機(jī)械式編程工作,而是在不斷的探索中發(fā)現(xiàn)更多高效、實(shí)用的工具,基于新的技術(shù)環(huán)境上實(shí)現(xiàn)適配性升級,避免頻繁的重復(fù)造輪子,而是搭乘軟件行業(yè)的順風(fēng)車,走上真正的開發(fā)快速道。
鯤鵬開發(fā)者系列課程傳送門在此,良心知識不付費(fèi),參與回帖互動還有獎品拿,吐槽建議都闊以: http://suo.im/5t3Vgt
網(wǎng)頁名稱:如何快速實(shí)現(xiàn)鯤鵬彈性云服務(wù)器的Node.js部署和高可用性?
分享地址:http://www.5511xx.com/article/dpesioj.html


咨詢
建站咨詢
