宜信開源專注業務邏輯的輕量級服務框架nextsystem4

宜信技術學院發表於2019-05-07

宜信於2019年3月29日正式開源nextsystem4(以下簡稱“NS4”) 系列模組。此次開源的NS4系列模組是圍繞當前支付系統笨重、程式碼耦合度高、維護成本高而產生的分散式業務系統解決方案。NS4系列框架允許建立複雜的流程/業務流,對於業務服務節點的實現可串聯,可分散式。其精簡、輕量,實現了“脫容器”(不依賴tomcat、jetty等容器)獨立執行。NS4系列框架的設計理念是將業務和邏輯進行分離,開發人員只需通過簡單的配置和業務實現就可以實現邏輯複雜、效能高效、功能穩定的業務系統。

NS4系列包括4個開源模組,分別是: ns4_frame 分散式服務框架 ns4_gear_idgen ID 生成器元件(NS4框架Demo示例) ns4_gear_watchdog 監控系統元件(服務守護、應用效能監控、資料採集、自動化報警系統) ns4_chatbot通訊元件

NS4系列模組的核心優勢 主要體現在以下幾個方面:

  • 具有很好的伸縮性,可以優雅地擴容和降級;

  • 集中化管理,對各個節點的訊息進行集中式管理和分發;

  • 易維護,將複雜的流程性業務拆分成多個模組系統進行互動,減少程式碼耦合;

  • 完善的呼叫鏈路,對於鏈路複雜的系統可以準確地定位出錯的環節。 

  • 可以通過線上聊天機器人實現及時的自動提醒。

專案開源地址:https://github.com/newsettle

一、ns4_frame

ns4_frame.png

開源地址:https://github.com/newsettle/ns4_frame

ns4_frame是一個高效能優秀的分散式服務框架,允許建立複雜的流程/業務流,對於業務服務節點的實現可串聯,可分散式。其精簡、輕量,實現了“脫容器”(不依賴tomcat、jetty等容器)獨立執行。ns4_frame將業務和邏輯進行分離,開發人員只需通過簡單的配置和業務實現就可以實現邏輯複雜、效能高效、功能穩定的業務系統。

專案結構

ns4_frame是一套MAVEN父子專案,由五個子專案組成: 

  • NS_MQ :負責和底層訊息佇列進行通訊,提供了對訊息佇列進行操作的API。目前NS4底層支援redis作為訊息中介軟體,同時提供通用的介面,可以擴充套件多種訊息中介軟體,對訊息中介軟體的操作被封裝入了NS_MQ專案中。

  • NS_TRANSPORTER:通過呼叫NS_MQ提供的API,對業務訊息進行收取、處理、轉發。它本質是一套訊息收發處理框架,主要負責接收訊息後反向回撥業務程式碼,並將訊息交給業務層處理,當業務層處理完畢後,再將處理後的訊息返回給redis中。 

  • NS_CHAIN:一個可選開發框架,負責對同一個JVM中的業務處理步驟進行鏈條式的整合,組成當前業務模組的業務處理流程。 

  • NS_CONTROLLER:一個業務訊息轉發應用,負責將接收到的訊息轉給對應的業務模組進行處理,同時根據整體業務將業務模組進行關聯.NS_CONTROLLER本質是一個獨立的應用系統,構建於 NS_TRANPORTOR和NS_CHAIN之上。 

  • NS_DISPATCHER :NS4架構規定的訊息入口,以NETTY框架作為基礎,通過提供的HTTP服務接受業務系統邊界外的http請求,並將請求轉化成業務系統內部通訊使用的訊息協議格式。 


1.png

上圖展示了NS4每個系統的層次結構。

執行流程

NS4整套系統本質上其實就是一套訊息中介軟體服務加開發框架,整體的結構圖如下: 


2.png

上圖展示了一個NS4整體分散式專案的執行流程。一個訊息的運轉流程按如下順序: 

  • NS_DISPATCHER收到http請求並將其轉化為內部訊息協議放入指定的訊息佇列中(根據配置檔案) 。

  • NS_CONTORLLER從步驟1指定的佇列接收到訊息,並根據配置的服務編排開始按照順序將訊息傳送到每個業務系統步驟對應的訊息佇列中。 

  • 業務系統收到步驟2中NS_CONTROLLER指定的訊息佇列的資訊,開始處理,處理完畢後,將結果返回。 

  • NS_CONTROLLER收到業務系統的響應,開始根據配置好的服務將返回的訊息結果傳送到下一個業務系統對應的訊息佇列中。 

  • 訊息被所有的業務系統處理完成後,NS_CONTROLLER把訊息處理結果放入到指定的訊息佇列裡,NS_DISPATCHER從對應的訊息佇列裡取出訊息結果,響應給http呼叫者。

二、ns4_gear_idgen

ns4_gear_idgen.png

開源地址:https://github.com/newsettle/ns4_gear_idgen

ns4_gear_idgen (ID生成器)是基於NS4框架實現的,它支援分散式部署,生成全域性唯一的 ID,其中長度、字首、字尾、步長、進位制也可根據自己的業務自由配置,還可以通過ns4_gear_idgen對NS4.0框架進行測試。

優點

  • 很方便的線性擴充套件,能夠支撐大多數業務場景。

  • 生成ID規則多樣,可根據業務需求自由配置,且支援10進位制、36進位制、62進位制。

  • 業務之間ID相互隔離,互不影響。

  • 獲取ID不用頻繁運算元據庫,快消耗完號段內ID時才會運算元據庫,減輕了資料庫的壓力。

  • 提前初始化號段內的ID,保證在每個號段內ID使用完之前完成初始化,避免業務使用完ID後再初始化所帶來的影響。

  • 可以自定義 key_value 的大小,業務可以很方便地從原有的ID方式遷移過來。 

  • 容災性高,服務內部有號段快取,即使DB當機,短時間內仍能正常對外提供服務。 

三、ns4_gear_watchdog

ns4_gear_watchdog.png

開源地址:https://github.com/newsettle/ns4_gear_watchdog

ns4_gear_watchdog是ns4_frame程式的父程式,守護並管理ns4_frame程式。它的職責包括以下幾個方面:

  • 對ns4_frame進行遠端啟動和停止、實時監測ns4_frame程式的健康狀態、記憶體消耗、CPU使用、內部執行緒;

  • 收集ns4_frame實現的業務日誌歸集、實現業務內部實時流轉的業務資料,達到實時對ns4_frame程式線上上的執行狀態、實現的業務以及業務資料的流轉狀態等方面的監控,並精準、快速、便捷地定位出異常以及CPU、執行緒等執行狀態。

ns4_gear_watchdog是作為父程式存在的,通過父程式啟動目標專案(子程式),並針對子程式應用生存的環境因素(包括系統層面的記憶體消耗、CPU 使用、負載、執行緒等)、實現功能的程式碼因素(程式碼健康程度)、業務因素等資料進行實時監控。父子程式通過 jmx 方式進行通訊,採集以上因素資料,並將這些資料儲存到 ElasticSearch 中,進一步通過分析資料和現實執行情況總結制定出的指標相結合,將該以上因素資料通過微信機器人實時通知提醒相關負責人。


WechatIMG1.png

[ns4_gear_watchdog 基本結構圖]

四、ns4_chatbot

ns4_chatbot.png

開源地址:https://github.com/newsettle/ns4_chatbot

ns4_chatbot是一個機器人的聊天框架,整合了qqbot、WxChat、rasa以及web服務。ns4_chatbot提供微信和qq聊天介面,可以對某個群組傳送系統監控訊息等,還可以把ns4_gear_watchdog監控資訊傳送到對應的群組中。

ns4_chatbot實現的功能:

  • 接受內部系統(如監控系統)的系統呼叫,從而把訊息推送給 QQ 或者微信使用者。內部系統呼叫服務時,需要提供以下資訊: 

    • 發給哪個群組 

    • 發給這個群組中的哪個使用者

    • 傳送的訊息內容 

  • 可以接受 QQ、微信使用者的對話,理解其意圖,並且回應使用者。 

未來展望

宜信一直踐行以科技推動金融發展的技術信念,並願意將技術實踐成果開源分享,以期通過宜信的實踐經驗推動金融科技行業的發展和創新。 目前,宜信技術學院已開源了多個宜信的技術成果與研發實踐,面向軟體研發行業分享宜信的技術理念,本次NS4系列模組的開源將保持長期更新和維護,也希望有更多的技術夥伴加入到開源專案中,共同維護與發展開源成果。


內容來源:宜信技術學院

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69918724/viewspace-2643535/,如需轉載,請註明出處,否則將追究法律責任。

相關文章