中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

五個最佳案例帶你解讀Node.js的前后之道

發布時間:2020-05-30 23:18:00 來源:網絡 閱讀:1139 作者:個推 欄目:web開發

Node.js 是什么?
Node.js采用C++語言編寫而成,瀏覽器內核V8做為執行引擎;Node不是JS應用、而是一個Javascript的運行環境。Node保留了前端瀏覽器js的接口,沒有改寫語言本身的任何特性,依舊基于作用域和原型鏈。

Node.js 是一個為實時Web(Real-time Web)應用開發而誕生的平臺,它從誕生之初就充分考慮了在實時響應、超大規模數據要求下架構的可擴展性。這使得它摒棄了傳統平臺依靠多線程來實現高并發的設計思路,而采用了單線程、異步式I/O、事件驅動式的程序設計模型。這些特性不僅帶來了巨大的性能提升,還減少了多線程程序設計的復雜性,進而提高了開發效率。

Node.js的特點
1、一個Javascript運行環境
2、依賴于Chrome V8引擎進行代碼解釋
3、事件驅動
4、非阻塞I/O
5、輕量、可伸縮,適于實時數據交互應用
6、單進程,單線程

Node.js能做什么?
1、具有復雜邏輯的網站
2、基于社交網絡的大規模 Web 應用;
3、Web Socket 服務器(頁游,web IM);
4、TCP/UDP 套接字應用程序;
5、命令行工具;
6、交互式終端程序;
7、帶有圖形用戶界面的本地應用程序;
8、單元測試工具;
9、客戶端 JavaScript 編譯器

Node.js架構
五個最佳案例帶你解讀Node.js的前后之道
事件循環
五個最佳案例帶你解讀Node.js的前后之道
NodeJs執行模型: 單線程Event Loop
當應用請求發生時,首先進入V8引擎,然后進入到事件隊列,可以理解為他們在不斷地在循環,看是否有任務,產生任務就去執行。上圖是單線程模型。

NPM
后端在開發其他語言時,都有一些模塊的概念或者第三方提供了很實用的小模塊。同樣,Node.js當時出來的時候也有這樣一個倉庫。這個倉庫就是專門用來管理中國開發者的一個貢獻的模塊,而且發展非常的快。同樣,前端有一些腳手件,在服務器這邊運行的有debug,express,express-session,thrift,依托這個插件做thrift相關的事情,images其他的一些你想的到的插件,都是可以從它找到。

架構體系
五個最佳案例帶你解讀Node.js的前后之道
上圖是個推部分WEB平臺的架構體系,個推有一套云組進資源,通過Nginx作為一個分發,Node可以有多個節點,通過session進入。每一個Node都有模式,相信大家在部署的時候肯定不可能部署一個節點,部署一個節點,否則這個節點掛了就是掛了。
Thrift使用
1、定義接口
五個最佳案例帶你解讀Node.js的前后之道
2、編譯,生成對應的包,并上傳到相應的庫中
3、在Node中使用,如下:
五個最佳案例帶你解讀Node.js的前后之道
注意:這里有個坑
thrift 中有個基本類型叫做 double (64位浮點數)。當定義成這個類型時,數據從 java 過來到 Node 會變成全是0。

解決方案
定義成 string 類型,之后特事特辦,如必要則在 Node處再轉成浮點數,或者直接由頁面端處理。

IP負載(IP Load Balance)

負載均衡
分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。
原生中其并沒有負載均衡的機制,但我們可以采用動態代理的設計模式,基于thrift client,利用JS的原型鏈來實現。
均衡的方式有很多種,我們使用輪詢機制來實現訪問多個Java節點。

session管理
Node本身并無session機制,我們可以使用express-session包來實現,同時通過redis來存儲session。

連接池
傳統讀取數據庫方式:
五個最佳案例帶你解讀Node.js的前后之道
連接池需要做什么?
1、連接預熱 (啟動時自動打開n個連接以供使用)
2、使用 例如 輪轉法 均勻分發 連接請求
3、當池中的連接即將耗盡得時候動態產生新的連接
4、當池中的連接一段時間沒有被調用的時候,自動釋放連接
5、自動丟棄 已經壞掉的 連接
6、系統關閉的時自動釋放所有連接
基于此,我們也可以借助幾個插件包(如generic-pool(node-pool)、node-thrift-pool,當然,如果你直接Node連接的DB,基本上那個包里面也會支持連接池)在Node使用連接池。

使用示例
五個最佳案例帶你解讀Node.js的前后之道
利用Node可以做的事情

1、做一些灰色地帶的事情
利用Node可以做一些灰色地帶的事情,因為它擁有前端的優點,可以異步,發起異步請求。給開發者帶來很大的好處。不過,你需要管理好你的類型。如果說類型自己如果沒有管理好就是會出現一些問題。同時它也可以做后端的一些事情。比如說連接池等等。

2、模塊更加分明

3、可前可后便于分工
從瀏覽器過來的數據,通過Node把這一層數據轉化成java需要的一種數據結構,就可以使得分工更加明晰。

4、共用表單輸入驗證
如果你在寫系統的時候,出于安全考慮,無論瀏覽器這邊做了多少驗證,你都要做輸入驗證。傳統模式下是需要java同學寫一份,前端同學寫一份。因為Node跟java都是部署在服務器集群或者一個區域,你可以相信這兩邊之間一個數據。來自瀏覽器的驗證,就可以共用表單輸入驗證,達到節省成本的目的。

以上內容來自個推web服務首席架構師姜季廷在3月12日SegmentFault D-Day 北京:后端的演講整理而成。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

报价| 资阳市| 延长县| 百色市| 威信县| 桂阳县| 南汇区| 七台河市| 邮箱| 孝昌县| 怀柔区| 南京市| 巴塘县| 石楼县| 新乡市| 屏边| 邢台县| 连平县| 日喀则市| 都安| 云霄县| 商水县| 新邵县| 琼结县| 高尔夫| SHOW| 德钦县| 错那县| 涞源县| 延庆县| 镇远县| 日照市| 太仓市| 娱乐| 中方县| 高台县| 阳春市| 云和县| 介休市| 神农架林区| 娄底市|