Vert.x簡介

Vert.x

       近年來,移動網絡、社交網絡和電商的興起,使各大服務提供商的客戶端請求數量激增,傳統服務器架構已不堪重負,導致基於事件和異步的解決方案備受追捧,如Nginx、NodeJS。Vert.x框架基於事件和異步,依託於全異步Java服務器Netty,並擴展了不少其餘特性,以其輕量、高性能、支持多語言開發而備受開發者青睞。

基本介紹

  近年來,移動網絡、社交網絡和電商的興起,使各大服務提供商的客戶端請求數量激增,傳統服務器架構已不堪重負,導致基於事件和異步的解決方案備受追捧,如Nginx、NodeJS。Vert.x框架基於事件和異步,依託於全異步Java服務器Netty,並擴展了不少其餘特性,以其輕量、高性能、支持多語言開發而備受開發者青睞。

事件模型

概念
  Vert.x是事件驅動的,其處理請求的高性能也是基於其事件機制。Vert.x的事件機制中有幾個很是重要的概念:Event Loop、Event Loop Vertical、Worker Vertical、Event Bus、Vert.x Module。
  Event Loop:即事件循環,是由Vert.x啓動的事件處理線程,也是Vert.x項目對外開放的入口,Vert.x由此接收請求事件。一個Vert.x有一個或多個事件循環線程組成,線程最大數量爲主機有效的CPU核數。
  Event Loop Vertical:事件的業務處理線程,存在於Event Loop中,用於處理非阻塞短任務。
  Worker Vertical : 事件的業務處理線程,用於處理長任務阻塞任務。
  Event Bus:即事件總線,是Vert.x事件模型中最核心的部分,全部的事件都經由事件總線進行分發,包括Vertical之間的通訊事件。
  Vert.x Module : Vert.x項目模塊,一個應用一般由多個模塊組成,每一個模塊通常包含多個Vertical。

事件模型流程

  Vert.x以非阻塞IO的思想來實現高性能,非阻塞IO的實現,基於Event Loop Vertical和Worker Vertical的分離,在Vert.x中,Event Loop用於接收,並將短業務操做交由其內部的Vertical來處理,該模塊是非阻塞的,這樣能夠保證請求的處理效率;阻塞任務經過Vert.x的事件機制脫離當前線程,轉移到Worker Vertical中執行,並執行結果返回給Event Loop Vertical。 這一過程完成的核心是Event Bus,Event Bus中註冊了全部的事件,經過事件匹配完成事件轉移和結果返回,從而將整個流程銜接起來。
  下面以一個HTTP請求的處理過程詳述Vert.x的事件處理流程。Vert.x啓動時,會將Worker Vertical的事件處理函數加載到Event Bus,當一個HTTP請求發送到Vert.x構建的應用時,Event Loop首先接收到請求,並對請求作分析、包裝,而後將事件交給Event Bus來處理,Event Bus爲這次請求事件添加一個事件ID,而後根據註冊的Worker Vertical事件尋找已經註冊的監聽函數,若未找到則會拋棄該事件,若找到則會對處理類進行實例化,並同時使用事件ID在Event Bus中註冊一個返回結果處理事件,該事件爲Event Vertical類型。下一步由Worker Vertical實例執行事件處理函數,事件處理函數中一般包含業務處理、數據庫操做等。Worker Vertical實例處理結束後,將返回結果和事件信息返回給Event Bus,Event Bus找到在其中註冊的Event Vertical實例,而後將返回數據交給該實例處理,Event Vertical實例進一步處理數據並將結果返回給瀏覽器。

數據傳遞

  事件驅動的處理過程,數據傳遞是很是重要的,Vert.x支持任意對象的數據格式。但使用對象時常常會遇到序列化和載入類的問題,好比在使用Java對象的時候,這種狀況下使用JSON會更方便,這也是Vert.x推薦採用的方式。

特色

  Vert.x的事件模型,有以下幾個特色:
  1.非阻塞處理請求,異步執行阻塞程序,保證了請求處理的高效性。
  2.使用Event Bus事件總線來進行通信,能夠輕鬆編寫出分佈式、鬆耦合、高擴展性的程序。
  3.使用Event Bus事件總線是Vert.x真正實現了多語言支持的基礎,目前已支持Java、JavaScript、Ruby、Python、Groovy、Clojure、Ceylon。

總結

  Vert.x發佈於2011年,除了多語言支持,目前也已經支持了Postgres、MySQL、MongoDB、Redis等經常使用組件,發展迅速,生態體系日趨成熟,很是適用於最新的移動端後臺、互聯網、企業應用架構。
 
官方地址: https://vertx.io/
相關文章
相關標籤/搜索