微服務與Node.js為什么會廣受喜愛?

rwgo5882 8年前發布 | 6K 次閱讀 Node.js 微服務 軟件架構

大多數項目開始時都是為了解決某一問題,比較簡單,后來逐漸發展,就變得越來越大,形成一個很大的單體結構,所有的新功能都會向這個單體中添加,就像滾雪球,越來越大

單體結構發展到一定程度之后,就會帶來一些問題,例如:

1. 擴展難,并且會造成資源浪費,因為當某個局部承不住壓力時,需要對整體進行擴展

2. 部署難,每次發布新功能,都需要重新部署整個項目,即使是一個很小的改動

3. 管理難,項目大,開發團隊多,互相有牽絆,影響效率

微服務

為了解決單體結構帶來的種種問題,很多公司開始嘗試新的架構方式,就是 微服務

在微服務架構中,以前的單體被打散成多個小塊兒,這些小塊兒一起對外提供服務,每個小塊兒可以使用不同的開發語言,開發者不再被限定在某個特定技術,可以自由的嘗試

如果塊兒的粒度設置得合適,一個小團隊用非常短的時間就可以寫完一個微服務,如果某個微服務的質量或者性能不夠好,也可以很快的使用其他技術重寫,降低了開發風險

各個微服務都單獨部署,哪個需要性能提升,就擴展哪個的資源,不再需要全體擴展,自然降低了企業的成本

Node.js 與 微服務是好搭檔

在擁抱微服務的團隊中,不管是大企業,還是新興的小公司,Node.js 都被廣泛使用

主要有3個因素:

1. 高效

Node.js 的包管理器 npm 擁有數量驚人的模塊,可以立即使用,節省大量的開發工作

Node.js 基于 JS,所以前端開發人員也很容易上手,整棧都使用同一個語言,前后端使用同樣的模塊,便節省了大量時間

2. 性能好

在創建高性能的實時應用時,Node.js  是非常好的方案,因為他的非阻塞,事件驅動I/O模型

GoDaddy公司是采用 Node.js 開發微服務的典型案例,他們給出了自己的性能數據:

使用 Node.js 結合微服務后,在和之前同樣的負載情況下,硬件資源只需要之前的10%

3. 開發者喜愛

Node.js 的用戶增長速度驚人,每年都翻一倍,npm 的流行度和成長速度都遠超其他語言的包管理器

值得注意的是,新一代的開發者尤其喜愛 Node.js,他們不喜歡使用靜態類型語言,例如 java,c#

在2015年,Node.js 得到了Linux基金會的長期支持

案例

  • PayPal

2013之前,PayPal是java技術棧的單體結構,2013初開始向 Node.js 微服務架構遷移

開始時從一個小點開始改造,沒有問題之后,再改更加重要的部分,同時還準備了一套java版本的應用作為回退方案,如果 Node.js 開發的應用出現問題,可以馬上進行切換,而結果非常成功,便放心進行大面積遷移了

遷移之后的效果:

build的速度快了2倍

代碼量降低33%

可以處理的QPS提高1倍

響應時間提升35%

頁面快了200ms

采用JS全棧開發后,效率提升顯著,對產品的從新思考、重新啟動、設計等等非常有幫助

  • Netflix

Netflix 也是2013開始的 Node.js 微服務改造,之前是一個巨大的單體,啟動一次需要40分鐘,完全無法高效快速的發展

后來網站改為單頁結構,采用了 Node.js,Node.js 有一個非常好的理念:一次編碼、到處運行,以前混合使用 java 和 js 時,好多東西得寫兩次,現在就簡單了

使用微服務后,每一塊兒都非常好管理,可以放到容器中,這樣,開發者在本機也可以運行,使本機和產品環境一致,非常有助于開發效率和質量

  • GoDaddy

GoDaddy 以前主要是使用 .net 開發,整體結構也是單體

經過多年的發展,發現 .net 并不適合,因為其沒有像 Node.js 那樣活躍的模塊社區,極大的依賴微軟發布的東西,完全不適合一個敏捷型公司

后來選擇 Node.js 是因為他的 build、單元測試、集成測試、應用部署 都非常容易

改造后的效果也非常好,例如當時有一個廣告帶來了1億的訪問量,很好的承受住了,每秒可處理1萬個請求,零宕機,他們的 Node.js 集群包含12臺服務器

通過微服務,實現了分布式無共享架構,結合持續集成,GoDaddy 可以在1分鐘之內完成產品發布

 

 

 

來自:http://mp.weixin.qq.com/s?__biz=MzA4Nzc4MjI4MQ==&mid=2652402202&idx=1&sn=d73910a225a419f474f63a4ced3ccfde&scene=0#wechat_redirect

 

 本文由用戶 rwgo5882 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!