聊聊 2018 年後端技術趨勢

今天太忙,少寫一點,後面再補充。編程

異步模式

Go 語言愈來愈熱門,不少大型互聯網公司後端正在轉向 GO 。Java 圈知名的服務化框架 Dubbo 也宣佈轉型異步模式。這是一個大趨勢,異步模式已經被市場驗證和承認。後端

在 Web 服務器選擇上,幾年前大部分人就開始選擇異步非阻塞的 Nginx,而不是同步阻塞的 Apache。就是由於 Nginx 這樣的異步程序,它的適應性更好、併發能力更強。如今在後端業務開發編程方面,技術力量強的團隊已經開始將技術棧從同步模式切換爲異步了。服務器

同步阻塞模式存在較多缺陷,併發能力弱、適應性差、慢速請求致使服務不可用。如:後臺接口中調用第三方 API 的場景,同步模式效果極差。過去那些使用 Java、PHP、C++、Python、Ruby 語言開發的同步阻塞模式框架,用的人愈來愈少。swoole

Node.js

雖然 Node.js 也很熱門,很流行,但仍然不多見到企業將 Node.js 做爲公司後端方面的主要編程語言。C++、Java、PHP、Python 語言一樣也有一些相似的方案,包括 Swoole-1.0 也是基於相似於 Node.js 的異步回調模式。併發

本質緣由是異步回調的技術方案,以及在它之上所作的一些優化方案,包括 Promise、Future、Yield/Generator、Async/Await 等,改變了程序開發的風格和習慣。若是要使用這些技術,那麼工程師須要額外學習這些關鍵詞和函數的使用方法。框架

使用這些技術方案是沒法兼容已有程序的。能夠說研發成本巨大,難以平滑過渡。影響了異步回調技術棧的普及。這種編程模式很難讓全部人都接受。異步

協程

而協程模式,兼顧了同步阻塞的可維護性和異步非阻塞的高併發能力。將會成爲將來後端開發領域的主流技術方案。編程語言

最重要的,協程模式只須要對已有項目代碼進行少許調整就能夠運行起來,甚至能夠徹底兼容老項目。只須要框架層進行兼容便可。這使得團隊能夠平滑過渡。函數

使用協程模式,開發者徹底不須要學習額外的關鍵詞和函數用法。編碼風格與同步模式下是徹底一致的。高併發

各類協程技術裏,GO 是最耀眼的那一個。協程、通道、靜態語言、性能、富編譯、標準庫豐富、生態完整、Google 等,優點太多了。GO 語言,我的認爲是目前全部編程語言中,最值得學習的

Swoole 2.x 讓 PHP 這門 20多年曆史的老牌後臺編程語言也能有協程的能力。相比 Go 這樣的技術,PHP + Swoole 的技術棧,更適合快速開發、快速迭代、業務驅動的場景。畢竟動態語言比靜態語言仍是要更加靈活、開發效率更高。而 Go 更適合編寫系統級軟件、核心業務。

2018 年我重構了 swoole framework 這個很老的項目,底層支持 Swoole 2.x 協程模式。主要緣由是車輪公司內部有不少項目基於這個框架,尤爲是服務層所有用了 swoole framework。咱們但願業務代碼一行不改,能夠一鍵切換爲協程模式。理論上其餘的同步阻塞 PHP 框架,如 Laravel 、Yii ,均可以實現只修改底層兼容 Swoole 2.x 協程,實現項目代碼無縫切換協程模式。

使用協程後,整個系統的性能、併發能力、穩定性有了巨大提高。過去,線上常常出現一個慢請求致使整個服務器卡住的問題不存在了。

PHP & Swoole

雖然 Swoole 2.0 只有不到兩年的歷史,相比 Go 語言 10 年的耕耘,還有很長一段路要走。但相比 GO 這樣的靜態語言,PHP + Swoole 仍是有不少優點的,PHP 更加簡單易用,PHP 是動態語言,使用起來更加靈活。

固然,若是是新項目仍是推薦使用 Swoft 這個專門爲 Swoole 2.x 的框架,它的歷史包袱更少,所以穩定性更好。

如今有了 Swoole 2.0 協程,咱們對 PHP 的將來仍然充滿信心。

相關文章
相關標籤/搜索