目錄
非同步模式
Node.js
協程
PHP & Swoole
首頁 頭條 淺談2018年後端技術趨勢

淺談2018年後端技術趨勢

Jan 25, 2018 pm 02:06 PM
科技 趨勢

本文我們將主要和大家淺談一下2018年後端技術的趨勢,希望能幫助大家對後端技術有更清晰的思路。

非同步模式

Go 語言越來越熱門,許多大型網路公司後端正在轉向 GO 。 Java 圈知名的服務化框架 Dubbo 也宣布轉型非同步模式。這是一個大趨勢,非同步模式已經被市場驗證和認可。

在 Web 伺服器選擇上,幾年前大部分人就開始選擇非同步非阻塞的 Nginx,而不是同步阻塞的 Apache。就是因為像 Nginx 這樣的非同步程序,它的適應性更好、並發能力更強。現在在後端業務開發程式設計方面,技術力量強的團隊已經開始將技術堆疊從同步模式切換為非同步了。

同步阻塞模式有較多缺陷,並發能力弱、適應性差、慢速請求導致服務不可用。如:後台介面中呼叫第三方 API 的場景,同步模式效果極差。過去那些使用 Java、PHP、C++、Python、Ruby 語言開發的同步阻塞模式框架,使用的人越來越少。

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 的未來仍然充滿信心。

相關推薦:

成長中的程式設計師需要做的七件事

##PHP程式設計師的成長路線

淺聊php程式設計師的未來


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Stable Diffusion 3論文終於發布,架構細節大揭秘,對復現Sora有幫助? Stable Diffusion 3論文終於發布,架構細節大揭秘,對復現Sora有幫助? Mar 06, 2024 pm 05:34 PM

StableDiffusion3的论文终于来了!这个模型于两周前发布,采用了与Sora相同的DiT(DiffusionTransformer)架构,一经发布就引起了不小的轰动。与之前版本相比,StableDiffusion3生成的图质量有了显著提升,现在支持多主题提示,并且文字书写效果也得到了改善,不再出现乱码情况。StabilityAI指出,StableDiffusion3是一个系列模型,其参数量从800M到8B不等。这一参数范围意味着该模型可以在许多便携设备上直接运行,从而显著降低了使用AI

自動駕駛與軌跡預測看這篇就夠了! 自動駕駛與軌跡預測看這篇就夠了! Feb 28, 2024 pm 07:20 PM

軌跡預測在自動駕駛中承擔著重要的角色,自動駕駛軌跡預測是指透過分析車輛行駛過程中的各種數據,預測車輛未來的行駛軌跡。作為自動駕駛的核心模組,軌跡預測的品質對於下游的規劃控制至關重要。軌跡預測任務技術堆疊豐富,需熟悉自動駕駛動/靜態感知、高精地圖、車道線、神經網路架構(CNN&GNN&Transformer)技能等,入門難度很高!許多粉絲期望能夠盡快上手軌跡預測,少踩坑,今天就為大家盤點下軌跡預測常見的一些問題和入門學習方法!入門相關知識1.預習的論文有沒有切入順序? A:先看survey,p

DualBEV:大幅超越BEVFormer、BEVDet4D,開卷! DualBEV:大幅超越BEVFormer、BEVDet4D,開卷! Mar 21, 2024 pm 05:21 PM

這篇論文探討了在自動駕駛中,從不同視角(如透視圖和鳥瞰圖)準確檢測物體的問題,特別是如何有效地從透視圖(PV)到鳥瞰圖(BEV)空間轉換特徵,這一轉換是透過視覺轉換(VT)模組實施的。現有的方法大致分為兩種策略:2D到3D和3D到2D轉換。 2D到3D的方法透過預測深度機率來提升密集的2D特徵,但深度預測的固有不確定性,尤其是在遠處區域,可能會引入不準確性。而3D到2D的方法通常使用3D查詢來採樣2D特徵,並透過Transformer學習3D和2D特徵之間對應關係的注意力權重,這增加了計算和部署的

綜述!深度模型融合(LLM/基礎模型/聯邦學習/微調等) 綜述!深度模型融合(LLM/基礎模型/聯邦學習/微調等) Apr 18, 2024 pm 09:43 PM

23年9月國防科大、京東和北理工的論文「DeepModelFusion:ASurvey」。深度模型整合/合併是一種新興技術,它將多個深度學習模型的參數或預測合併為一個模型。它結合了不同模型的能力來彌補單一模型的偏差和錯誤,以獲得更好的性能。而大規模深度學習模型(例如LLM和基礎模型)上的深度模型整合面臨一些挑戰,包括高運算成本、高維度參數空間、不同異質模型之間的干擾等。本文將現有的深度模型融合方法分為四類:(1)“模式連接”,透過一條損失減少的路徑將權重空間中的解連接起來,以獲得更好的模型融合初

《我的世界》化身AI小鎮,NPC居民角色扮演如同真人 《我的世界》化身AI小鎮,NPC居民角色扮演如同真人 Jan 02, 2024 pm 06:25 PM

請留意,這個方塊人正在緊鎖眉頭,思考著面前幾位「不速之客」的身份。原來她陷入了危險境地,意識到這一點後,她迅速展開腦力搜索,尋找解決問題的策略。最終,她決定先逃離現場,然後儘快尋求幫助,並立即採取行動。同時,對面的人也在進行著與她相同的思考……在《我的世界》中出現了這樣一個場景,所有的角色都由人工智慧控制。他們每個人都有著獨特的身份設定,例如之前提到的女孩就是一個年僅17歲但聰明又勇敢的快遞員。他們擁有記憶和思考能力,在這個以《我的世界》為背景的小鎮中像人類一樣生活。驅動他們的,是一款全新的、

不只3D高斯!最新綜述一覽最先進的3D重建技術 不只3D高斯!最新綜述一覽最先進的3D重建技術 Jun 02, 2024 pm 06:57 PM

寫在前面&筆者的個人理解基於圖像的3D重建是一項具有挑戰性的任務,涉及從一組輸入圖像推斷目標或場景的3D形狀。基於學習的方法因其直接估計3D形狀的能力而受到關注。這篇綜述論文的重點是最先進的3D重建技術,包括產生新穎的、看不見的視野。概述了高斯飛濺方法的最新發展,包括輸入類型、模型結構、輸出表示和訓練策略。也討論了尚未解決的挑戰和未來的方向。鑑於該領域的快速進展以及增強3D重建方法的眾多機會,對演算法進行全面檢查似乎至關重要。因此,本研究對高斯散射的最新進展進行了全面的概述。 (大拇指往上滑

Redis:建構即時排行榜系統的關鍵技術 Redis:建構即時排行榜系統的關鍵技術 Nov 07, 2023 pm 03:58 PM

Redis是一個開源的高效能鍵值資料庫系統,因其快速讀寫速度、支援多種資料類型、豐富的資料結構等特點,廣泛應用於即時排行榜系統中。即時排行榜系統是指以一定條件對資料進行排序的系統,例如遊戲中的積分排行榜、電商中的銷售排名等。本文將介紹Redis在建立即時排行榜系統中所用到的關鍵技術,以及具體的程式碼範例。內容包括以下幾個部分:Redis的資料類型排序算

Golang與前端技術結合:探討Golang如何在前端領域發揮作用 Golang與前端技術結合:探討Golang如何在前端領域發揮作用 Mar 19, 2024 pm 06:15 PM

Golang與前端技術結合:探討Golang如何在前端領域發揮作用,需要具體程式碼範例隨著互聯網和行動應用的快速發展,前端技術也愈發重要。而在這個領域中,Golang作為一門強大的後端程式語言,也可以發揮重要作用。本文將探討Golang如何與前端技術結合,以及透過具體的程式碼範例來展示其在前端領域的潛力。 Golang在前端領域的角色作為一門高效、簡潔且易於學習的