摘要:現(xiàn)在在后端業(yè)務(wù)開發(fā)編程方面,技術(shù)力量強(qiáng)的團(tuán)隊(duì)已經(jīng)開始將技術(shù)棧從同步模式切換為異步了。使用這些技術(shù)方案是無法兼容已有程序的。影響了異步回調(diào)技術(shù)棧的普及。將會成為未來后端開發(fā)領(lǐng)域的主流技術(shù)方案。
今天太忙,少寫一點(diǎn),后面再補(bǔ)充。
異步模式Go 語言越來越熱門,很多大型互聯(lián)網(wǎng)公司后端正在轉(zhuǎn)向 GO 。Java 圈知名的服務(wù)化框架 Dubbo 也宣布轉(zhuǎn)型異步模式。這是一個大趨勢,異步模式已經(jīng)被市場驗(yàn)證和認(rèn)可。
在 Web 服務(wù)器選擇上,幾年前大部分人就開始選擇異步非阻塞的 Nginx,而不是同步阻塞的 Apache。就是因?yàn)?Nginx 這樣的異步程序,它的適應(yīng)性更好、并發(fā)能力更強(qiáng)?,F(xiàn)在在后端業(yè)務(wù)開發(fā)編程方面,技術(shù)力量強(qiáng)的團(tuán)隊(duì)已經(jīng)開始將技術(shù)棧從同步模式切換為異步了。
同步阻塞模式存在較多缺陷,并發(fā)能力弱、適應(yīng)性差、慢速請求導(dǎo)致服務(wù)不可用。如:后臺接口中調(diào)用第三方 API 的場景,同步模式效果極差。過去那些使用 Java、PHP、C++、Python、Ruby 語言開發(fā)的同步阻塞模式框架,用的人越來越少。
Node.js雖然 Node.js 也很熱門,很流行,但仍然很少見到企業(yè)將 Node.js 作為公司后端方面的主要編程語言。C++、Java、PHP、Python 語言同樣也有一些類似的方案,包括 Swoole-1.0 也是基于類似于 Node.js 的異步回調(diào)模式。
本質(zhì)原因是異步回調(diào)的技術(shù)方案,以及在它之上所做的一些優(yōu)化方案,包括 Promise、Future、Yield/Generator、Async/Await 等,改變了程序開發(fā)的風(fēng)格和習(xí)慣。如果要使用這些技術(shù),那么工程師需要額外學(xué)習(xí)這些關(guān)鍵詞和函數(shù)的使用方法。
使用這些技術(shù)方案是無法兼容已有程序的。可以說研發(fā)成本巨大,難以平滑過渡。影響了異步回調(diào)技術(shù)棧的普及。這種編程模式很難讓所有人都接受。
協(xié)程而協(xié)程模式,兼顧了同步阻塞的可維護(hù)性和異步非阻塞的高并發(fā)能力。將會成為未來后端開發(fā)領(lǐng)域的主流技術(shù)方案。
最重要的,協(xié)程模式只需要對已有項(xiàng)目代碼進(jìn)行少量調(diào)整就可以運(yùn)行起來,甚至可以完全兼容老項(xiàng)目。只需要框架層進(jìn)行兼容即可。這使得團(tuán)隊(duì)可以平滑過渡。
使用協(xié)程模式,開發(fā)者完全不需要學(xué)習(xí)額外的關(guān)鍵詞和函數(shù)用法。編碼風(fēng)格與同步模式下是完全一致的。
各種協(xié)程技術(shù)里,GO 是最耀眼的那一個。協(xié)程、通道、靜態(tài)語言、性能、富編譯、標(biāo)準(zhǔn)庫豐富、生態(tài)完整、Google 等,優(yōu)勢太多了。GO 語言,個人認(rèn)為是目前所有編程語言中,最值得學(xué)習(xí)的。
Swoole 2.x 讓 PHP 這門 20多年歷史的老牌后臺編程語言也能有協(xié)程的能力。相比 Go 這樣的技術(shù),PHP + Swoole 的技術(shù)棧,更適合快速開發(fā)、快速迭代、業(yè)務(wù)驅(qū)動的場景。畢竟動態(tài)語言比靜態(tài)語言還是要更加靈活、開發(fā)效率更高。而 Go 更適合編寫系統(tǒng)級軟件、核心業(yè)務(wù)。
2018 年我重構(gòu)了 swoole framework 這個很老的項(xiàng)目,底層支持 Swoole 2.x 協(xié)程模式。主要原因是車輪公司內(nèi)部有很多項(xiàng)目基于這個框架,尤其是服務(wù)層全部用了 swoole framework。我們希望業(yè)務(wù)代碼一行不改,可以一鍵切換為協(xié)程模式。理論上其他的同步阻塞 PHP 框架,如 Laravel 、Yii ,都可以實(shí)現(xiàn)只修改底層兼容 Swoole 2.x 協(xié)程,實(shí)現(xiàn)項(xiàng)目代碼無縫切換協(xié)程模式。
使用協(xié)程后,整個系統(tǒng)的性能、并發(fā)能力、穩(wěn)定性有了巨大提升。過去,線上經(jīng)常出現(xiàn)一個慢請求導(dǎo)致整個服務(wù)器卡住的問題不存在了。
PHP & Swoole雖然 Swoole 2.0 只有不到兩年的歷史,相比 Go 語言 10 年的耕耘,還有很長一段路要走。但相比 GO 這樣的靜態(tài)語言,PHP + Swoole 還是有很多優(yōu)勢的,PHP 更加簡單易用,PHP 是動態(tài)語言,使用起來更加靈活。
當(dāng)然,如果是新項(xiàng)目還是推薦使用 Swoft 這個專門為 Swoole 2.x 的框架,它的歷史包袱更少,因此穩(wěn)定性更好。
現(xiàn)在有了 Swoole 2.0 協(xié)程,我們對 PHP 的未來仍然充滿信心。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28149.html
摘要:什么是前后分離前后端分離并不是什么新鮮事,到處都是前后端分離的實(shí)踐。然而一些歷史項(xiàng)目在從一體化設(shè)計(jì)轉(zhuǎn)向前后端分離的架構(gòu)時,不可避免的會遇到各種各樣的問題。搞了一個前后分離,需要分離部署。 探究 :深入聊聊前后分離架構(gòu) 前后分離,一直是一個相當(dāng)泛泛的問題,前后分離到底好不好?沒有絕對的對,沒有絕對的錯,業(yè)界就這個問題已經(jīng)激烈的探討幾年了.出現(xiàn)討論的點(diǎn)在于:分離當(dāng)然是好的,但是以什么樣的服...
摘要:什么是前后分離前后端分離并不是什么新鮮事,到處都是前后端分離的實(shí)踐。然而一些歷史項(xiàng)目在從一體化設(shè)計(jì)轉(zhuǎn)向前后端分離的架構(gòu)時,不可避免的會遇到各種各樣的問題。搞了一個前后分離,需要分離部署。 探究 :深入聊聊前后分離架構(gòu) 前后分離,一直是一個相當(dāng)泛泛的問題,前后分離到底好不好?沒有絕對的對,沒有絕對的錯,業(yè)界就這個問題已經(jīng)激烈的探討幾年了.出現(xiàn)討論的點(diǎn)在于:分離當(dāng)然是好的,但是以什么樣的服...
摘要:什么是前后分離前后端分離并不是什么新鮮事,到處都是前后端分離的實(shí)踐。然而一些歷史項(xiàng)目在從一體化設(shè)計(jì)轉(zhuǎn)向前后端分離的架構(gòu)時,不可避免的會遇到各種各樣的問題。搞了一個前后分離,需要分離部署。 探究 :深入聊聊前后分離架構(gòu) 前后分離,一直是一個相當(dāng)泛泛的問題,前后分離到底好不好?沒有絕對的對,沒有絕對的錯,業(yè)界就這個問題已經(jīng)激烈的探討幾年了.出現(xiàn)討論的點(diǎn)在于:分離當(dāng)然是好的,但是以什么樣的服...
摘要:年,邊緣計(jì)算等和云計(jì)算緊密結(jié)合,重回技術(shù)路線。年后剛剛開工,就傳出了百度智能云和攜程簽約的消息,為年的云計(jì)算行業(yè)帶來了第一波地震。2017年,合規(guī)讓很多云計(jì)算企業(yè)如履薄冰,價格戰(zhàn)越燒越旺。2018年,AI、IoT、邊緣計(jì)算等和云計(jì)算緊密結(jié)合,重回技術(shù)路線。2019年,云計(jì)算會走向何方,想必很多人在等一個答案。年后剛剛開工,就傳出了百度智能云和攜程簽約的消息,為2019年的云計(jì)算行業(yè)帶來了第一...
摘要:第五家公司沉淀期恰好這時候機(jī)會又來了現(xiàn)在在職這家公司的部門經(jīng)理在我前同事前公司同事離職后來了現(xiàn)在這個公司的推薦下和我溝通了一下。 ? ? ? 目錄 前言 一? ?大學(xué)階段 二? ? ?實(shí)習(xí)階段 三? ? ?工作階段 1.第一家公司-學(xué)習(xí)期 ?2.第二家公司-轉(zhuǎn)型期 ?2.第三家公司-質(zhì)變期 ...
閱讀 1363·2021-09-22 15:09
閱讀 2694·2021-08-20 09:38
閱讀 2424·2021-08-03 14:03
閱讀 886·2019-08-30 15:55
閱讀 3386·2019-08-30 12:59
閱讀 3563·2019-08-26 13:48
閱讀 1901·2019-08-26 11:40
閱讀 685·2019-08-26 10:30